Efficient Reasoning about Executable Specifications in Coq

  • Gilles Barthe
  • Pierre Courtieu
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2410)


We describe a package to reason efficiently about executable specifications in Coq. The package provides a command for synthesizing a customized induction principle for a recursively defined function, and a tactic that combines the application of the customized induction principle with automatic rewriting. We further illustrate how the package leads to a drastic reduction (by a factor of 10 approximately) of the size of the proofs in a large-scale case study on reasoning about JavaCard.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    C. Alvarado and Q.-H. Nguyen, elan for equational reasoning in coq. In J. Despeyroux, editor, Proceedings of LFM’OO, 2000. Rapport Technique INRIA.Google Scholar
  2. 2.
    G. Barthe, G. Dufay, M. Huisman, and S. Melo de Sousa. Jakarta: a toolset to reason about the JavaCard platform. In I. Attali and T. Jensen, editors, Proceedings of e-SMART 2001, volume 2140 of Lecture Notes in Computer Science, pages 2–18. Springer-Verlag, 2001.Google Scholar
  3. 3.
    G. Barthe, G. Dufay, L. Jakubiec, and S. Melo de Sousa. A formal correspondence between offensive and defensive JavaCard virtual machines. In A. Cortesi, editor, Proceedings of VMCAI 2002, volume 2294 of Lecture Notes in Computer Science, pages 32–45. Springer-Verlag, 2002.Google Scholar
  4. 4.
    G. Barthe, G. Dufay, L. Jakubiec, B. Serpette, and S. Melo de Sousa. A Formal Executable Semantics of the JavaCard Platform. In D. Sands, editor, Proceedings of ESOP 2001, volume 2028 of Lecture Notes in Computer Science, pages 302–319. Springer-Verlag, 2001.Google Scholar
  5. 5.
    S. Berghofer and T. Nipkow. Executing higher order logic. In P. Callaghan, Z. Luo, J. McKinna, and R. Pollack, editors, Proceedings of TYPES 2000, volume LNCS 2277 of Lecture Notes in Computer Science. Springer-Verlag, 2002.CrossRefGoogle Scholar
  6. 6.
    P. Borovanský, H. Cirstea, H. Dubois, C. Kirchner, H. Kirchner, P.-E. Moreau, C. Ringeissen, and M. Vittek. The Elan VS.4. Manual, 2000.Google Scholar
  7. 7.
    A. Bouhoula. Automated theorem proving by test set induction. Journal of Symbolic Computation, 23:47–77, 1997.MATHCrossRefMathSciNetGoogle Scholar
  8. 8.
    R.S. Boyer and J.S. Moore. A Computational Logic Handbook. Academic Press, 1988.Google Scholar
  9. 9.
    Coq Development Team. The Coq Proof Assistant User’s Guide. Version 1.2, January 2002.Google Scholar
  10. 10.
    C. Cornes. Conception d’un langage de haut niveau de representation de preuves: Récurrence par filtrage de motifs; Unification en présence de types inductifs primitifs; Synthèse de lemmes d’inversion. PhD thesis, Université de Paris 7, 1997.Google Scholar
  11. 11.
    C. Cornes and D. Terrasse. Automating inversion and inductive predicates in Coq. In S. Berardi and M. Coppo, editors, Proceedings of Types’95, volume 1158 of Lecture Notes in Computer Science, pages 85–104. Springer-Verlag, 1995.Google Scholar
  12. 12.
    P. Courtieu. Function Schemes in Coq: Documentation and tutorial. See http://www-sop.inria.fr/lemme/Pierre.Courtieu/funscheme.html
  13. 13.
    M.J.C. Gordon and T.F. Melham, editors. Introduction to HOL: A theorem proving environment for higher-order logic. Cambridge University Press, 1993.Google Scholar
  14. 14.
    J.-L. Lanet and A. Requet. Formal Proof of Smart Card Applets Correctness. In J.-J. Quisquater and B. Schneier, editors, Proceedings of CARDIS’98, volume 1820 of Lecture Notes in Computer Science, pages 85–97. Springer-Verlag, 1998.Google Scholar
  15. 15.
    Z. Luo and R. Pollack. LEGO proof development system: User’s manual. Technical Report ECS-LFCS-92-211, LFCS, University of Edinburgh, May 1992.Google Scholar
  16. 16.
    C. Paulin-Mohring. Inductive definitions in the system Coq. Rules and properties. In M. Bezem and J.F. Groote, editors, Proceedings of TLCA’ 93, volume 664 of Lecture Notes in Computer Science, pages 328–345. Springer-Verlag, 1993.Google Scholar
  17. 17.
    C. Paulin-Mohring. Définitions Inductives en Theorie des Types d’Ordre Superieur. Habilitation à diriger les recherches, Université Claude Bernard Lyon I, 1996.Google Scholar
  18. 18.
    L. Paulson. Isabelle: A generic theorem prover, volume 828 of Lecture Notes in Computer Science. Springer-Verlag, 1994.MATHGoogle Scholar
  19. 19.
    F. Pfenning. Elf: a meta-language for deductive systems. In A. Bundy, editor, Proceedings of CADE-12, volume 814 of Lecture Notes in Artificial Intelligence, pages 811–815. Springer-Verlag, 1994.Google Scholar
  20. 20.
    K. Slind. Reasoning about Terminating Functional Programs. PhD thesis, TU Münich, 1999.Google Scholar
  21. 21.
    D. Terrasse. Encoding natural semantics in Coq. In V. S. Alagar, editor, Proceedings of AMAST’95, volume 936 of Lecture Notes in Computer Science, pages 230–244. Springer-Verlag, 1995.Google Scholar
  22. 22.
    D. Terrasse. Vers un environnement d’aide au développement de preuves en Sémantique Naturelle. PhD thesis, Ecole Nationale des Ponts et Chaussées, 1995.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2002

Authors and Affiliations

  • Gilles Barthe
    • 1
  • Pierre Courtieu
    • 1
  1. 1.INRIASophia-AntipolisFrance

Personalised recommendations