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 |