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