The Calculus of Constructions is a higher-order formalism for writing constructive proofs in a natural deduction style, inspired from work of de Bruijn [2, 3] , Girard [12], and Scott [18] . The calculus and its syntactic theory were presented in Coquand's thesis [7] , and an implementation by the author was used to mechanically verify a substantial number of proofs demonstrating the power of expression of the formalism [9] . The Calculus of Constructions is proposed as a foundation for the design of programming environments where programs are developed consistently with formal specifications. The current paper shows how to define inductive concepts in the calculus. A very general induction schema is obtained by postulating all elements of the type of interest to belong to the standard interpretation associated with a predicate map. This is similar to the treatment of D. Park [16] , but the power of expression of the formalism permits a very direct treatment, in a language that is formalized enough to be actually implemented on computer. Special instances of the induction schema specialize to Noetherian induction and Structural induction over any algebraic type. Computational Induction is treated in an axiomatization of Domain Theory in Constructions. It is argued that the resulting principle is more powerful than LCF's [13] , since the restriction on admissibility is expressible in the object language. We assume the reader is familiar with the Calculus of Constructions, as presented in [7, 9, 10, 11] . More precisely, we shall use in the present paper the extended system defined in Section 11 of [8] . The notation [x : A]B stands for the algorithm with formal parameter x of type A and body B, whereas (x : A)B stands for the product of types B indexed by x ranging over A. Thus square brackets are used for λ-abstraction, whereas parentheses stand for product formation. The atom P rop is the type of logical propositions. The atom T ype stands for the first level in the predicative hierarchy of types (and thus we have P rop : T ype). We abbreviate (x : A)B into A → B whenever x does not occur in B. When B : P rop, we think of (x : A)B as the universally quantified proposition ∀x : A·B. When x does not occur in B and A : P rop,
In early version of the Calculus of constructions, formalizations of Tarski's least fixpoint theorem were also used to show how inductive definitions could be encoded directly in the pure (impredicative) calculus of constructions REF .
Induction principles formalized in the Calculus of Constructions
Programming of Future Generation Computers. Elsevier Science
Mathematics Computer Science