Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation...

26
Logique Correspondance Curry-Howard Thomas Pietrzak Licence Informatique

Transcript of Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation...

Page 1: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

LogiqueCorrespondance Curry-Howard

Thomas Pietrzak Licence Informatique

Page 2: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

Curry-Howard

Logique Programmation

Système logique ⇔ Langage de programmation

Hypothèse ⇔ Variable

Formule ⇔ Type

Preuve ⇔ Programme

Page 3: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

Système - Langage

Système Logique Langage de programmmation

Calcul des constructions ⇔ CC (Coquand)

Logique Intuitionniste du 2e ordre ⇔ Système F (Girard)

Logique Intuitionniste du 1er ordre ⇔ Système T (Gödel)

Arithmétique Primitive Récursive ⇔ Système T0 : Récursion primitive (Kleene)

Logique Minimale ⇔ 𝜆-calcul simplement typé (Church)

Page 4: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

𝜆-calcul

Langage de programmation élémentaire

variables : x, y, z, …

fonctions : 𝜆x.t

applications : t u

Page 5: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

𝜆-calcul simplement typé

Ajout de la notion de type

variables : x, y, z, …

fonctions : 𝜆x.t

applications : t u

�, x : ↵ ` x : ↵

�, x : ↵ ` t : �

� ` (�x : ↵.t) : (↵ ! �)

�, t : ↵ ! � � ` x : ↵

� ` tx : �

Page 6: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

𝜆-cube de Barendregt

Page 7: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

𝜆-cube de Barendregt

𝜆-calcul simplement typé

Page 8: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

𝜆-cube de Barendregt

𝜆-calcul simplement typé

calcul des constructions

Page 9: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

𝜆-cube de Barendregt

𝜆-calcul simplement typé

calcul des constructions

𝜆-calculs du 2 e ordre

Page 10: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

𝜆-cube de Barendregt

Page 11: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

𝜆-cube de BarendregtTermes dépendant de types

Λα.x : ∀α.α

= Polymorphisme

Page 12: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

𝜆-cube de BarendregtTermes dépendant de types

Λα.x : ∀α.α

= Polymorphisme

Système F

Page 13: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

𝜆-cube de Barendregt

Page 14: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

𝜆-cube de Barendregt

Types dépendant de types

= types récursifs

Page 15: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

𝜆-cube de Barendregt

Page 16: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

𝜆-cube de Barendregt

Types dépendant de termes

x : (Πa:α.β)

Page 17: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

Formules - TypesSystème Logique Langage

⊤ ⇔ Type unit

⊥ ⇔ Exceptions

Variable ⇔ Type de base

Conjonction ⇔ Tuple

Disjonction ⇔ Type somme

Implication ⇔ Fonction

Pour tout ⇔ Type dépendant

Page 18: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

Variables - types de base

ax

�, A ` A

�, x : ↵ ` x : ↵

Page 19: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

Implications - Fonctions

�, A ` B )i� ` A ) B

� ` A ) B � ` A )e� ` B

�, t : ↵ ! � � ` x : ↵ !e� ` tx : �

�, x : ↵ ` t : � !i� ` (�x : ↵.t) : (↵ ! �)

Application

Page 20: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

Conjonctions - Paires

� ` A � ` B ^i� ` A ^B

� ` A ^B ^eg� ` A

� ` A ^B ^ed� ` B

Projections π1 et π2

� ` x1 : ↵ � ` x2 : � ⇥i� ` (x1, x2) : ↵⇥ �

� ` (x1, x2) : ↵⇥ � ⇥eg� ` x1 : ↵

� ` (x1, x2) : ↵⇥ � ⇥ed� ` x2 : �

Page 21: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

Disjonctions - Somme

� ` ' _ig� ` ' _

� ` _id� ` ' _

� ` ' _ �,' ` ✓ �, ` ✓ _e� ` ✓

� ` x : ↵ |ig� ` y : ↵ | �

� ` x : � |id� ` y : ↵ | �

� ` x : ↵ | � �, x : ↵ ` z : � �, y : � ` z : �|e� ` z : �

Pattern matching

Page 22: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

Pour tout - variables de type

� ` 8x.' 8e� ` '[t/

x

]� ` ' x n’est pas libre dans � 8i� ` 8x.'

� ` t : � ↵ 62 vl(�)8i

� ` ⇤↵.t : (8↵.�)� ` t : (8↵.�)

8e� ` t⌧ : (�[⌧/↵])

Page 23: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

Exemple : curryfication

ax

� ` f : (↵⇥ �) ! �

ax

� ` a : ↵ax

� ` b : � ⇥i� ` (a, b) : ↵⇥ � !e

� = f : (↵⇥ �) ! �, a : ↵, b : � ` f(a, b) : � !if : (↵⇥ �) ! �, a : ↵ ` �b.f(a, b) : � ! � !i

f : ((↵⇥ �) ! �) ` �a.�b.f(a, b) : ↵ ! (� ! �) !i` �f.�a.�b.f(a, b) : ((↵⇥ �) ! �) ! (↵ ! (� ! �))

Page 24: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

Exemple : curryfication

ax

� ` f : (↵⇥ �) ! �

ax

� ` a : ↵ax

� ` b : � ⇥i� ` (a, b) : ↵⇥ � !e

� = f : (↵⇥ �) ! �, a : ↵, b : � ` f(a, b) : � !if : (↵⇥ �) ! �, a : ↵ ` �b.f(a, b) : � ! � !i

f : ((↵⇥ �) ! �) ` �a.�b.f(a, b) : ↵ ! (� ! �) !i` �f.�a.�b.f(a, b) : ((↵⇥ �) ! �) ! (↵ ! (� ! �))

Page 25: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

Exemple : décurryfication

ax

� ` f : ↵ ! (� ! �)

ax

� ` c : ↵⇥ � ⇥eg� ` ⇡1c : ↵ !e

� ` f(⇡1c) : � ! �

ax

� ` c : ↵⇥ � ⇥ed� ` ⇡2c : � !e

� = f : ↵ ! (� ! �), c : ↵⇥ � ` fc : � !if : ↵ ! (� ! �) ` (�c.fc) : ((↵⇥ �) ! �)) !i

` (�f.�c.fc) : (↵ ! (� ! �)) ! ((↵⇥ �) ! �))

Page 26: Logique - thomaspietrzak.com · Système - Langage Système Logique Langage de programmmation Calcul des constructions ⇔ CC (Coquand) Logique Intuitionniste du 2e ordre ⇔ Système

Exemple : décurryfication

ax

� ` f : ↵ ! (� ! �)

ax

� ` c : ↵⇥ � ⇥eg� ` ⇡1c : ↵ !e

� ` f(⇡1c) : � ! �

ax

� ` c : ↵⇥ � ⇥ed� ` ⇡2c : � !e

� = f : ↵ ! (� ! �), c : ↵⇥ � ` fc : � !if : ↵ ! (� ! �) ` (�c.fc) : ((↵⇥ �) ! �)) !i

` (�f.�c.fc) : (↵ ! (� ! �)) ! ((↵⇥ �) ! �))