Calculation of constructions

The calculation of constructions ( CoC of English calculus off constructions ) is a Lambda-calculation typified of a higher nature in which the standard are values of first class. It is consequently possible, in CoC, to define functions which go from the entireties towards the entireties, but also of the entireties towards the types or the types towards the types.

CoC is strongly standardizing, although, according to the Théorème of incomplétude of Gödel, it is impossible to show this property in CoC itself, since it implies its coherence.

CoC was developed initially by Thierry Coquand.

CoC was at the origin of the first versions of the Assistant of proof S Coq. The following versions were built starting from the Calcul of inductive constructions which is an extension of CoC which integrates standard inductive data. In original CoC, the types of inductive data were to be emulated using their function of destruction.

Bases of the calculation of constructions

The calculation of constructions can be regarded as an extension of the Correspondance of Curry-Howard. The latter associates each term of the Lambda-calculation simply typified with a proof in natural Déduction in the logical propositional intuitionalist, and reciprocally. The calculation of constructions as a whole extends this isomorphism to the evidence in the Calcul of the predicates intuitionalist, which includes consequently evidence of quantified formulas (that one will also call “proposals”).

Terms

A term of the calculation of constructions is built using the following rules:

  • T is a term (also called Type )

  • P is a term (also called m. , the type of all the proposals)
  • If A and B are terms, are it also:
    • \ mathbf {(} has B)
    • ( \ mathbf {\ lambda} X: A.B)
    • ( \ forall X: A.B)

The calculation of constructions has five types of objects:

  1. the evidence , which are terms whose types are proposals;
  2. the proposals, which are also called small types;
  3. the predicates , which are functions which turn over proposals;
  4. the broad standard , which are types of predicates (for example P is a broad type);
  5. T itself, which is the type of the broad types.

Judgments

In the calculation of constructions, a judgment is an inference of typing:

x_1:A_1, x_2: A_2, \ ldots \ vdash T: B

who can be read like the implication

if the variables x_1, x_2, \ ldots have as A_1 types, A_2, \ ldots, then the t term has as a B type.

The valid judgments for the calculation of constructions are derivable starting from a whole of rule of inférences. In the continuation, one will use \ Gamma to mean succession of associations of the type x_1: A_1, x_2: A_2, \ ldots , and one will write K to indicate either P or T . One will note a: B: C to mean “A has as a type B, and B have as a C type”, and B (X: =N) the result of the substitution of the variable x by the term N in the B term.

A rule of inference is written in the form

{\ Gamma \ vdash has: B} \ over {\ Gamma' \ vdash C: D}

what means

if \ Gamma \ vdash has: B is a valid judgment, then \ Gamma' \ vdash C: D is too.

Rules of inference of the calculation of constructions


  1. {\ Gamma \ vdash a: K \ over
{\ Gamma, X: With \ vdash X: With}}
  1. {\ Gamma, X: With \ vdash T: B: K \ over
{\ Gamma \ vdash (\ lambda X: A.T): (\ forall X: A.B): K}}
  1. {\ Gamma \ vdash M: (\ forall X: A.B) \ qquad \ qquad \ Gamma
\ vdash NR: With \ over {\ Gamma \ vdash MR. NR: B (X: = NR)}}

To define the operators logical

The calculation of constructions is very parsimonious when one considers only his core operators: the only logical operator to form the proposals is \ forall. Nevertheless, this single operator is sufficient to define all the other logical operators:

\begin{matrix} With \ Rightarrow B & \ equiv & \ forall X: A.B & (X \ notin B) \ \ With \ wedge B & \ equiv & \ forall C: P. (has \ Rightarrow B \ Rightarrow C) \ Rightarrow C & \ \ With \ vee B & \ equiv & \ forall C: P. (has \ Rightarrow C) \ Rightarrow (B \ Rightarrow C) \ Rightarrow C & \ \ \ neg has & \ equiv & \ forall C: P. (has \ Rightarrow C) & \ \ \ exists X: A.B & \ equiv & \ forall C: P. (\ forall X: A. (B \ Rightarrow C)) \ Rightarrow C & \end{matrix}

To define types of data

The types of source data used in data processing can be defined in the calculation of constructions:

; Boolean S: \ forall a: P. has \ Rightarrow has \ Rightarrow A ; Whole natural: \ forall has: P. (\ Rightarrow A) \ Rightarrow has (has \ Rightarrow A) ; Type produced A \ times B: A \wedge B ; Disjoined union A + B: A \vee B

See too

Related articles

Theorists

References

  • Thierry Coquand and Gerald Huet, “The Calculus off Constructions”. Information and Computation, vol. 76,2-3 (1988).

  • For an accessible source freely, to see Coquand and Huet, “The calculus off constructions”. Report 530, INRIA, Center of Rocquencourt (1986).
  • Mr. W. Bunder and Jonathan P. Seldin, “Variable off the BASIC Calculus off Constructions” (2004).

Random links:Price of poetry Saint-Sulpice Terraces | Marcel Jeanjean | Union of the Islamic courts | Ernest of Saxony-Cobourg-Saalfeld | Park of Maurois | Centre_de_Synovus