Equations: A Dependent Pattern-Matching Compiler

Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6172)


We present a compiler for definitions made by pattern matching on inductive families in the Coq system. It allows to write structured, recursive dependently-typed functions as a set of equations, automatically find their realization in the core type theory and generate proofs to ease reasoning on them. It provides a complete package to define and reason on functions in the proof assistant, substantially reducing the boilerplate code and proofs one usually has to write, also hiding the intricacies related to the use of dependent types and complex recursion schemes.


Type Theory Recursive Call Proof Assistant Split Node User Node 
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.
    Goguen, H., McBride, C., McKinna, J.: Eliminating dependent pattern matching. In: Futatsugi, K., Jouannaud, J.-P., Meseguer, J. (eds.) Algebra, Meaning, and Computation. LNCS, vol. 4060, pp. 521–540. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  2. 2.
    Coquand, T.: Pattern Matching with Dependent Types. In: Proceedings of the Workshop on Logical Frameworks (1992)Google Scholar
  3. 3.
    Augustsson, L.: Compiling Pattern Matching. In: FPCA, pp. 368–381 (1985)Google Scholar
  4. 4.
    Barras, B., Corbineau, P., Grégoire, B., Herbelin, H., Sacchini, J.L.: A New Elimination Rule for the Calculus of Inductive Constructions. In: Berardi, S., Damiani, F., de’Liguoro, U. (eds.) TYPES 2008. LNCS, vol. 5497, pp. 32–48. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  5. 5.
    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 (2007)Google Scholar
  6. 6.
    McBride, C.: Elimination with a Motive. In: Callaghan, P., Luo, Z., McKinna, J., Pollack, R. (eds.) TYPES 2000. LNCS, vol. 2277, pp. 197–216. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  7. 7.
    McBride, C., Goguen, H., McKinna, J.: A Few Constructions on Constructors. Types for Proofs and Programs, 186–200 (2004)Google Scholar
  8. 8.
    Sozeau, M., Oury, N.: First-class type classes. In: Mohamed, O.A., Muñoz, C., Tahar, S. (eds.) TPHOLs 2008. LNCS, vol. 5170, pp. 278–293. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  9. 9.
    Streicher, T.: Semantics of Type Theory. Springer, Heidelberg (1991)zbMATHGoogle Scholar
  10. 10.
    Cornes, C.: Conception d’un langage de haut niveau de représentation de preuves: Récurrence par filtrage de motifs, Unification en présesence de types inductifs primitifs, Synthése de lemmes d’inversion. PhD thesis, Université Paris 7 (1997)Google Scholar
  11. 11.
    McBride, C.: Inverting Inductively Defined Relations in LEGO. In: Giménez, E., Paulin-Mohring, C. (eds.) TYPES 1996. LNCS, vol. 1512, pp. 236–253. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  12. 12.
    McBride, C., McKinna, J.: The view from the left. J. Funct. Program. 14, 69–111 (2004)zbMATHCrossRefMathSciNetGoogle Scholar
  13. 13.
    Barthe, G., Forest, J., Pichardie, D., Rusu, V.: Defining and Reasoning About Recursive Functions: A Practical Tool for the Coq Proof Assistant. Functional and Logic Programming, 114–129 (2006)Google Scholar
  14. 14.
    Bove, A., Capretta, V.: Modelling general recursion in type theory. Mathematical Structures in Computer Science 15, 671–708 (2005)zbMATHCrossRefMathSciNetGoogle Scholar
  15. 15.
    Sozeau, M.: Un environnement pour la programmation avec types dépendants. PhD thesis, Université Paris 11, Orsay, France (2008)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2010

Authors and Affiliations

  1. 1.Harvard University 

Personalised recommendations