A unification algorithm for Coq featuring universe polymorphism and overloading
Open Access
- 29 August 2015
- journal article
- conference paper
- Published by Association for Computing Machinery (ACM) in ACM SIGPLAN Notices
- Vol. 50 (9) , 179-191
Abstract
Unification is a core component of every proof assistant or programming language featuring dependent types. In many cases, it must deal with higher-order problems up to conversion. Since unification in such conditions is undecidable, unification algorithms may include several heuristics to solve common problems. However, when the stack of heuristics grows large, the result and complexity of the algorithm can become unpredictable. Our contributions are twofold: (1) We present a full description of a new unification algorithm for the Calculus of Inductive Constructions (the base logic of Coq), including universe polymorphism, canonical structures (the overloading mechanism baked into Coq's unification), and a small set of useful heuristics. (2) We implemented our algorithm, and tested it on several libraries, providing evidence that the selected set of heuristics suffices for large developments.Keywords
This publication has 17 references indexed in Scilit:
- Idris, a general-purpose dependently typed programming language: Design and implementationJournal of Functional Programming, 2013
- Canonical Structures for the Working Coq User2013
- A Machine-Checked Proof of the Odd Order Theorem2013
- A Bi-Directional Refinement Algorithm for the Calculus of (Co)Inductive ConstructionsLogical Methods in Computer Science, 2012
- Higher-Order Dynamic Pattern Unification for Dependent Types and Records2011
- Hints in Unification2009
- Packaging Mathematical Structures2009
- Dependently Typed Programming in Agda2009
- Contextual modal type theoryACM Transactions on Computational Logic, 2008
- A Linear Spine CalculusJournal of Logic and Computation, 2003