Executing Higher Order Logic

  • Stefan Berghofer
  • Tobias Nipkow
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2277)


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.


Theorem Prove Recursive Function Recursion Equation Functional Program High Order Logic 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    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
  2. [2]
    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
  3. [3]
    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
  4. [4]
    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
  5. [5]
    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
  6. [6]
    T. Despeyroux. Typol: a formalism to implement natural semantics. Technical Report 94, INRIA, 1988.Google Scholar
  7. [7]
    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
  8. [8]
    W. Goerigk, July 2000. Personal communication.Google Scholar
  9. [9]
    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
  10. [10]
    I. Jacobs and L. Rideau-Gallot. A Centaur tutorial. Technical Report 140, INRIA Sophia-Antipolis, July 1992.Google Scholar
  11. [11]
    M. Kaufmann, P. Manolios, and J. S. Moore. Computer-Aided Reasoning: An Approach. Kluwer Academic Publishers, June 2000.Google Scholar
  12. [12]
    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
  13. [13]
    T. Nipkow. More Church-Rosser proofs (in Isabelle/HOL). Journal of Automated Reasoning, 26, 2001.Google Scholar
  14. [14]
    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
  15. [15]
    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
  16. [16]
    C. Paulin-Mohring and B. Werner. Synthesis of ML programs in the system Coq. Journal of Symbolic Computation, 15:607–640, 1993.MATHCrossRefMathSciNetGoogle Scholar
  17. [17]
    L. C. Paulson. The inductive approach to verifying cryptographic protocols. J. Computer Security, 6:85–128, 1998.Google Scholar
  18. [18]
    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
  19. [19]
    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
  20. [20]
    K. Slind. Reasoning about Terminating Functional Programs. PhD thesis, Institut für Informatik, TU München, 1999.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2002

Authors and Affiliations

  • Stefan Berghofer
    • 1
  • Tobias Nipkow
    • 1
  1. 1.Institut für InformatikTechnische Universität MünchenMünchenGermany

Personalised recommendations