# HG changeset patch # User Christian Urban # Date 1269206828 -3600 # Node ID 2facd6645599691e2dd937b030495b9ffec94b01 # Parent f65564bcf34209708e08665509750722e89f7a76 tuned paper diff -r f65564bcf342 -r 2facd6645599 Paper/Paper.thy --- a/Paper/Paper.thy Sat Mar 20 18:16:26 2010 +0100 +++ b/Paper/Paper.thy Sun Mar 21 22:27:08 2010 +0100 @@ -44,7 +44,7 @@ \end{center} \noindent - and the quantification binds at once a finite (possibly empty) set of + and the quantification $\forall$ binds a finite (possibly empty) set of type-variables. While it is possible to implement this kind of more general binders by iterating single binders, this leads to a rather clumsy formalisation of W. The need of iterating single binders is also one reason @@ -86,7 +86,7 @@ definition given by Leroy in \cite{Leroy92} is incorrect (it omits a side-condition). However, the notion of alpha-equivalence that is preserved by vacuous binders is not - alway wanted. For example in terms like + always wanted. For example in terms like \begin{equation}\label{one} \LET x = 3 \AND y = 2 \IN x\,-\,y \END @@ -117,7 +117,7 @@ \noindent we want to bind all variables from the pattern inside the body of the $\mathtt{let}$, but we also care about the order of these variables, since - we do not want to identify \eqref{two} with + we do not want to regard \eqref{two} as alpha-equivalent with \begin{center} $\LET (y, x) = (3, 2) \IN x\,- y\,\END$ @@ -125,7 +125,7 @@ \noindent As a result, we provide three general binding mechanisms each of which binds multiple - variables at once, and we let the user chose which one is intended when formalising a + variables at once, and let the user chose which one is intended when formalising a programming language calculus. By providing these general binding mechanisms, however, we have to work around @@ -147,13 +147,13 @@ \end{center} \noindent - where the notation $[\_\!\_].\_\!\_$ indicates that the $x_i$ become - bound in $s$. In this representation the term \mbox{$\LET [x].s\;\;[t_1,t_2]$} - would be perfectly legal instance, and so one needs additional predicates about terms - to ensure that the two lists are of equal length. This can result into very - messy reasoning (see for example~\cite{BengtsonParow09}). - To avoid this, we will allowto specify for example $\mathtt{let}$s - as follows + where the notation $[\_\!\_].\_\!\_$ indicates that the $x_i$ become bound + in $s$. In this representation the term \mbox{$\LET [x].s\;\;[t_1,t_2]$} + would be a perfectly legal instance. To exclude such terms an additional + predicate about well-formed terms is needed in order to ensure that the two + lists are of equal length. This can result into very messy reasoning (see + for example~\cite{BengtsonParow09}). To avoid this, we will allow specifications + for $\mathtt{let}$s as follows \begin{center} \begin{tabular}{r@ {\hspace{2mm}}r@ {\hspace{2mm}}l} @@ -167,7 +167,7 @@ \noindent where $assn$ is an auxiliary type representing a list of assignments and $bn$ an auxiliary function identifying the variables to be bound by - the $\mathtt{let}$. This function can be defined by recursion over $assn$ as + the $\mathtt{let}$. This function is defined by recursion over $assn$ as follows \begin{center} $bn\,(\mathtt{anil}) = \varnothing \qquad bn\,(\mathtt{acons}\;x\;t\;as) = \{x\} \cup bn\,(as)$ diff -r f65564bcf342 -r 2facd6645599 Paper/document/root.tex --- a/Paper/document/root.tex Sat Mar 20 18:16:26 2010 +0100 +++ b/Paper/document/root.tex Sun Mar 21 22:27:08 2010 +0100 @@ -50,13 +50,13 @@ programming language calculi involving bound variables that have names (as opposed to de-Bruijn indices). In this paper we present an extension of Nominal Isabelle for dealing with general bindings, that means -term-constructors where multiple variables are bound at once. Such -binding structures are ubiquitous in programming language research and only -very poorly supported with single binders, such as the lambdas in the -lambda-calculus. Our extension includes novel definitions of -alpha-equivalence and establishes automatically the reasoning infrastructure for -alpha-equated terms. We can also provide strong induction principles that have -the usual variable convention already built in. +term-constructors where multiple variables are bound at once. Such binding +structures are ubiquitous in programming language research and only very +poorly supported with single binders, such as lambda-abstractions. Our +extension includes novel definitions of alpha-equivalence and establishes +automatically the reasoning infrastructure for alpha-equated terms. We +also provide strong induction principles that have the usual variable +convention already built in. \end{abstract}