, Volume 34, Issue 1, pp 71–144 | Cite as

A compact kernel for the calculus of inductive constructions

  • A. Asperti
  • W. Ricciotti
  • C. Sacerdoti Coen
  • E. Tassi


The paper describes the new kernel for the Calculus of Inductive Constructions (CIC) implemented inside the Matita Interactive Theorem Prover. The design of the new kernel has been completely revisited since the first release, resulting in a remarkably compact implementation of about 2300 lines of OCaml code. The work is meant for people interested in implementation aspects of Interactive Provers, and is not self contained. In particular, it requires good acquaintance with Type Theory and functional programming languages.


Interactive theorem provers calculus of inductive constructions Matita Kernel 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. Abel A 2004 Termination checking with types. Theoretical informatics and applications 38: 277–319MATHCrossRefMathSciNetGoogle Scholar
  2. Asperti A 1992 A categorical understanding of environment machines. J. Funct. Program 2(1): 23–59MATHCrossRefMathSciNetGoogle Scholar
  3. Asperti A, Ricciotti W 2008 About the formalization of some results by chebyshev in number theory. Invited talk at TYPES’08, Torino, ItalyGoogle Scholar
  4. Asperti A, Sacerdoti Coen C, Tassi E, Zacchiroli S 2006 Crafting a proof assistant. In: Proceedings of Types 2006: Conference of the Types Project. Nottingham, UK — April 18–21, Springer-Verlag, Lecture Notes in Computer Science, to appearGoogle Scholar
  5. Barendregt H 1992 Lambda Calculi with Types. In: Abramsky, Samson and others (eds) Handbook of Logic in Computer Science, vol. 2, Oxford University PressGoogle Scholar
  6. Barras B 1999 Auto-validation d’un système de preuves avec familles inductives. Thèse de doctorat, Universitée Paris 7Google Scholar
  7. Barthe G, Ruys M, Barendregt H 1995 A two-level approach towards lean proof-checking. In: Types for Proofs and Programs (Types 1995), Springer-Verlag, LNCS, 1158: 16–35Google Scholar
  8. Barthe G, Grégoire B, Pastawski F 2006 Type-based termination of recursive definitions in the Calculus of Inductive Constructions. In: Proceedings of the 13th International Conference on Logic for Programming Artificial Intelligence and Reasoning (LPAR’06), Springer-Verlag, Lecture Notes in Artificial Intelligence, to appearGoogle Scholar
  9. Bertot Y, Castéran P 2004 Interactive theorem proving and program development. Texts in Theoretical Computer Science, Springer-Verlag, iSBN-3-540-20854-2Google Scholar
  10. Boutin S 1997 Using re ection to build efficient and certified decision procedures. In: M Abadi editors TI (eds) Theoretical Aspect of Computer Software TACS’97, Lecture Notes in Computer Science, Springer-Verlag, 1281: 515–529Google Scholar
  11. Courant J 2002 Explicit universes for the calculus of constructions. In: Theorem Proving in Higher Order Logics: 15th International Conference 115–130Google Scholar
  12. Crégut P 1990 An abstract machine for lambda-terms normalization. In: LISP and Functional Programming, 333–340Google Scholar
  13. Crégut P 2007 Strongly reducing variants of the krivine abstract machine. Higher-Order and Symbolic Computation 20(3): 209–230MATHCrossRefGoogle Scholar
  14. Danos V, Regnier L 2003 How abstract machines implement head linear reduction, submitted for publicationGoogle Scholar
  15. Dybjer P 1997 Inductive families. Formal Aspects of Computing 6(4): 440–465CrossRefGoogle Scholar
  16. Geuvers H 1993 Logics and Type Systems. Ph.D. dissertation, Catholic University NijmegenGoogle Scholar
  17. Geuvers H, Jojgov G I 2002 Open proofs and open terms: A basis for interactive logic. In: Bradfield J (ed) Computer Science Logic: 16th International Workshop, CSL 2002, Springer-Verlag, Lecture Notes in Computer Science, 2471: 537–552Google Scholar
  18. Giménez E 1998 Structural recursive definitions in type theory. In: ICALP, 397–408Google Scholar
  19. Gonthier G 2005 A computer-checked proof of the four-colour theorem. Available at
  20. Grégoire B 2003 Compilation des termes de preuves: un (nouveau) mariage entre coq et ocaml. Thése de doctorat, spécialité informatique, Université Paris 7, école Polytechnique, France, URL Google Scholar
  21. Huet G, Kahn G, Paulin-Mohring C 1998 The Coq Proof Assistant. A TutorialGoogle Scholar
  22. Johnsson T 1985 Lambda lifting: Transforming programs to recursive equations. In: Proc. of Functional programming languages and computer architecture. Nancy, France, Sept 1985Google Scholar
  23. Luo Z 1990 An Extended Calculus of Constructions. PhD thesis, University of EdinburghGoogle Scholar
  24. McBride C 1999 Dependently typed functional programs and their proofs. PhD thesis, University of EdinburghGoogle Scholar
  25. Miquel A, Werner B 2003 The not so simple proof-irrelevant model of CC. In: H Geuvers, F Wiedijk (eds) Types for Proofs and Programs: International Workshop, TYPES 2002, Springer-Verlag, Lecture Notes in Computer Science, 2646: 240–258Google Scholar
  26. Muoz C 1997 A calculus of substitutions for incomplete-proof representation in type theory. PhD thesis, INRIAGoogle Scholar
  27. Paulin-Mohring C 1996 Définitions inductives en théorie des types d’ordre supŕieur. Habilitation à diriger les recherches, Université Claude Bernard Lyon I, URL
  28. Peyton-Jones SL 1987 The Implementation of Functional Programming Languages. Prentice-HallGoogle Scholar
  29. Pollack R 1994 The theory of lego: A proof checker for the extended calculus of constructions. PhD thesis, PhD thesis, Univ. of EdinburghGoogle Scholar
  30. Sacerdoti Coen C 2004a Mathematical knowledge management and interactive theorem proving. PhD thesis, University of Bologna, technical Report UBLCS 2004-5Google Scholar
  31. Sacerdoti Coen C 2004b) Mathematical libraries as proof assistant environments. In: Andrea Asperti, A T Grzegorz Bancerek (ed) Proceedings of Mathematical Knowledge Management 2004, Springer-Verlag, Lecture Notes in Computer Science, 3119: 332–346Google Scholar
  32. Sacerdoti Coen C 2007 Reduction and conversion strategies for the calculus of (co)inductive constructions: Part i. In: Proceedings of the Sixth International Workshop on Reduction Strategies in Rewriting and Programming, Elsevier, ENTCS, 174: 97–118Google Scholar
  33. van Benthem Jutting L, McKinna J, Pollack R 1994 Checking algorithms for Pure Type Systems. In: Barendregt, Nipkow (eds) TYPES’93: Workshop on Types for Proofs and Programs, Selected Papers, Springer-Verlag, LNCS, 806: 19–61, URL
  34. Werner B 1994 Une théorie des Constructions Inductives. PhD thesis, Université Paris VIIGoogle Scholar
  35. Werner B 1997 Sets in types, types in sets. In: Abadi M, editors TI (eds) Theoretical Aspect of Computer Software TACS’97, Lecture Notes in Computer Science, Springer-Verlag, 1281: 530–546Google Scholar
  36. Werner B 2008 Faire simple pour pouvoir faire compliqué. contributions à une théorie des types pratique. Habilitation à diriger les recherches, Université Paris sud, URL
  37. Wiedijk F 2006 The seventeen provers of the world. LNAI 3600Google Scholar

Copyright information

© Indian Academy of Sciences 2009

Authors and Affiliations

  • A. Asperti
    • 1
  • W. Ricciotti
    • 1
  • C. Sacerdoti Coen
    • 1
  • E. Tassi
    • 1
  1. 1.Department of Computer ScienceUniversity of BolognaBolognaItaly

Personalised recommendations