--- a/Pearl/Paper.thy Thu Apr 08 00:00:21 2010 -0700
+++ b/Pearl/Paper.thy Thu Apr 08 00:01:45 2010 -0700
@@ -48,7 +48,7 @@
programming languages. It has been used to formalise an equivalence checking
algorithm for LF \cite{UrbanCheneyBerghofer08},
Typed Scheme~\cite{TobinHochstadtFelleisen08}, several calculi for concurrency
- \cite{BengtsonParrow07,BengtsonParow09} and a strong normalisation result for
+ \cite{BengtsonParrow07} and a strong normalisation result for
cut-elimination in classical logic \cite{UrbanZhu08}. It has also been used
by Pollack for formalisations in the locally-nameless approach to binding
\cite{SatoPollack10}.
@@ -218,7 +218,7 @@
\noindent
{\bf Contributions of the paper:} Our use of a single atom type for representing
atoms of different sorts and of functions for representing
- permutations drastically reduces the number of type classes to just
+ permutations is not novel, but drastically reduces the number of type classes to just
two (permutation types and finitely supported types) that we need in order
reason abstractly about properties from the nominal logic work. The novel
technical contribution of this paper is a mechanism for dealing with
@@ -242,10 +242,11 @@
text {*
\noindent
- whereby the string argument specifies the sort of the atom. (We use type
- \emph{string} merely for convenience; any countably infinite type would work
- as well.) A similar design choice was made by Gunter et al \cite{GunterOsbornPopescu09}
- for their variables.
+ whereby the string argument specifies the sort of the atom.\footnote{A similar
+ design choice was made by Gunter et al \cite{GunterOsbornPopescu09}
+ for their variables.} (The use type
+ \emph{string} is merely for convenience; any countably infinite type would work
+ as well.)
We have an auxiliary function @{text sort} that is defined as @{thm
sort_of.simps[no_vars]}, and we clearly have for every finite set @{text X} of
atoms and every sort @{text s} the property:
@@ -811,11 +812,7 @@
fresh atom with arbitrary sort. This is an important operation in Nominal
Isabelle in situations where, for example, a bound variable needs to be
renamed. To allow such a choice, we only have to assume \emph{one} premise
- of the form
-
- @{text [display,indent=10] "finite (supp x)"}
-
- \noindent
+ of the form @{text "finite (supp x)"}
for each @{text x}. Compare that with the sequence of premises in our earlier
version of Nominal Isabelle (see~\eqref{fssequence}). For more convenience we
can define a type class for types where every element has finite support, and
@@ -924,7 +921,7 @@
defines an overloaded function that maps from the concrete type into the
generic atom type, which we will write @{text "|_|"}. For each class
instance, this function must be injective and equivariant, and its outputs
- must all have the same sort.
+ must all have the same sort, that is
\begin{isabelle}\ \ \ \ \ \ \ \ \ \ %%%
i) \hspace{1mm}if @{thm (lhs) atom_eq_iff [no_vars]} then @{thm (rhs) atom_eq_iff [no_vars]}\hspace{4mm}
@@ -1151,8 +1148,8 @@
user just needs to specify \isacommand{atom\_decl}~~@{text "var (ty)"}
where the argument, or arguments, are datatypes for which we can automatically
define an injective function like @{text "sort_ty"} (see \eqref{sortty}).
- Our hope is that with this approach Benzmueller and Paulson the authors of
- \cite{PaulsonBenzmueller} can make headway with formalising their results
+ Our hope is that with this approach Benzmueller and Paulson, the authors of
+ \cite{PaulsonBenzmueller}, can make headway with formalising their results
about simple type theory.
Because of its limitations, they did not attempt this with the old version
of Nominal Isabelle. We also hope we can make progress with formalisations of