The Implicit Calculus of Constructions as a Programming Language with Dependent Types

  • Bruno Barras
  • Bruno Bernardo
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4962)


In this paper, we show how Miquel’s Implicit Calculus of Constructions (ICC) can be used as a programming language featuring dependent types. Since this system has an undecidable type-checking, we introduce a more verbose variant, called ICC* which fixes this issue. Datatypes and program specifications are enriched with logical assertions (such as preconditions, postconditions, invariants) and programs are decorated with proofs of those assertions. The point of using ICC* rather than the Calculus of Constructions (the core formalism of the Coq proof assistant) is that all of the static information (types and proof objects) is transparent, in the sense that it does not affect the computational behavior. This is concretized by a built-in extraction procedure that removes this static information. We also illustrate the main features of ICC* on classical examples of dependently typed programs.


  1. 1.
    Barendregt, H.: Lambda Calculi with Types. Technical Report 91-19, Catholic University Nijmegen. In: Handbook of Logic in Computer Science, vol. II (1991)Google Scholar
  2. 2.
    Brady, E.: Practical Implementation of a Dependently Typed Functional Programming Language. PhD thesis, Durham University (2005)Google Scholar
  3. 3.
    Brady, E., McBride, C., McKinna, J.: Inductive families need not store their indices. In: Berardi, S., Coppo, M., Damiani, F. (eds.) TYPES 2003. LNCS, vol. 3085, pp. 115–129. Springer, Heidelberg (2004)Google Scholar
  4. 4.
    Chen, C., Xi, H.: Combining Programming with Theorem Proving. In: Proceedings of the tenth ACM SIGPLAN ICFP, Tallinn, Estonia, pp. 66–77 (September 2005)Google Scholar
  5. 5.
    Constable, R.L., Allen, S.F., Bromley, H.M., Cleaveland, W.R., Cremer, J.F., Harper, R.W., Howe, D.J., Knoblock, T.B., Mendler, N.P., Panangaden, P., Sasaki, J.T., Smith, S.F.: Implementing Mathematics with the Nuprl Development System. Prentice-Hall, NJ (1986)Google Scholar
  6. 6.
    Letouzey, P.: Programmation fonctionnelle certifiée – L’extraction de programmes dans l’assistant Coq. PhD thesis, Université Paris-Sud (July 2004)Google Scholar
  7. 7.
    Luo, Z.: An Extended Calculus of Constructions. PhD thesis, University of Edinburgh (1990)Google Scholar
  8. 8.
    McBride, C., McKinna, J.: The view from the left. Journal of Functional Programming 14(1), 69–111 (2004)zbMATHCrossRefMathSciNetGoogle Scholar
  9. 9.
    Miquel, A.: Arguments implicites dans le calcul des constructions: étude d’un formalisme à la curry. Master’s thesis, University Paris 7 (1998)Google Scholar
  10. 10.
    Miquel, A.: The implicit calculus of constructions. Extending pure type systems with an intersection type binder and subtyping. In: Abramsky, S. (ed.) TLCA 2001. LNCS, vol. 2044, Springer, Heidelberg (2001)CrossRefGoogle Scholar
  11. 11.
    Miquel, A.: Le Calcul des Constructions implicite: syntaxe et sémantique. PhD thesis, Université Paris 7 (December 2001)Google Scholar
  12. 12.
    Miquel, A., Werner, B.: The not so simple proof-irrelevent model of CC. In: Geuvers, H., Wiedijk, F. (eds.) TYPES 2002. LNCS, vol. 2646, Springer, Heidelberg (2003)CrossRefGoogle Scholar
  13. 13.
    Norell, U.: Towards a practical programming language based on dependent type theory. PhD thesis, Department of Computer Science and Engineering, Chalmers University of Technology, SE-412 96 Göteborg, Sweden (September 2007)Google Scholar
  14. 14.
    Owre, S., Shankar, N.: The formal semantics of PVS. Technical Report SRI-CSL-97-2, Menlo Park, CA (1997)Google Scholar
  15. 15.
    Prost, F.: Interprétation de l’analyse statique en théorie des types. PhD thesis, École Normale Supérieure de Lyon (December 1999)Google Scholar
  16. 16.
    Sozeau, M.: Subset coercions in Coq. In: Altenkirch, T., McBride, C. (eds.) TYPES 2006. LNCS, vol. 4502, Springer, Heidelberg (2007)CrossRefGoogle Scholar
  17. 17.
    The Coq development team. The coq proof assistant reference manual v8.0. Technical report, INRIA, France, mars (2004),
  18. 18.
    Werner, B.: On the strength of proof-irrelevant type theories. In: Furbach, U., Shankar, N. (eds.) IJCAR 2006. LNCS (LNAI), vol. 4130, pp. 604–618. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  19. 19.
    Xi, H., Pfenning, F.: Dependent types in practical programming. In: Proceedings of the 26th ACM SIGPLAN Symposium on Principles of Programming Languages, San Antonio, pp. 214–227 (January 1999)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2008

Authors and Affiliations

  • Bruno Barras
    • 1
  • Bruno Bernardo
    • 1
  1. 1.INRIA Futurs and Ecole polytechniqueFrance

Personalised recommendations