The Constructive Engine

The Calculus of Constructions is a higher-order formalism for writing constructive proofs in a natural deduction style, inspired from work of de Bruijn [4, 7], Girard [21] and MartinLof [33]. The calculus and its syntactic theory were presented in Coquand’s thesis [12], and an implementation by the author was used to mechanically verify a substantial number of proofs demonstrating the power of expression of the formalism [15]. The Calculus of Constructions is proposed as a foundation for the design of programming environments where programs are developed consistently with formal specifications[37]. This note presents in detail an implementation in CAML[18, 44] of a proof-checker for the calculus. This proof-checker proceeds by operating an abstract machine, called the constructive engine. The description in this paper is close in spirit to the inference system described in section 10.2 of [13]. The main departure is the addition of a system of constants, allowing a form of definitional equality. The implementation shown corresponds to a simplification of version 4.9 of the system. Differences with the actual implementation are discussed below.

[1]  Fa Dick The mathematical language AUTOMATH, its usage and some of its extensions , 1970 .

[2]  T. Coquand,et al.  Metamathematical investigations of a calculus of constructions , 1989 .

[3]  de Ng Dick Bruijn A namefree lambda calculus with facilities for internal definition of expressions and segments , 1978 .

[4]  Christine Paulin-Mohring,et al.  Extracting ω's programs from proofs in the calculus of constructions , 1989, POPL '89.

[5]  J. Roger Hindley,et al.  To H.B. Curry: Essays on Combinatory Logic, Lambda Calculus, and Formalism , 1980 .

[6]  de Ng Dick Bruijn Formalization of constructivity in Automath , 1984 .

[7]  T. Coquand Une théorie des constructions , 1985 .

[8]  Gerard Huet,et al.  Formal structures for computation and deduction , 1986 .

[9]  Alonzo Church,et al.  A formulation of the simple theory of types , 1940, Journal of Symbolic Logic.

[10]  Thierry Coquand,et al.  An Analysis of Girard's Paradox , 1986, LICS.

[11]  Gilles Kahn,et al.  Natural Semantics , 1987, STACS.

[12]  de Ng Dick Bruijn Lambda calculus notation with nameless dummies, a tool for automatic formula manipulation, with application to the Church-Rosser theorem , 1972 .

[13]  J. Y. Girard,et al.  Interpretation fonctionelle et elimination des coupures dans l'aritmetique d'ordre superieur , 1972 .

[14]  de Ng Dick Bruijn Automath A Language for Mathematics , 1973 .

[15]  Gérard P. Huet,et al.  Confluent Reductions: Abstract Properties and Applications to Term Rewriting Systems , 1980, J. ACM.

[16]  Thierry Coquand,et al.  Constructions: A Higher Order Proof System for Mechanizing Mathematics , 1985, European Conference on Computer Algebra.

[17]  Robert E. Tarjan,et al.  Variations on the Common Subexpression Problem , 1980, J. ACM.

[18]  Thierry Coquand,et al.  Concepts mathématiques et informatiques formalisés dans le calcul des constructions , 1985, Logic Colloquium.

[19]  Christine Mohring,et al.  Algorithm Development in the Calculus of Constructions , 1986, Logic in Computer Science.

[20]  de Ng Dick Bruijn,et al.  A survey of the project Automath , 1980 .

[21]  S BoyerRoger,et al.  Ttle sharing of structure in theorem proving programs , 1972 .

[22]  A. W. Hofmann The Theory of Types , 1964 .

[23]  Pierre Weis,et al.  The CAML reference manual , 1990 .

[24]  P. Martin-Löf An Intuitionistic Theory of Types: Predicative Part , 1975 .

[25]  Christine C. Paulin Extraction de programmes dans le calcul des constructions , 1989 .

[26]  Thierry Coquand,et al.  The Calculus of Constructions , 1988, Inf. Comput..

[27]  Robert Harper,et al.  Type Checking, Universe Polymorphism, and Typical Ambiguity in the Calculus of Constructions (Draft) , 1989, TAPSOFT, Vol.2.

[28]  de Ng Dick Bruijn Generalizing Automath by means of a lambda-typed lambda calculus , 1987 .

[29]  Per Martin-Löf,et al.  Intuitionistic type theory , 1984, Studies in proof theory.

[30]  Gerard Huet,et al.  Conflunt reductions: Abstract properties and applications to term rewriting systems , 1977, 18th Annual Symposium on Foundations of Computer Science (sfcs 1977).

[31]  Greg Nelson,et al.  Fast Decision Procedures Based on Congruence Closure , 1980, JACM.

[32]  William A. Howard,et al.  The formulae-as-types notion of construction , 1969 .

[33]  Zhaohui Luo,et al.  ECC, an extended calculus of constructions , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[34]  Gérard P. Huet,et al.  Induction Principles Formalized in the Calculus of Constructions , 1987, TAPSOFT, Vol.1.

[35]  G. B. M. Principia Mathematica , 1911, Nature.