la correspondance de Curry

Transcription

la correspondance de Curry
Histoire des algorithmes
version du 2 mai 2004 – 21 h 34
La correspondance de Curry-Howard
1
La mathématisation
L’histoire des sciences montre que tout ce qui est susceptible de se
mathématiser se mathématise.
Au début, seuls les entiers sont des êtres mathématiques.
Puis les Anciens acceptent les rationnels.
Au début du dix-neuvième siècle, les relatifs et les complexes (ou
imaginaires) deviennent eux-aussi des êtres mathématiques.
2
La mathématisation
Au cours du dix-neuf siècle
– les réels (Dedekind),
– puis les fonctions (en «extension»)
– et les ensembles (Cantor) deviennent des êtres mathématiques.
Au début du vingtième siècle, les fonctions (en «intention»)
(Church et Curry) et les théorèmes (Boole, Frege etc.) deviennent
des êtres mathématiques.
Aujourd’hui (1980), les démonstrations deviennent des êtres
mathématiques.
3
La mathématisation
Au cours du dix-neuf siècle
– les réels (Dedekind),
– puis les fonctions (en «extension»)
– et les ensembles (Cantor) deviennent des êtres mathématiques.
Au début du vingtième siècle, les fonctions (en «intention»)
(Church et Curry) et les théorèmes (Boole, Frege etc.) deviennent
des êtres mathématiques.
Aujourd’hui (1980), les démonstrations deviennent des êtres
mathématiques.
4
La déduction naturelle
5
Les séquents
La déduction naturelle est due à Gentzen et Prawitz.
En déduction naturelle, on raisonne avec des hypoth èses.
On utilise des séquents Γ
`p
– où Γ est un ensemble de propositions (les hypoth èses) appelé
l’antécédent
– et où p est une proposition.
On écrit Γ, p
et `
` q au lieu de Γ ∪ {p} ` q
p quand l’ensemble des hypothèses est vide.
Γ ` p se lit «de Γ on déduit p»
` p se lit «p est un théorème».
6
Les démonstrations
Les démonstrations sont des arbres dont
– les noeuds sont les règles de déduction,
– les feuilles sont les axiomes
– et la racine est le séquent dont c’est la démonstration.
...
...
...
(f oo1 )
...
...
...
(bar)
(f oo2 )
Γ`∆
7
...
(f oo1 )
Les théorèmes
Les théorèmes sont les séquents de la forme `
p qui peuvent être
déduits des axiomes et des règles.
On trouvent donc le séquent `
p à la racine d’un arbre de
démonstration de p.
8
La logique propositionnelle minimale
9
Les propositions
C’est une logique très très simple.
Les propositions sont construites
– à partir des variables propositionnelles p, q, r, ...,
– et du connecteur ⇒.
10
L’axiome
Il n’y a qu’un seul axiome,
Γ, p ` p
11
Les règles
Il y a deux règles : introduction et élimination :
Γ, p ` q
Γ`p⇒q
Γ`p⇒q
⇒I
Γ`p
Γ`q
12
⇒E
Les règles
Il y a deux règles : introduction et élimination :
Γ, p ` q
Γ`p⇒q
Γ`p⇒q
⇒I
Γ`p
Γ`q
⇒ E est aussi appelé modus ponens.
13
⇒E
Une démonstration
Je pose Γ ≡ (p
⇒ q), (q ⇒ r), p.
Γ`p⇒q
Γ`q⇒r
Γ`p
Γ`q
Γ`r
(p ⇒ q), (q ⇒ r) ` p ⇒ r
⇒E
⇒I
(p ⇒ q) ` (q ⇒ r) ⇒ p ⇒ r
⇒I
` (p ⇒ q) ⇒ (q ⇒ r) ⇒ p ⇒ r
14
⇒I
⇒E
Le lambda calcul
15
Les fonctions comme citoyens de première classe
Les preuves ont été faites citoyens de première classe,
mais pourquoi pas les fonctions ?
16
Quelques dates
` siecle
`
Fin du 19eme
la notion de fonction se précise en analysea
et en théorie des ensembles.
1920 Schönfinkel introduit les premiers concepts de logique
combinatoire,
1925 Haskell Curry crée la logique combinatoire,
1936 Alonso Church crée le λ-calcul,
1970-... Explosion du λ-calcul due à l’informatique (Barendregt,
Berry, Boehm, de Bruijn, Curien, Girard, Hindley, Klop, Krivine,
Levy, Plotkin, Statmann, Scott etc.)
a
´
En particulier Weierstrass exhibe une fonction continue nulle part derivable.
17
Des notations différentes, un même concept
en maths
x 7→ x
f 7→ (x 7→ f (f (x)))
en CAML
fun x -> x
fun f -> (fun x -> (f (f x)))
λx.x
λf.(λx.(f (f x)))
en λ-calcul
18
La syntaxe
La classe Λ est la plus petite classe qui contient
1.
x si x est une variable,
2.
λx.M si M ∈ Λ,
3.
(M N ) si M ∈ Λ et N ∈ Λ.
19
La syntaxe
La classe Λ est la plus petite classe qui contient
1.
x si x est une variable,
2.
λx.M si M ∈ Λ,
abstraction
3.
(M N ) si M ∈ Λ et N ∈ Λ.
application
20
Qu’y a-t-il derrière la syntaxe ?
On peut voir les termes comme des abstractions des fonctions ou
des programmes.
Dans λx.M , on dit que M est le corps de la fonction ou du
programme.
Dans (M N ), on peut voir M comme une fonction que l’on
applique au paramètre N . La valeur va s’obtenir par «réduction»
(approche intentionnelle).
Le lambda-calcul décrit les fonctions par leur comportement.
21
La decription extensionnelle et la description
intentionnelle
Dans l’approche extensionnelle, on décrit la fonction comme un
ensemble de couples paramètre-résultat.
Dans l’approche intensionnelle, on décrit ce que fait la fonction,
c’est-à-dire son calcul.
22
La β -contraction
Les fonctions sont faites pour calculer !
Les réductions d’un terme représentent son calcul.
La β -contraction en est l’étape élémentaire.
(λx.M )P → M [x := P ]
On remplace tout occurrence de x dans M par P .
23
Un exemple
(λf.λx(f (f x))) (λf.λx(f x))
≡
(λf.λx(f (f x))) (λg.λy(g y))
→
λx.(λg.λy(g y)) ((λg.λy(g y)) x)
=
λx.(λg.λy(g y)) ((λg.λy(g y)) x)
→
λx.(λg.λy(g y)) (λy(x y))
=
λx.(λg.λy(g y)) (λy 0 (x y 0 ))
=
λx.(λg.λy(g y)) (λy 0 (x y 0 ))
→
λx.λy(λy 0 (x y 0 ) y)
=
λx.λy(λy 0 (x y 0 ) y)
→
λx.λy.x y
=
λf.λx.f x.
24
Il y a plusieurs réduction possibles.
On peut montrer que le résultat ne dépend de la réduction suivie :
– confluence,
– ou propriété de Church-Rosser.
25
Un autre exemple
(λx.x x) (λx.x x)
=
(λx.x x) (λy.y y)
→ (x x) [x := (λy.y y)]
=
(λy.y y) (λy.y y)
=
(λx.x x) (λx.x x)
26
Le lambda calcul simplement typé
27
Le paradoxe du barbier
Ω ≡ (λx.x x)(λx.x x) et Y ≡ λf.(λxf (x x)) (λxf (x x))
contiennent des termes qui s’appliquent à eux-mêmes.
Le paradoxe du barbier est :
Le barbier rase tous ceux qui ne se rasent pas eux-m êmes.
Qui rase le barbier ?
28
Le paradoxe du barbier
Ω ≡ (λx.x x)(λx.x x) et Y ≡ λf.(λxf (x x)) (λxf (x x))
contiennent des termes qui s’appliquent à eux-mêmes.
Le paradoxe du barbier est :
Le barbier rase tous ceux qui ne se rasent pas eux-m êmes.
Qui rase le barbier ?
Quelle est l’«intension» d’un terme comme Ω qui se r éduit en
lui-même ?
29
La thérapie
Pour éviter les paradoxes, on cherche à éviter de tels termes.
On va donc typer les termes.
«Typer» est aussi apprécié en programmation.
Plusieurs langages de programmation s’appuient sur le typage, dont
JAVA .
30
Les objectifs du typage
Le typage a donc deux objectifs :
– préserver la correction, rien de mauvais ne peut arriver,
– préserver la terminaison, toutes les réductions se terminent.
En λ-calcul la terminaison s’appelle la normalisation forte.
31
Les environnements
Il faut typer les variables libres, il faut donc faire des hypoth èses sur
les types de ces variables.
D’où la notion d’environnement.
Un environnement est un ensemble d’association de types à des
variables.
Γ ≡ x1 : σ1 , ..., xn : σn
32
Les types
Un jugement est l’affirmation du type σ d’un terme M sous un
certain environnement Γ :
Γ`M :σ
Les types sont
– soit des types de base o,
– soit des types applications σ
→ τ.
33
Les règles
Γ, x : σ ` x : σ (V ar)
Γ, x : σ ` M : τ
Γ ` λx.M : σ → τ
Γ`M :σ→τ
(Abs)
Γ`N :σ
Γ`MN :τ
34
(App)
La correspondance de Curry-Howard
La mathématique c’est l’art de donner le même nom à des
choses différentes.
Henri Poincaré
35
La correspondance de Curry-Howard
(Var)
(Abs)
Γ, p ` p
Γ, x : σ ` x : σ
Γ, x : σ ` M : τ
⇒I
Γ ` λx.M : σ → τ
(App)
Γ`M :σ →τ
Γ`N :σ
Γ ` MN : τ
Γ, p ` q
Γ`p⇒q
⇒E
Γ`p⇒q
Γ`q
36
Γ`p
La correspondance de Curry-Howard
Dans Γ
` M : σ,
M : est une annotation qui est le «terme de preuve»,
– σ peut-être vu comme un type ou comme une proposition.
–
37
La preuve précédente
(p ⇒ q), (r ⇒ p), r ` p ⇒ q
D
⇒E
(p ⇒ q), (r ⇒ p), r ` q
⇒I
(p ⇒ q), (r ⇒ p) ` r ⇒ q
⇒I
(p ⇒ q) ` (r ⇒ p) ⇒ r ⇒ q
⇒I
` (p ⇒ q) ⇒ (r ⇒ p) ⇒ r ⇒ q
où D est
(p ⇒ q), (r ⇒ p), r ` r ⇒ p
(p ⇒ q), (r ⇒ p), r ` r
⇒E
(p ⇒ q), (r ⇒ p), r ` p
38
La preuve précédente annotée
x : (p ⇒ q), y : (r ⇒ p), z : r ` x : p ⇒ q
D
⇒E
x : (p ⇒ q), y : (r ⇒ p), z : r ` x (y z) : q
⇒I
x : (p ⇒ q), y : (r ⇒ p) ` λz.x (y z) : r ⇒ q
⇒I
x : (p ⇒ q) ` λyz.x (y z) : (r ⇒ p) ⇒ r ⇒ q
⇒I
` λxyz.x (y z) : (p ⇒ q) ⇒ (r ⇒ p) ⇒ r ⇒ q
où D est
x : (p ⇒ q), y : (r ⇒ p), z : r ` y : (r ⇒ p)
x : (p ⇒ q), y : (r ⇒ p), z : r ` z : r
⇒E
(p ⇒ q), (r ⇒ p), r ` y z : p
39
La preuve précédente annotée
x : (p ⇒ q), y : (r ⇒ p), z : r ` x : p ⇒ q
D
(App)
x : (p ⇒ q), y : (r ⇒ p), z : r ` x (y z) : q
(Abs)
x : (p ⇒ q), y : (r ⇒ p) ` λz.x (y z) : r ⇒ q
(Abs)
x : (p ⇒ q) ` λyz.x (y z) : (r ⇒ p) ⇒ r ⇒ q
(Abs)
` λxyz.x (y z) : (p ⇒ q) ⇒ (r ⇒ p) ⇒ r ⇒ q
où D est
x : (p ⇒ q), y : (r ⇒ p), z : r ` y : (r ⇒ p)
x : (p ⇒ q), y : (r ⇒ p), z : r ` z : r
(App)
(p ⇒ q), (r ⇒ p), r ` y z : p
La preuve du lemme est le typage du terme !
40
Simplification de preuves
La preuve
(p ⇒ p), q ` p ⇒ p
(⇒ I)
(p ⇒ p) ` q ⇒ p ⇒ p
p`p
(⇒ I)
` (p ⇒ p) ⇒ q ⇒ p ⇒ p
(⇒ I)
`p⇒p
(⇒ E)
`q⇒p⇒p
peut être réduite
41
Simplification de preuves
En effet, on fait une introduction immédiatement suivie d’une
élimination :
(p ⇒ p), q ` p ⇒ p
(⇒ I)
(p ⇒ p) ` q ⇒ p ⇒ p
p`p
(⇒ I)
` (p ⇒ p) ⇒ q ⇒ p ⇒ p
(⇒ I)
`p⇒p
(⇒ E)
`q⇒p⇒p
On peut obtenir une preuve de `
de (p
q ⇒ p ⇒ p à partir de la preuve
⇒ p) ` q ⇒ p ⇒ p.
Pour cela, il suffit de remplacer chaque occurrence de l’utilisation de
l’hypothèse (p
⇒ p) par sa preuve.
42
Simplification de preuves
En utilisant cette remarque
(p ⇒ p), q ` p ⇒ p
(⇒ I)
(p ⇒ p) ` q ⇒ p ⇒ p
p`p
(⇒ I)
` (p ⇒ p) ⇒ q ⇒ p ⇒ p
(⇒ I)
`p⇒p
(⇒ E)
`q⇒p⇒p
donne
q, p ` p
(⇒ I)
q`p⇒p
(⇒ I)
`q⇒p⇒p
43
Simplification de preuves
Donc avec les annotations par les termes de preuve
x : (p ⇒ p), y : q ` p ⇒ p
(Abs)
x : (p ⇒ p) ` λy.x : q ⇒ p ⇒ p
z :p ` z :p
(Abs)
` λxy.x : (p ⇒ p) ⇒ q ⇒ p ⇒ p
(Abs)
` λz.z :p ⇒ p
(App)
` (λxy.x) (λz.z) : q ⇒ p ⇒ p
donne
y : q, z : p ` p
(Abs)
y : q ` λz.z : p ⇒ p
(Abs)
` λyz.z : q ⇒ p ⇒ p
44
Simplification de preuves
Donc avec les annotations par les termes de preuve
x : (p ⇒ p), y : q ` p ⇒ p
(Abs)
x : (p ⇒ p) ` λy.x : q ⇒ p ⇒ p
z :p ` z :p
(Abs)
` λxy.x : (p ⇒ p) ⇒ q ⇒ p ⇒ p
(Abs)
` λz.z :p ⇒ p
(App)
` (λxy.x) (λz.z) : q ⇒ p ⇒ p
donne
y : q, z : p ` p
(Abs)
y : q ` λz.z : p ⇒ p
(Abs)
` (λy.x)[x := λz.z] ≡ λyz.z : q ⇒ p ⇒ p
La β -réduction correspond à la simplification des preuves.
45
Simplification de preuves
D
ϕ, Γ ` ψ
Γ`ϕ⇒ψ
(⇒ I)
Γ`ψ
se transforme en
D0
Γ`ϕ
(⇒ E)
D00
Γ`ψ
D00 est la preuve D dans laquelle toutes les utilisations de
l’hypothèse ϕ sont remplacées par la preuve D de ϕ.
46
Simplification de preuves
D
x : ϕ, Γ ` M : ψ
Γ ` (λx.M ) : ϕ ⇒ ψ
(Abs)
D0
Γ`N :ϕ
Γ ` (λx.M ) N : ψ
se transforme en
(App)
D00
Γ ` M [x := N ] : ψ
D00 est la preuve D (qui se note M ) dans laquelle toutes les
utilisations de l’hypothèse x : ϕ sont remplacées par la preuve D
de ϕ (qui se note N ).
47
La correspondance complète de Curry-Howard
On obtient le tableau de correspondance :
types
propositions
termes
preuves
réduction
simplification des preuves
48
Philip Wadler
La correspondance de Curry-Howard est aussi importante
pour les sciences de l’information que la relativit é d’Einstein
et la mécanique quantique de Dirac pour la physique.
49