\documentstyle[a4,epsf]{article}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% catriel's environment starts here
%\topmargin -2cm
%\setlength{\textwidth}{15cm}
%\setlength{\textheight}{24.0cm}
 
% used for spacing above a query line:
\newcommand{\vsmall}{\vspace{2.0ex}}
% used for spacing below a query line:
\newcommand{\vtiny}{\vspace{1.3ex}}
\newcommand{\hsmall}{\hspace*{2.0em}}
\newcommand{\htiny}{\hspace*{1.0em}}
%\newcommand{\row}[1]{[#1]}
\newcommand{\row}[1]{#1}
\newcommand{\h}{\hspace*{0.5cm}}
\newcommand{\hh}{\hspace*{1cm}}
\newcommand{\hhh}{\hspace*{1.5cm}}
\newcommand{\hhhh}{\hspace*{2cm}}
\newcommand{\jump}{\vspace {0.5\baselineskip}\newline\noindent}
\newcommand{\noi}{\noindent}
\newcommand{\la}{\leftarrow}
\newcommand{\fm}[1]{{\bf(\#}#1{\bf{}\#)}}
\newtheorem{Theorem}{Theorem}[section]
\newtheorem{Lemma}[Theorem]{Lemma}
\newtheorem{Definition}[Theorem]{Definition}
\newtheorem{Conjecture}[Theorem]{Conjecture}
\newtheorem{Proposition}[Theorem]{Proposition}
\newtheorem{Corollary}[Theorem]{Corollary}
\newtheorem{Example}[Theorem]{Example}
\newenvironment{examp}{\begin{Example}\rm}{\hspace*{\fill}$\Box$\end{Example}}
\newenvironment{Claim}{{\bf Claim:}\begin{em}}{\end{em}\newline}
%\newenvironment{Example}[1]{{\bf Example #1\/:}}{$\Box$\newline}
\newenvironment{Proof}{{\bf Proof:}}{$\Box$\newline}
\newenvironment{Note}{{\bf Note:}}{$\Box$\newline}
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
\setlength{\textwidth}{16cm}
\setlength{\textheight}{24cm}
\setlength{\baselineskip}{4mm}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
\title{A Stack-Based Approach to Query Languages\thanks{
Work partially supported by a grant from the German-Israel Foundation
for Scientific Research and Development. Draft, \today}}
 
\author{Kazimierz Subieta$^\triangleright$
    \and Catriel Beeri$^\bullet$
    \and Florian Matthes$^\diamond$
    \and Joachim W. Schmidt$^\diamond$}
\date{}
\begin{document}
\maketitle

\begin{center} \footnotesize
\begin{minipage}[t]{4.4cm}
\begin{center} $^\triangleright$) Institute of Computer Science\\
               Polish Academy of Sciences\\
               Ordona 21\\ 01-237 Warszawa, Poland\\
               subieta@wars.ipipan.war.pl
\end{center}
\end{minipage}
\begin{minipage}[t]{3.9cm}
\begin{center} $^\bullet$) Hebrew University\\
               Institute of Computer Science\\
               Givat Ram,\\ Jerusalem 91904, Israel\\
               beeri@cs.huji.ac.il
\end{center}
\end{minipage}
\begin{minipage}[t]{5.8cm}
\begin{center} $^\diamond$) University of Hamburg\\
               Department of Computer Science \\
               Vogt-K{\"o}lln-Stra{\ss}e 30 \\
               D-22527 Hamburg, Germany\\
               matthes@dbis1.informatik.uni-hamburg.de
\end{center}
\end{minipage}
\end{center}
 
%**************************************************************** Abstract ***
\vspace*{2mm}
\begin{abstract}
Scoping, naming and binding are central concepts in the definition
and understanding of programming languages. With the introduction of
sophisticated data models, these issues become important for query
languages as well. Additionally, the goal of integrating query and
programming languages requires a common basis for their operational
semantics.
We offer here an approach to the definition of the operational
semantics of query languages based on an abstract machine, in which
names, their bindings, and 
%how these are influenced by 
scopes defined by
query and data structure are central. The machine has own simple
data model for its store, and has a stack for dealing with scopes.
We argue for the generality of the approach and %also 
illustrate it by
defining the semantics of many query language primitives. Finally, we
briefly consider how assignment and procedures can be neatly added.
\end{abstract}
 
 
%************************************************************ Introduction ***
\input{sect1}
\input{sect2}
\input{sect3}
\input{sect4}
\input{sect5}
%\input{sect6}
%\input{sect7}
 
 
\end{document}
