Executing Higher Order Logic
We report on the design of a prototyping component for the theorem prover Isabelle/HOL. Specifications consisting of datatypes, recursive functions and inductive definitions are compiled into a functional program. Functions and inductively defined relations can be mixed. Inductive definitions must be such that they can be executed in Prolog style but requiring only matching rather than unification. This restriction is enforced by a mode analysis. Tail recursive partial functions can be defined and executed with the help of a while combinator.
KeywordsTheorem Prove Recursive Function Recursion Equation Functional Program High Order Logic
Unable to display preview. Download preview PDF.
- M. D. Aagaard, R. B. Jones, and C.-J. H. Seger. Lifted-FL: A Pragmatic Implementation of Combined Model Checking and Theorem Proving. In Y. Bertot, G. Dowek, A. Hirschowitz, C. Paulin, and L. Théry, editors, Theorem Proving in Higher Order Logics, 12th International Conference (TPHOLs’99), volume 1690 of Lect. Notes in Comp. Sci., pages 323–340. Springer-Verlag, 1999.Google Scholar
- J. H. Andrews. Executing formal specifications by translation to higher order logic programming. In E. L. Gunter and A. Felty, editors, 10th International Conference on Theorem Proving in Higher Order Logics, volume 1275 of Lect. Notes in Comp. Sci., pages 17–32. Springer-Verlag, 1997.Google Scholar
- I. Attali, D. Caromel, and M. Russo. A formal and executable semantics for Java. In Proceedings of Formal Underpinnings of Java, an OOPSLA’98 Workshop, Vancouver, Canada, 1998. Technical report, Princeton University.Google Scholar
- B. Barras, S. Boutin, C. Cornes, J. Courant, Y. Coscoy, D. Delahaye, D. de Rauglaudre, J.-C. Filliâtre, E. Giménez, H. Herbelin, G. Huet, H. Laulhère, C. Muñoz, C. Murthy, C. Parent-Vigouroux, P. Loiseleur, C. Paulin-Mohring, A. Saϊbi, and B. Werner. The Coq proof assistant reference manual-version 6.3.1. Technical report, INRIA, 1999.Google Scholar
- D. Basin. Lazy infinite-state analysis of security protocols. In Secure Networking — CQRE [Secure]’ 99, volume 1740 of Lect. Notes in Comp. Sci., pages 30–42. Springer-Verlag, 1999.Google Scholar
- T. Despeyroux. Typol: a formalism to implement natural semantics. Technical Report 94, INRIA, 1988.Google Scholar
- C. Dubois and R. Gayraud. Compilation de la sémantique naturelle vers ML. In Proceedings of journées francophones des langages applicatifs (JFLA99), 1999. Available via http://pauillac.inria.fr/~weis/jfla99/ps/dubois.ps.
- W. Goerigk, July 2000. Personal communication.Google Scholar
- M. Hanus, H. Kuchen, and J. Moreno-Navarro. Curry: A truly functional logic language. In Proc. ILPS’95 Workshop on Visions for the Future of Logic Programming, pages 95–107, 1995.Google Scholar
- I. Jacobs and L. Rideau-Gallot. A Centaur tutorial. Technical Report 140, INRIA Sophia-Antipolis, July 1992.Google Scholar
- M. Kaufmann, P. Manolios, and J. S. Moore. Computer-Aided Reasoning: An Approach. Kluwer Academic Publishers, June 2000.Google Scholar
- C. S. Mellish. The automatic generation of mode declarations for Prolog programs. Technical Report 163, Department of Artificial Intelligence, University of Edinburgh, August 1981.Google Scholar
- T. Nipkow. More Church-Rosser proofs (in Isabelle/HOL). Journal of Automated Reasoning, 26, 2001.Google Scholar
- D. v. Oheimb and T. Nipkow. Machine-checking the Java specification: Proving type-safety. In J. Alves-Foss, editor, Formal Syntax and Semantics of Java, volume 1523 of Lect. Notes in Comp. Sci., pages 119–156. Springer-Verlag, 1999.Google Scholar
- S. Owre, N. Shankar, J. M. Rushby, and D. W. J. Stringer-Calvert. PVS System Guide version 2.3. Technical report, SRI International Computer Science Laboratory, Menlo Park CA, September 1999.Google Scholar
- L. C. Paulson. The inductive approach to verifying cryptographic protocols. J. Computer Security, 6:85–128, 1998.Google Scholar
- F. Pfenning. Logic programming in the LF Logical Framework. In G. Huet and G. Plotkin, editors, Logical Frameworks, pages 66–78. Cambridge University Press, 1991.Google Scholar
- P. S. Rajan. Executing HOL specifications: Towards an evaluation semantics for classical higher order logic. In L. J. M. Claesen and M. J. C. Gordon, editors, Higher order Logic Theorem Proving and its Applications, Leuven, Belgium, September 1992. Elsevier.Google Scholar
- K. Slind. Reasoning about Terminating Functional Programs. PhD thesis, Institut für Informatik, TU München, 1999.Google Scholar