Paper/Paper.thy
changeset 1741 0c01dda0acd5
parent 1740 2afee29cf81c
child 1742 3f78dc600dce
equal deleted inserted replaced
1740:2afee29cf81c 1741:0c01dda0acd5
  1705   \caption{The nominal datatype declaration for Core-Haskell. At the moment we
  1705   \caption{The nominal datatype declaration for Core-Haskell. At the moment we
  1706   do not support nested types; therefore we explicitly have to unfold the 
  1706   do not support nested types; therefore we explicitly have to unfold the 
  1707   lists @{text "co_lst"}, @{text "assoc_lst"} and so on. This will be improved
  1707   lists @{text "co_lst"}, @{text "assoc_lst"} and so on. This will be improved
  1708   in a future version of Nominal Isabelle. Apart from that, the 
  1708   in a future version of Nominal Isabelle. Apart from that, the 
  1709   declaration follows closely the original in Figure~\ref{corehas}. The
  1709   declaration follows closely the original in Figure~\ref{corehas}. The
  1710   point of our work is that having made such a declaration one obtains
  1710   point of our work is that having made such a declaration in Nominal Isabelle,
  1711   automatically a reasoning infrastructure for Core-Haskell.\label{nominalcorehas}}
  1711   one obtains automatically a reasoning infrastructure for Core-Haskell.
       
  1712   \label{nominalcorehas}}
  1712   \end{figure}
  1713   \end{figure}
  1713 *}
  1714 *}
  1714 
  1715 
  1715 
  1716 
  1716 (* @{thm "ACons_subst[no_vars]"}*)
  1717 (* @{thm "ACons_subst[no_vars]"}*)
  1760   unpleasant. The hope is that the extension presented in this paper is a
  1761   unpleasant. The hope is that the extension presented in this paper is a
  1761   substantial improvement.  
  1762   substantial improvement.  
  1762  
  1763  
  1763   The most closely related work is the description of the Ott-tool
  1764   The most closely related work is the description of the Ott-tool
  1764   \cite{ott-jfp}. This tool is a nifty front end for creating \LaTeX{}
  1765   \cite{ott-jfp}. This tool is a nifty front end for creating \LaTeX{}
  1765   documents from term-calculi specifications. For a subset of the specifications,
  1766   documents from term-calculi specifications. For a subset of the
  1766   Ott can also generate theorem prover code using a raw representation and
  1767   specifications, Ott can also generate theorem prover code using a raw
  1767   a locally nameless representation for terms. The developers of this tool
  1768   representation and a locally nameless representation for terms. The
  1768   have also put forward a definition for the notion of
  1769   developers of this tool have also put forward a definition for the notion of
  1769   alpha-equivalence of the term-calculi that can be specified in Ott.  This
  1770   alpha-equivalence of the term-calculi that can be specified in Ott.  This
  1770   definition is rather different from ours, not using any of the nominal 
  1771   definition is rather different from ours, not using any of the nominal
  1771   techniques; it also aims for maximum expressivity, covering
  1772   techniques; it also aims for maximum expressivity, covering as many binding
  1772   as many binding structures from programming language research as possible.
  1773   structures from programming language research as possible.  Although we were
  1773   Although we were heavily inspired by their syntax, their definition of 
  1774   heavily inspired by their syntax, their definition of alpha-equivalence was
  1774   alpha-equivalence was no use at all for our extension of Nominal Isabelle. 
  1775   no use at all for our extension of Nominal Isabelle. First, it is far too
  1775   First, it is far too complicated to be a basis for automated proofs 
  1776   complicated to be a basis for automated proofs implemented on the ML-level
  1776   implemented on the ML-level of Isabelle/HOL. Second, it covers cases of 
  1777   of Isabelle/HOL. Second, it covers cases of binders depending on other
  1777   binders depending on other binders, which just do not make sense for 
  1778   binders, which just do not make sense for our alpha-equated terms, and it
  1778   our alpha-equated terms, and it also allows empty types that have no meaning 
  1779   also allows empty types that have no meaning in a HOL-based theorem
  1779   in a HOL-based theorem prover. For features of Ott, like subgrammars, the
  1780   prover. Because of how we set up our definitions, we had to impose some
  1780   datatype infrastructure in Isabelle/HOL is unfortunately not powerful 
  1781   restrictions, like excluding overlapping deep binders, which are not present
  1781   enough. On the other hand we are not aware that Ott can make any distinction
  1782   in Ott. Our motivation is that we can still cover interesting term-calculi
  1782   between our three different binding modes. Also, definitions for notions like 
  1783   from programming language research, like Core-Haskell. For features of Ott,
  1783   free-variables are work in progress in Ott.
  1784   like subgrammars, the datatype infrastructure in Isabelle/HOL is
       
  1785   unfortunately not yet powerful enough. On the other hand we are not aware
       
  1786   that Ott can make any distinction between our three different binding
       
  1787   modes. Also, definitions for notions like free-variables are work in
       
  1788   progress in Ott.
  1784 *}
  1789 *}
  1785 
  1790 
  1786 section {* Conclusion *}
  1791 section {* Conclusion *}
  1787 
  1792 
  1788 text {*
  1793 text {*
       
  1794   We have presented an extension for Nominal Isabelle in order to derive a
       
  1795   convenient reasoning infrastructure for term-constuctors binding multiple
       
  1796   variables at once. This extension can deal with term-calculi, such as
       
  1797   Core-Haskell. For such calculi, we can also derive strong induction
       
  1798   principles that have the usual variable already built in. At the moment we
       
  1799   can do so only with some manual help, but future work will automate them
       
  1800   completely.  The code underlying this extension will become part of the
       
  1801   Isabelle distribution, but for the moment it can be downloaded from the
       
  1802   Mercurial repository linked at
       
  1803   \href{http://isabelle.in.tum.de/nominal/download}
       
  1804   {http://isabelle.in.tum.de/nominal/download}.
       
  1805 
       
  1806 
  1789   Complication when the single scopedness restriction is lifted (two 
  1807   Complication when the single scopedness restriction is lifted (two 
  1790   overlapping permutations)
  1808   overlapping permutations)
  1791 
  1809 
  1792   Future work: distinct list abstraction
  1810   Future work: distinct list abstraction
  1793 
  1811 
  1794   TODO: function definitions:
  1812   TODO: function definitions:
  1795   
  1813   
  1796   The formalisation presented here will eventually become part of the 
  1814   
  1797   Isabelle distribution, but for the moment it can be downloaded from 
       
  1798   the Mercurial repository linked at 
       
  1799   \href{http://isabelle.in.tum.de/nominal/download}
       
  1800   {http://isabelle.in.tum.de/nominal/download}.\medskip
       
  1801 
       
  1802   \noindent
  1815   \noindent
  1803   {\bf Acknowledgements:} We are very grateful to Andrew Pitts for  
  1816   {\bf Acknowledgements:} We are very grateful to Andrew Pitts for  
  1804   many discussions about Nominal Isabelle. We thank Peter Sewell for 
  1817   many discussions about Nominal Isabelle. We thank Peter Sewell for 
  1805   making the informal notes \cite{SewellBestiary} available to us and 
  1818   making the informal notes \cite{SewellBestiary} available to us and 
  1806   also for patiently explaining some of the finer points about the abstract 
  1819   also for patiently explaining some of the finer points about the abstract