Two-Level Meta-reasoning in Coq

  • Amy P. Felty
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2410)


The use of higher-order abstract syntax is central to the direct, concise, and modular specification of languages and deductive systems in a logical framework. Developing a framework in which it is also possible to reason about such deductive systems is particularly challenging. One difficulty is that the use of higher-order abstract syntax complicates reasoning by induction because it leads to definitions for which there are no monotone inductive operators. In this paper, we present a methodology which allows Coq to be used as a framework for such meta-reasoning. This methodology is directly inspired by the two-level approach to reasoning used in the FOλΔℕ (pronounced fold-n) logic. In our setting, the Calculus of Inductive Constructions (CIC) implemented by Coq represents the highest level, or meta-logic, and a separate specification logic is encoded as an inductive definition in Coq. Then, in our method as in FOλΔℕ, the deductive systems that we want to reason about are the object logics which are encoded in the specification logic. We first give an approach to reasoning in Coq which very closely mimics reasoning in FOλΔℕillustrating a close correspondence between the two frameworks. We then generalize the approach to take advantage of other constructs in Coq such as the use of direct structural induction provided by inductive types.


Mellon Cual 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    A.W. Appel and A.P. Felty. Lightweight lemmas in λProlog. In International Conference on Logic Programming, Nov. 1999.Google Scholar
  2. 2.
    A.W. Appel and A.P. Felty. A semantic model of types and machine instructions for proof-carrying code. In The 27th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, 2000.Google Scholar
  3. 3.
    P. Borras, D. Clément, T. Despeyroux, J. Incerpi, G. Kahn, B. Lang, and V. Pascual. Centaur: The system. In Proceedings of SIGSOFT’88: Third Annual Symposium on Software Development Environments (SDE3), Boston, 1988.Google Scholar
  4. 4.
    J. Despeyroux. A higher-order specification of the π-calculus. In First IFIP International Conference on Theoretical Computer Science. Springer-Verlag Lecture Notes in Computer Science, 2000.Google Scholar
  5. 5.
    J. Despeyroux, A. Felty, and A. Hirschowitz. Higher-order abstract syntax in Coq. In Second International Conference on Typed Lambda Calculi and Applications. Springer-Verlag Lecture Notes in Computer Science, Apr. 1995.Google Scholar
  6. 6.
    J. Despeyroux and A. Hirschowitz. Higher-order syntax and induction in coq. In Fifth International Conference on Logic Programming and Automated Reasoning. Springer-Verlag Lecture Notes in Computer Science, 1994.Google Scholar
  7. 7.
    J. Despeyroux, F. Pfenning, and C. Schürmann. Primitive recursion for higher-order abstract syntax. In Third International Conference on Typed Lambda Calculi and Applications. Springer-Verlag Lecture Notes in Computer Science, 1997.Google Scholar
  8. 8.
    L.-H. Eriksson. A finitary version of the calculus of partial inductive definitions. In L.-H. Eriksson, L. Hallnäs, and P. Schroeder-Heister, editors, Proceedings of the January 1991 Workshop on Extensions to Logic Programming. Springer-Verlag Lecture Notes in Artificial Intelligence, 1992.Google Scholar
  9. 9.
    R. Harper, F. Honsell, and G. Plotkin. A framework for defining logics. Journal of the ACM, 40(1), Jan. 1993.Google Scholar
  10. 10.
    M. Hofmann. Semantical analysis of higher-order abstract syntax. In Fourteenth Annual Symposium on Logic in Computer Science, 1999.Google Scholar
  11. 11.
    F. Honsell, M. Miculan, and I. Scagnetto. π-calculus in (co)inductive type theories. Theoretical Computer Science, 253(2), 2001.Google Scholar
  12. 12.
    R. McDowell. Reasoning in a Logic with Definitions and Induction. PhD thesis, University of Pennsylvania, December 1997.Google Scholar
  13. 13.
    R. McDowell and D. Miller. Reasoning with higher-order abstract syntax in a logical framework. ACM Transactions on Computational Logic, 3(1), Jan. 2002.Google Scholar
  14. 14.
    M. Miculan. Developing (meta)theory of λ-calculus in the theory of contexts. Electronic Notes on Theoretical Computer Science, 58, 2001.Google Scholar
  15. 15.
    M. Miculan. On the formalization of the modal μ-calculus in the calculus of inductive constructions. Information and Computation, 164(1), 2001.Google Scholar
  16. 16.
    G. Nadathur and D. Miller. An overview of λProlog. In K. Bowen and R. Kowalski, editors, Fifth International Conference and Symposium on Logic Programming. MIT Press, 1988.Google Scholar
  17. 17.
    G. Necula. Proof-carrying code. In 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM Press, Jan. 1997.Google Scholar
  18. 18.
    F. Pfenning and E. Rohwedder. Implementing the meta-theory of deductive systems. In Eleventh International Conference on Automated Deduction, volume 607. Lecture Notes in Computer Science, 1992.Google Scholar
  19. 19.
    F. Pfenning and C. Schürmann. System description: Twelf — A meta-logical framework for deductive systems. In Sixteenth International Conference on Automated Deduction, volume 1632 of Lecture Notes in Artificial Intelligence. Springer-Verlag, 1999.Google Scholar
  20. 20.
    C. Schürmann. Automating the Meta Theory of Deductive Systems. PhD thesis, Carnegie Mellon University, 2000.Google Scholar
  21. 21.
    The Coq Development Team. The Coq Proof Assistant reference manual: Version 7.2. Technical report, INRIA, 2002.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2002

Authors and Affiliations

  • Amy P. Felty
    • 1
  1. 1.School of Information Technology and EngineeringUniversity of OttawaOttawaCanada

Personalised recommendations