A New Extraction for Coq

  • Pierre Letouzey
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2646)


We present here a new extraction mechanism for the Coq proof assistant [17]. By extraction, we mean automatic generation of functional code from Coq proofs, in order to produce certified programs. In former versions of Coq, the extraction mechanism suffered several limitations and in particular worked only with a subset of the language. We first discuss difficulties encountered and solutions proposed to remove these limitations. Then we give a proof of correctness for a theoretical model of the new extraction. Finally we describe the actual implementation distributed in Coq version 7.3 and further.


Type Scheme Inductive Type Weak Reduction Logical Part Dead Code 
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]
    S. Berardi. Pruning simply typed λ-calculi. Journal of Logic and Computation, 6(2), 1996.Google Scholar
  2. [2]
    L. Boerio. Extending pruning techniques to polymorphic second order λ-calculus. In Proceedings ESOP’94, volume 788. Lecture Notes in Computer Science, 1994.Google Scholar
  3. [3]
    L. Cruz-Filipe. A constructive formalization of the fundamental theorem of calculus. In Proceedings TYPES’ 2002.Google Scholar
  4. [4]
    S. Peyton Jones et al. Haskell 98, A Non-strict, Purely Functional Language, 1999. Available at
  5. [5]
    B. Grégoire and X. Leroy. A compiled implementation of strong reduction. In Proceedings ICFP’2002. To appear.Google Scholar
  6. [6]
    F. Wiedijk H. Geuvers, R. Pollack and J. Zwanenburg. The algebraic hierarchy of the fta project. Journal of Symbolic Computation, Special Issue on the Integration of Automated Reasoning and Computer Algebra Systems, pages 271–286, 2002.Google Scholar
  7. [7]
    S. Hayashi and H. Nakano. Px, a computational logic. Technical report, Research Institute for Mathematical Sciences, Kyoto University, 1987.Google Scholar
  8. [8]
    P. Jackson. The Nuprl Proof Development System, Version 4.1 Reference Manual and User’s Guide. Cornell University, Ithaca, NY, 1994.Google Scholar
  9. [9]
    R. Kelsey, W. Clinger, and J. Rees (eds.). Revised 5 Report on the Algorithmic Language Scheme, 1998. Available at
  10. [10]
    X. Leroy, J. Vouillon, and D. Doliguez. The Objective Caml system — release 3.04, 2002. Available at
  11. [11]
    D. Monniaux. Rĺisation mécanisée d’interpréteurs abstraits. Rapport de DEA, Université Paris VII, 1998.Google Scholar
  12. [12]
    C. Paulin-Mohring. Extracting F ω’s programs from proofs in the Calculus of Constructions. In Sixteenth Annual ACM Symposium on Principles of Programming Languages, Austin, January 1989. ACM.Google Scholar
  13. [13]
    C. Paulin-Mohring. Extraction de programmes dans le Calcul des Constructions. Thèse d’université, Paris 7, January 1989.Google Scholar
  14. [14]
    C. Paulin-Mohring and B. Werner. Synthesis of ml programs in the system coq. Journal of Symbolic Computation, 15:607–640, 1993.zbMATHCrossRefMathSciNetGoogle Scholar
  15. [15]
    L. Pottier. Extraction dans le calcul des constructions inductives. In Journées Francophones des Langages Applicatifs, 2001.Google Scholar
  16. [16]
    P. Severi and N. Szasz. Studies of a theory of specifications with built-in program extraction. Journal of Automated Reasoning, 27(1), 2001.Google Scholar
  17. [17]
    The Coq Development Team. The Coq Proof Assistant Reference Manual — Version 7.3, May 2002. Available at
  18. [18]
    B. Werner. Méta-théorie du Calcul des Constructions Inductives. PhD thesis, Univ. Paris VII, 1994.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2003

Authors and Affiliations

  • Pierre Letouzey
    • 1
  1. 1.Laboratoire de Recherche en InformatiqueUniversité Paris-SudOrsay CedexFrance

Personalised recommendations