Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Calcul des constructions — Wikipédia
Calcul des constructions — Wikipédia 👆 Click Here! Read More..
Un article de Wikipédia, l'encyclopédie libre.

Le calcul des constructions (CoC de l'anglais calculus of constructions) est un lambda-calcul typé d'ordre supérieur dans lequel les types sont des valeurs de première classe. Il est par conséquent possible, dans le CoC, de définir des fonctions qui vont des entiers vers les entiers, mais aussi des entiers vers les types, des types vers les entiers ou des types vers les types.

Le CoC est fortement normalisant, bien que, d'après le théorème d'incomplétude de Gödel, il soit impossible de démontrer cette propriété dans le CoC lui-même, puisqu'elle implique sa cohérence.

Le CoC a été développé initialement par Thierry Coquand.

Le CoC a été à l'origine des premières versions de l'assistant de preuves Rocq. Les versions suivantes, ainsi que dans l'assistant de preuve Lean, ont été construites à partir du calcul des constructions inductives qui est une extension du CoC qui intègre des types de données inductives. Dans le CoC originel, les types de données inductives devaient être émulés via un catamorphisme polymorphe (comme dans les entiers de Church).

La façon de définir le calcul des constructions par trois types de dépendances est appelée le lambda cube et est due à Henk Barendregt.

Bases du calcul des constructions

[modifier | modifier le code]

Le calcul des constructions peut être considéré comme une extension de la correspondance de Curry-Howard. Cette dernière associe chaque terme du lambda-calcul simplement typé à une preuve en déduction naturelle dans la logique propositionnelle intuitionniste, et réciproquement. Le calcul des constructions étend cet isomorphisme aux preuves dans le calcul des prédicats intuitionniste dans son ensemble, ce qui inclut par conséquent des preuves de formules quantifiées (que l'on appellera également « propositions »).

Termes

[modifier | modifier le code]

Un terme du calcul des constructions est construit à l'aide des règles suivantes :

  • T {\displaystyle \mathbb {T} } {\displaystyle \mathbb {T} } est un terme (également appelé Type)
  • P {\displaystyle \mathbb {P} } {\displaystyle \mathbb {P} } est un terme (également appelé Prop, le type de toutes les propositions)
  • Si A {\displaystyle A} {\displaystyle A} et B {\displaystyle B} {\displaystyle B} sont des termes, le sont également :
    • ( A B ) {\displaystyle \mathbf {(} AB)} {\displaystyle \mathbf {(} AB)}
    • ( λ x : A . B {\displaystyle \mathbf {\lambda } x:A.B} {\displaystyle \mathbf {\lambda } x:A.B})
    • ( ∀ x : A . B {\displaystyle \forall x:A.B} {\displaystyle \forall x:A.B})

Le calcul des constructions possède cinq types d'objets :

  1. les preuves, qui sont des termes dont les types sont des propositions ;
  2. les propositions, qui sont aussi appelées petits types ;
  3. les prédicats, qui sont des fonctions qui retournent des propositions ;
  4. les types larges, qui sont des types de prédicats (par exemple P est un type large) ;
  5. T lui-même, qui est le type des types larges.

Jugements

[modifier | modifier le code]

Dans le calcul des constructions, un jugement est une inférence de typage :

x 1 : A 1 , x 2 : A 2 , … ⊢ t : B {\displaystyle x_{1}:A_{1},x_{2}:A_{2},\ldots \vdash t:B} {\displaystyle x_{1}:A_{1},x_{2}:A_{2},\ldots \vdash t:B}

qui peut être lue comme l'implication

si les variables x 1 , x 2 , … {\displaystyle x_{1},x_{2},\ldots } {\displaystyle x_{1},x_{2},\ldots } ont pour types A 1 , A 2 , … {\displaystyle A_{1},A_{2},\ldots } {\displaystyle A_{1},A_{2},\ldots }, alors le terme t {\displaystyle t} {\displaystyle t} a pour type B {\displaystyle B} {\displaystyle B}.

Les jugements valides pour le calcul des constructions sont dérivables à partir d'un ensemble de règle d'inférences. Dans la suite, on utilisera Γ {\displaystyle \Gamma } {\displaystyle \Gamma } pour signifier une suite d'associations de type x 1 : A 1 , x 2 : A 2 , … {\displaystyle x_{1}:A_{1},x_{2}:A_{2},\ldots } {\displaystyle x_{1}:A_{1},x_{2}:A_{2},\ldots }, et on écrira K pour désigner soit P soit T.


Γ ⊢ A : P {\displaystyle {\Gamma \vdash A:P}} {\displaystyle {\Gamma \vdash A:P}}

signifie que le terme A {\displaystyle A} {\displaystyle A} est une preuve de la proposition P {\displaystyle P} {\displaystyle P} dans le contexte Γ {\displaystyle \Gamma } {\displaystyle \Gamma }.

On notera A : B : C {\displaystyle A:B:C} {\displaystyle A:B:C} pour signifier «  A {\displaystyle A} {\displaystyle A} a pour type B {\displaystyle B} {\displaystyle B}, et B {\displaystyle B} {\displaystyle B} a pour type C {\displaystyle C} {\displaystyle C} », et B ( x := N ) {\displaystyle B(x:=N)} {\displaystyle B(x:=N)} le résultat de la substitution de la variable x {\displaystyle x} {\displaystyle x} par le terme N {\displaystyle N} {\displaystyle N} dans le terme B {\displaystyle B} {\displaystyle B}.

Une règle d'inférence est écrite sous la forme

Γ ⊢ A : B Γ ′ ⊢ C : D {\displaystyle {\Gamma \vdash A:B} \over {\Gamma '\vdash C:D}} {\displaystyle {\Gamma \vdash A:B} \over {\Gamma '\vdash C:D}}

ce qui signifie

si Γ ⊢ A : B {\displaystyle \Gamma \vdash A:B} {\displaystyle \Gamma \vdash A:B} est un jugement valide, alors Γ ′ ⊢ C : D {\displaystyle \Gamma '\vdash C:D} {\displaystyle \Gamma '\vdash C:D} l'est aussi.

Règles d'inférence du calcul des constructions

[modifier | modifier le code]

Sorte : Γ ⊢ P : T {\displaystyle {{} \over {}\Gamma \vdash \mathbb {P} :\mathbb {T} }} {\displaystyle {{} \over {}\Gamma \vdash \mathbb {P} :\mathbb {T} }}


Variable : Γ ⊢ A : K Γ , x : A ⊢ x : K {\displaystyle {\Gamma \vdash A:K \over {\Gamma ,x:A\vdash x:K}}} {\displaystyle {\Gamma \vdash A:K \over {\Gamma ,x:A\vdash x:K}}}


Abstraction : Γ , x : A ⊢ t : B : K Γ ⊢ ( λ x : A . t ) : ( ∀ x : A . B ) : K {\displaystyle {\Gamma ,x:A\vdash t:B:K \over {\Gamma \vdash (\lambda x:A.t):(\forall x:A.B):K}}} {\displaystyle {\Gamma ,x:A\vdash t:B:K \over {\Gamma \vdash (\lambda x:A.t):(\forall x:A.B):K}}}


Application : Γ ⊢ M : ( ∀ x : A . B ) Γ ⊢ N : A Γ ⊢ M N : B ( x := N ) {\displaystyle {\Gamma \vdash M:(\forall x:A.B)\qquad \qquad \Gamma \vdash N:A \over {\Gamma \vdash MN:B(x:=N)}}} {\displaystyle {\Gamma \vdash M:(\forall x:A.B)\qquad \qquad \Gamma \vdash N:A \over {\Gamma \vdash MN:B(x:=N)}}}

Conversion : Γ ⊢ M : A A = β B Γ ⊢ B : K Γ ⊢ M : B {\displaystyle {\Gamma \vdash M:A\qquad \qquad A=_{\beta }B\qquad \qquad \Gamma \vdash B:K \over {\Gamma \vdash M:B}}} {\displaystyle {\Gamma \vdash M:A\qquad \qquad A=_{\beta }B\qquad \qquad \Gamma \vdash B:K \over {\Gamma \vdash M:B}}}

Définir les opérateurs logiques

[modifier | modifier le code]

Le calcul des constructions est très parcimonieux quand on considère uniquement ses opérateurs de base : le seul opérateur logique pour former les propositions est ∀ {\displaystyle \forall } {\displaystyle \forall }. Néanmoins, cet opérateur unique est suffisant pour définir tous les autres opérateurs logiques :

A ⇒ B ≡ ∀ x : A . B ( x ∉ B ) A ∧ B ≡ ∀ C : P . ( A ⇒ B ⇒ C ) ⇒ C A ∨ B ≡ ∀ C : P . ( A ⇒ C ) ⇒ ( B ⇒ C ) ⇒ C ¬ A ≡ ∀ C : P . ( A ⇒ C ) ∃ x : A . B ≡ ∀ C : P . ( ∀ x : A . ( B ⇒ C ) ) ⇒ C {\displaystyle {\begin{matrix}A\Rightarrow B&\equiv &\forall x:A.B&(x\notin B)\\A\wedge B&\equiv &\forall C:\mathbb {P} .(A\Rightarrow B\Rightarrow C)\Rightarrow C&\\A\vee B&\equiv &\forall C:\mathbb {P} .(A\Rightarrow C)\Rightarrow (B\Rightarrow C)\Rightarrow C&\\\neg A&\equiv &\forall C:\mathbb {P} .(A\Rightarrow C)&\\\exists x:A.B&\equiv &\forall C:\mathbb {P} .(\forall x:A.(B\Rightarrow C))\Rightarrow C&\end{matrix}}} {\displaystyle {\begin{matrix}A\Rightarrow B&\equiv &\forall x:A.B&(x\notin B)\\A\wedge B&\equiv &\forall C:\mathbb {P} .(A\Rightarrow B\Rightarrow C)\Rightarrow C&\\A\vee B&\equiv &\forall C:\mathbb {P} .(A\Rightarrow C)\Rightarrow (B\Rightarrow C)\Rightarrow C&\\\neg A&\equiv &\forall C:\mathbb {P} .(A\Rightarrow C)&\\\exists x:A.B&\equiv &\forall C:\mathbb {P} .(\forall x:A.(B\Rightarrow C))\Rightarrow C&\end{matrix}}}

Définir des types de données

[modifier | modifier le code]

Les types de données de base utilisés en informatique peuvent être définis dans le calcul des constructions :

Booléens
∀ A : P . A ⇒ A ⇒ A {\displaystyle \forall A:\mathbb {P} .A\Rightarrow A\Rightarrow A} {\displaystyle \forall A:\mathbb {P} .A\Rightarrow A\Rightarrow A}
Entiers naturels
∀ A : P . ( A ⇒ A ) ⇒ ( A ⇒ A ) {\displaystyle \forall A:\mathbb {P} .(A\Rightarrow A)\Rightarrow (A\Rightarrow A)} {\displaystyle \forall A:\mathbb {P} .(A\Rightarrow A)\Rightarrow (A\Rightarrow A)}
Type produit A × B {\displaystyle A\times B} {\displaystyle A\times B}
A ∧ B {\displaystyle A\wedge B} {\displaystyle A\wedge B}
Union disjointe A + B {\displaystyle A+B} {\displaystyle A+B}
A ∨ B {\displaystyle A\vee B} {\displaystyle A\vee B}

Voir aussi

[modifier | modifier le code]

Articles connexes

[modifier | modifier le code]
  • Correspondance de Curry-Howard
  • Logique intuitionniste
  • Théorie des types
  • Lambda-calcul
  • Système F

Théoriciens

[modifier | modifier le code]
  • Thierry Coquand
  • Jean-Yves Girard
  • Henk Barendregt

Références

[modifier | modifier le code]
  • (en) Thierry Coquand et Gerard Huet, « The Calculus of Constructions ». Information and Computation, vol. 76, no  2-3 (1988).
  • (en) Pour une source accessible librement, voir Coquand et Huet, « The calculus of constructions ». Rapport technique 530, INRIA, Centre de Rocquencourt (1986).
  • (en) M. W. Bunder et Jonathan P. Seldin, « Variants of the Basic Calculus of Constructions » (2004).

Source de la traduction

[modifier | modifier le code]
  • (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Calculus of constructions » (voir la liste des auteurs).
  • icône décorative Portail de la logique
Ce document provient de « https://fr.teknopedia.teknokrat.ac.id/w/index.php?title=Calcul_des_constructions&oldid=223873634 ».
Catégories :
  • Logique mathématique
  • Théorie des types
  • Assistant de preuve
  • Théorie de la démonstration
Catégories cachées :
  • Portail:Logique/Articles liés
  • Portail:Mathématiques/Articles liés
  • Portail:Sciences/Articles liés

  • indonesia
  • Polski
  • الرية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصر
  • Nederlands
  • 本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українска
  • Tiếng Việt
  • Winaray
  • 中文
  • Русски
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id