Introduction au λ-calcul
Transcription
Introduction au λ-calcul
Introduction au λ-calcul Khelifa SABER LAIC & LAMA (Université de Savoie) 14 novembre 2006 1 Plan 1. Quelques définitions • Syntaxe • Calcul et réduction • Codage des entiers 2. Principaux théorèmes • Confluence • Réductions parallèles • Standardisation 3. Typage du λ-calcul • Le λ-calcul simplement typé • Forte normalisation • Extension au λµ-calcul 2 Un peu d’histoire 1. Inventé par le logicien américain Alonzo Church dans les années 30. Pour fournir un fondement au mathématiques plus simple que la théorie des ensembles. Basé sur la notion de fonction. 2. Cette initiative a échoué, le λ-calcul a un pouvoir expressif plus faible que la théorie des ensembles. 3. Par contre, il a le même pouvoir d’expression que les machines de Turing. 4. Ce qui fournit un bon outil pour fonder la notion de fonction calculable (traitement de la récursivité). 5. Explosion du λ-calcul dans les années 70 due à l’informatique, et grâce aussi à la découverte de L’isomorphisme de CurryHoward. 3 La syntaxe... Définition 1. Les variables : x, y, z,... 2. L’abstraction : si x est une variable et t un terme, alors λx.t est un terme. 3. L’application : si t et u sont deux termes, alors, t u est un terme. T := X | λX .T | T T 4 ...La syntaxe Exemples • I = λx.x • ∆ = λx.x x • Ω = (λx.x x) λx.x x = ∆ ∆ • V = λy.λz.y , F = λy.λz.z , N = λx.(x F ) V La α-équivalence (α-renommage) • λx.x et λy.y sont identifiés. • λf.λx.x f , λx.λf.f x , λx.λy.y x et λy.λz.z y sont identifiés. 5 La β-réduction... (λx.u) v −→β u[x := v] Définition 1. (λx.u) v −→β u[x := v] 2. Si u −→β u0, alors λx.u −→β λx.u0 3. Si u −→β u0, alors u v −→β u0 v et v u −→β v u0 Exemples • (I) t = (λx.x) t −→β x[x := t] = t • (N ) V = (λx.(x F ) V ) V −→β (V F ) V −→β F • (N ) F = (λx.(x F ) V ) F −→β (F F ) V V −→β • Ω = (λx.x x) λx.x x −→β (λx.x x) λx.x x −→β ... 6 ... La β-réduction Définition u[x := v] est obtenu de u en remplaçant les occurences libres de x par v. Attention ! (λx.λy.x) y z −→β ((λy.x)[x := y])z = (λy.y) z −→β z !!! Solution Le α-renommage : On renomme d’abord les variables liées de la fonction qui sont libres dans l’argument. D’où (λx.λy.x) y z = (λx.λa.x) y z −→β ((λa.x)[x := y]) z = (λa.y) z −→β y 7 Codage des entiers... Définition 1. 0 = λf.λx.x 2. 1 = λf.λx.f x 3. n = λf.λx.(f )...(f ) x | {z } n f ois 4. s = λn.λf.λx.(f ) ((n) f ) x 5. ± = λn.λm.λf.λx.((n) f ) ((m) f ) x 6. × = λn.λm.λf.(n) (m) f Exemples • (s) 2 = (λn.λf.λx.(f ) ((n) f ) x) 2 −→β λf.λx.(f ) ((2) f ) x = λf.λx.(f ) ((λf.λx.(f ) (f ) x) f ) x −→∗β λf.λx.(f ) (f ) (f ) x =3 8 ...Codage des entiers • (±) 2 3 = (λn.λm.λf.λx.((n) f ) ((m) f )) 2 3 −→∗β λf.λx.((2) f ) ((3) f ) x −→∗β λf.λx.(λx.(f ) (f ) x) (f ) (f ) (f ) x −→β λf.λx.(f ) (f ) (f ) (f ) (f ) x = 5 Exercice Trouver un autre terme pour coder la fonction successeur s . Trouver un terme pour coder l’exponentielle. 9 Combinateur de point fixe Théorème Tout λ- terme M a un point fixe N , M N =β N . Mieux encore Théorème Il existe un terme Y appelé combinateur de point fixe qui trouve le point fixe de chaque terme M , Y M est le point fixe de M Preuve 1. A = λz.λx.(x)((z) z) x, et Y = A A On a Y M −→∗ M (Y M ). 2. Y = λf.(λx.f (x x)) (λx.f (x x)) 10 Confluence Théorème (Confluence locale) Si u −→ u1 et u −→ u2, alors il existe u3 tel que : u1 −→∗ u3 et u2 −→∗ u3. Théorème (Confluence) Si u −→∗ u1 et u −→∗ u2, alors il existe u3 tel que : u1 −→∗ u3 et u2 −→∗ u3. Corollaire (Unicité de la forme normale) Si v et w sont deux formes normales de u, alors v = w. 11 Réductions parallèles Définition 1. u u 2. u u0, alors (λx.u) λx.u0 3. u u0 et v v 0, alors u v u0 v 0 4. u u0 et v v 0, alors (λx.u) v u0[x := v 0] Lemme −→β ⊆ ⊆ −→∗β Théorème (Confluence forte) Si u u1 et u u2, alors il existe u3 tel que : u1 u3 et u2 u3. 12 Réduction standard Définition (u −→∗st u0) 1. si u = λx.t, alors u0 = λx.t0 où t −→∗st t0 2. si u = ti −→∗st (x) t1...tn, alors u0 = (x) t01...t0n où t0i 3. si u = (λx.t) v v1...vn, alors ou bien : 0 où t −→∗ t0 , v −→∗ • u0 = (λx.t0) v 0 v10 ...vn st st v 0 et vi −→∗st vi0 Ou bien • u −→ (t[x := v]) v1...vn −→∗st u0 13 Standardisation et stratégies de réduction Théorème Si u −→∗ u0, alors u −→∗st u0. Définition La réduction gauche d’un terme consiste à réduire à chaque étape le redex le plus à gauche. Corollaire si u est faiblement normalisable alors la réduction gauche de u aboutit à sa forme normale. Exemple (λz.y) (λx.x x) λx.x x} −→ y | {z Ω 14 Le λ-calcul simplement typé Définition Les types : les formules de la logique proposionnelle implicative. Un jugement Γ ` t : A t un terme, A un type et Γ = {xi : Ai / 1 ≤ i ≤ n} un contexte. Γ, x : A ` x : A Γ, x : A ` u : B →i Γ ` λx.u : A → B ax Γ`u:A→B Γ`v:A →e Γ`uv:B 15 La forte normalisation Théorème Le λ-calcul typé est fortement normalisable. Preuve(Les candidats de réductibilités) 1. Associer à chaque type A un ensemble de termes fortement normalisables |A| appelé interprétation de A. 2. Montrer que chaque terme est dans l’interprétation de sont type. 16 Le λµ-calcul... La syntaxe X = {x, y, z, ...} variables intuitionnistes. A = {a, b, c, ...} variables classiques. T := x | λx.t | t u | µa.t | (a t) Le typage Γ, x : A ` x : A; ∆ ax Γ, x : A ` u : B; ∆ →i Γ ` λx.u : A → B; ∆ Γ ` u : A → B; ∆ Γ ` v : A; ∆ →e Γ ` u v : B; ∆ Γ ` u : ⊥; ∆, a : A ⊥e Γ ` µa.u : A; ∆ Γ ` u : A; ∆, a : A ⊥i Γ ` (a u) : ⊥; ∆, a : A 17 Les réductions 1. (λx.u) v −→β u[x := v] 2. (µa.u) v −→µ µa.u[a :=∗ v] Où u[a :=∗ v] est obtenu de u en remplaçant chaque sous terme de la forme (a t) par (a (t v)). Théorème Le λµ-calcul est confluent. Théorème Le λµ-calcul typé est fortement normalisable. 18 Références 1. H. Barendregt. The Lambda Calculus : its Syntax and Semantics. North-Holland, Amsterdam, Holland, 1984. 2. R. David. A simple proof of basic results in λ calculus. Infomatique théorique/Computer Science, p.1401-1406, 1995. 3. R. David et K.Nour. Notes de DEA 2002/2003 Université de Savoie. 4. J.-L. Krivine. Lambda calcul, types et modèles. Masson, Paris, 1990. 5. M. Parigot. λµ-calculus : An algorithm interpretation of classical natural deduction. Lecture Notes in Artificial Intelligence (624), pp. 190-201. Springer Verlag 1992. 6. M. Parigot. Proofs of strong normalization for second order classical natural deduction. Journal of Symbolic Logic, 62 (4), pp. 1461-1479, 1997. 19