1 / 52

Le lambda-calcul : réductions, causalité et déterminisme

Le lambda-calcul : réductions, causalité et déterminisme. Gérard Berry. Collège de France Chaire Informatique et sciences numériques Cours 2, 2 décembre 2009. Le  -calcul pur. x , y , z ,... : variables  x . M : abstraction fonction de x de corps M

rumer
Download Presentation

Le lambda-calcul : réductions, causalité et déterminisme

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Le lambda-calcul : réductions, causalité et déterminisme Gérard Berry Collège de France Chaire Informatique et sciences numériques Cours 2, 2 décembre 2009

  2. Le -calcul pur • x, y, z,... : variables • x. M : abstraction fonction de x de corps M • (MN) : application d’une fonction à un argument • (x.M)N  M[N/x] : -réduction 0= f.x.x 1= f.x.fx ... n= f.x.fn(x) = f(f(...f(x)...)) let recFactmsi m1 alors 1 sinon Mult(m, Fact(m1)) Fact = Y (FACT) avec Y = (x. y.y(xxy)) (x. y.y(xxy)) Collège de France, G. Berry,

  3. Boucle, récursion, ou point fixe Fact(m)  if m1 then 1 elseMult(m, Fact(m1)) • Récursion / point fixe FactY (f. mif m1 then 1 elseMult(m, f(m1))) • Boucle while e do p for (i=0; i<n; i++) p • Boucle récursion / point fixe : facile ! whilee do p  if e then { p; whilee do p } Whilee p = if ethen { p; While e p } While = Y (W. e. p. if ethen { p; W e p }) • Récursion  boucle : dur ! La récursion est plus primitive que la boucle G. Berry, Collège de France,

  4. CAML : programmation fonctionnelle typée En C / C++ : pointeurs, boucles, etc. Bien mieux et plus sûr en CAML ! 3 1 4 head tail A faire : [ 3; 1; 4 ]  [4; 2; 5 ] # let rec mapf lst = match lst with [] [] | head :: tail (f head) :: (map f tail);; val map : ('a -> 'b) -> 'a list -> 'b list = <fun> # let f n = n+1 in map f [3; 1; 4];; : int list = [4; 2; 5] Théorème : un programme bien typé ne peut pas faire d’erreur non détectée à l’exécution

  5. Erreur de type oubli de “::” # let recbadmapf lst= match lst with []-> [] | head :: tail -> (f head) (badmap f tail);; valbadmap : ('a -> 'b list -> 'b list) -> 'a list -> 'b list = <fun> # let f n = n+1 in badmapf [1; 2; 3];; Characters 24-25: let f n = n+1 in badmap f [1; 2; 3];; ^ Error: This expression has type int -> int but is here used with type int -> 'a list -> 'a list G. Berry, Collège de France, G. Berry, Collège de France, 5 02/12/2009

  6. Récursion et ordre supérieuren calcul numérique M M2 M3 M4 M1 F(f, x) T (F, f, x) U (F, f, x) G. Berry, Collège de France,

  7. Agenda • Cohérence et confluence • Causalité • Normalisation relative • Approximations, stabilité, séquentialité • Le -calcul simplement typé • Les types d’ordre supérieur G. Berry, Collège de France,

  8. Agenda • Cohérence et confluence • Causalité • Normalisation relative • Approximations, stabilité, séquentialité • Le -calcul simplement typé • Les types d’ordre supérieur G. Berry, Collège de France,

  9. Interconvertibilité et cohérence • Mais nous avons caché quelque chose : le -calcul est-il cohérent? Par exemple, les entiers sont ils bien tous différents? mnsimn? 3+4 7  5+2 3+4 se calcule en 7, forme normale et 7 est aussi la valeur de 5+2 M N M Q S * * * * * P R N interconvertibles Le calcul ne change pas la valeur, il la rend plus lisible G. Berry, Collège de France,

  10. Confuence (Church-Rosser) M M  N1 N2 N Théorème de Church-Rosser => forme normale unique => résultat déterministe G. Berry, Collège de France,

  11. Interconvertibilité et cohérence M Q S * * * * * M N P R N => Met N confluent * * * * * * T => cohérence : mnsimn G. Berry, Collège de France,

  12. Confluence locale – le cas simple (3+4)+(8-3) (3+4)+(8-3) 7+(8-3) (3+4)+5 résidu 7+5 G. Berry, Collège de France,

  13. Confluence locale du -calcul (M)  (x.xx) ((y.y)M) ((y.y)M) ((y.y)M) (x.xx)M résidus résidu M((y. y) M) MM Les résidus de redex non réduits sont les mêmes G. Berry, Collège de France,

  14. Disparition de redex (x.z) ((y.y)M) M (x.z) M * * N z Dans une réduction, un redex non réduit a 0, 1 ou plusieurs résidus Certains calculs peuvent être inutiles G. Berry, Collège de France,

  15. Problème de récurrence M * * Argl ! Carreaux pas carrés ! G. Berry, Collège de France,

  16. Développements finis (Curry & Feys) Théorème : Soient R1, R2, ..., Rn des redex de M. Les réductions qui réduisent tous les Ri et leurs résidus sont finies et conduisent au même terme M * * M réduire un paquet de redex en un coup N M G. Berry, Collège de France,

  17. Solution 2 : lemme de Newman Soit M fortement normalisable (toutes les réductions terminent). Soit p(M) la longueur de la plus longue réduction de M. montrons la confluence par récurrence sur p(M) M N P 1. p(N)  p(M) * 2. p(P)  p(M) 3. CQFD G. Berry, Collège de France,

  18. Agenda • Cohérence et confluence • Causalité • Normalisation relative • Approximations, stabilité, séquentialité • Le -calcul simplement typé • Les types d’ordre supérieur G. Berry, Collège de France,

  19. Création de redex – le cas simple (3+4)+(8-3) (3+4)+(8-3) 7+(8-3) (3+4)+5 résidu 7+5 7+5 créé 12 G. Berry, Collège de France,

  20. Causalité : la création de redex ()  (x.xx) ((y.y)) ((y.y)) ((y.y)) (x.xx) ((y. y) )   (z.z)(z.z) créé (z.z) G. Berry, Collège de France,

  21. Agenda • Cohérence et confluence • Causalité • Normalisation relative • Approximations, stabilité, séquentialité • Le -calcul simplement typé • Les types d’ordre supérieur G. Berry, Collège de France,

  22. Développements finis généralisés • Familles de redex d’un terme : les classes obtenues par fermeture réflexive, transitive et symétrique de résidu ()  (x.xx) ((y.y)) ((y.y)) ((y.y)) (x.xx) 3 familles ((y. y) )   (x.x)(y.y) créé Théorème (Lévy) : toute réduction qui réduit seulement des redex d’un nombre fini de familles est finie G. Berry, Collège de France,

  23. Corollaire immédiat : la confluence M * La confluence locale n’introduit pas de nouvelles familles le lemme de Newman s’applique aux réductions finies des familles de redex initiales G. Berry, Collège de France,

  24. si Mult(2, Fact(2))0 alors Fact(2) sinon si Fact(2)0 alors Mult(2, Fact(2)) sinon (Add(Mult(2, Fact(2))1, Fact(2)1)1)1 si • 0 si Add(•1, •1)1)1 • 0 Mult(2, •) Fact(2) Calculer sur les arbres en partageant les sous-arbres communs G. Berry, Collège de France,

  25. Les résidus peuvent s’emboîter ! (x.xx) (y.(z.z)yy) (y.(z.z)yy) (y.(z.z)yy) (z.z)(y.(z.z)yy) (y.(z.z)yy) Théorème de Lévy : partager les redex de même famille donnerait des réductions optimales. Abadi-Gonthier-Lévy : mais les structures de données adaptées sont dures et chères! G. Berry, Collège de France,

  26. Agenda • Cohérence et confluence • Causalité • Normalisation relative • Approximations, stabilité, séquentialité • Le -calcul simplement typé • Les types d’ordre supérieur G. Berry, Collège de France,

  27. Le problème du ou parallèle • En C, trois disjonctions booléennes sont possibles • OuS(e, e’) e | e’ :boucle si e ou e’ boucle • OuG(e, e’) e || e’ :si e alors vrai sinon e’ rend vrai si erend vrai, même si e’ boucle • OuD(e, e’)  e’ || e : symétrique • Le parallélismeest-il possible ? • existe-t-ilOuP(e, e’)qui rend vraisil’un de eoue’ • rend vrai, même sil’autre boucle ? Réponse : non ! G. Berry, Collège de France,

  28. Approximations de -termes • On ajoute un nouveau terme , sans réduction. Un -terme est un terme avec des. • Pour un terme M, le terme M est obtenu par remplacement des redex externes de M par  • On écrit M  N si on peut obtenir N en remplaçant des de M par des -termes quelconques x.x((y.y)x) (z ((u.u)x)) x.xP (z)   x.x (z) G. Berry, Collège de France,

  29. Théorèmes sur l’approximation Théorème de monotonie : siM  N et siM a uneformenormale sans, alors N a la même forme normale Théorème de stabilité : siM1 M et M2 M et siM1 et M2 ontuneformenormaleN sans , alors M1M2a la mêmeformenormale. M M1 M2 M2 M1M2 N G. Berry, Collège de France,

  30. L’impossibilité du vrai parallélisme Corollaire : Il n’existe pas de terme « ou parallèle » OuP tel que M1  OuPvrai*vrai M2  OuPvrai*vrai M3  OuPfauxfaux*faux Preuve : Si OuP existe, on pose MOuPvraivrai On a M1 M et M2 M stabilité : M1 *vrai et M2 *vraiM1  M2 Oup *vrai monotonie : Oup *vraiOupfauxfaux *vrai confluence : contredit Oupfauxfaux*faux, contradiction ! G. Berry, Collège de France,

  31. La séquentialité • Théorème de séquentialité : siMN, siMn’a pas de formenormalemaisN en a une, alorsilexiste un dansM qui doitdevenir non-dans toutP Mqui auneformenormale. point critique pour le calcul M      G. Berry, Collège de France,

  32. Corollaire • Corollaire : lafonction de Gustavesuivanten’est pas définissable : Gusvraifaux * vrai Gusfauxvrai * vrai Gusvraifaux * vrai • Preuve : le termeGus  n’a pas de  critique G. Berry, Collège de France,

  33. Agenda • Cohérence et confluence • Causalité • Normalisation relative • Approximations, stabilité, séquentialité • Le -calcul simplement typé • Les types d’ordre supérieur G. Berry, Collège de France,

  34. Le -calcul simplement typé f : DE, x : D fx: E g : EF g○f: DF ○ : (EF)(DE)  (DF) ○  f.g.x.g(f(x)) ○ : (EF)((DE)  (DF)) ○ : (EF)(DE)DF G. Berry, Collège de France,

  35. Variables de type : , , , ... • Si  et sont des types, alors () est un type • Un terme bien typé Mdoit vérifier 4 conditions: • Tout sous-terme doit être bien typé • Toute abstraction doit avoir la forme • (x.M)() • Toute application doit avoir la forme • (M()N) • Toute les occurrences libres ou liées par le même lieur • doivent avoir le même type • ... x... x ...    • y. ... y... y...      Un terme M est typable s’il existe des types pour lui G. Berry, Collège de France,

  36. Exemples idD: (DD)   (x. x)() ○ : (EF)(DE)DF ○  (g().f().x.(g()(f() (x))))()()() ouch!  ○  g().f().x. g(fx) mieux  2 f().x.(f(fx)) type ()() x. x xdemanderait t.q.  () G. Berry, Collège de France,

  37. La normalisation forte du -calcul typé Proposition : Si M est typable de type et si M*N dans le calcul pur, alors N est typable de type  Théorème : Si M est typable, alors toutes les réductions de M sont finies Preuve : par morphisme des familles de Lévy Corollaire : il n’existe pas de combinateur de point fixe Y() tel que YMM(YM) Preuve : Y()(x.x)bouclerait ! G. Berry, Collège de France,

  38. La limitation intrinsèque du  -calcul typé Théorème : sur les entiers de Church, seuls les polynômes étendus sont définissables polynômes étendus : projections, constantes, test à 0, fermés par somme et produits G. Berry, Collège de France,

  39. Augmenter la puissanceen gardant la simplicité • Ajouterexplicitementce qui a disparu • PCF : booléens, entiers, Y()pour tout , cfcours 3 • ML / CAML : types paramétriques, inférence de types, etc. • resteindécidable, maisraisonnablementdomestiqué • Rendre le système de types plus puissant • augmenterl’expressivité, préserver de la normalisation forte • Système T (Gödel) • Système F (Jean-Yves Girard, John Reynolds) • Théorie des constructions (G. Huet, T. Coquand) G. Berry, Collège de France,

  40. Théorie des constructions • On ne peut écrire que des programmes qui terminent, mais beaucoup de programmes qui terminent ! • La preuve de terminaison doit faire partie du programme • On peut ensuite l’enlever et extraire automatiquement un programme CAML exécutable du terme source complet • On peut aussi faire des maths vraiment formelles • CompCert, compilateur C prouvé (Leroy et. al.) • Théorème des 4 couleurs (Gonthier – Werner) G. Berry, Collège de France,

  41. Agenda • Cohérence et confluence • Causalité • Normalisation relative • Le -calcul simplement typé • Approximations, stabilité, séquentialité • Les types d’ordre supérieur G. Berry, Collège de France,

  42. Types d’ordre supérieur • Système F (Jean-Yves Girard / John Reynolds) : • quantificateurs explicites pour les types • deux réductions, une pour les termes et une pour les types . x.xde type.() b xb.xb b vrai (xb.xb) vrai vrai Théorème : un terme typable dans Système F est fortement normalisable Preuve : dur ! Relations avec les familles de redex : inconnue G. Berry, Collège de France,

  43. Avantages de Système F • Permet des définitions de types très riches (record, listes, arbres, types récursifs, types existentiels, etc.) • Ne permet de coder que des fonctions qui terminent, mais permet de codertoutes les fonctions primitives récursives, plus d’autres • Mais la typabilité est indécidable et il n’y a pas d’inférence de types ! G. Berry, Collège de France,

  44. Exemple : produit  • Lambda-calcul pur • x, y z.zxy • 1 p. p (x.y.x) • 2 p. p(x.y.y) • Système F •     . (  ) • x, y . z  .z x y • 1 p. p (x.x.x) • 2 p.  (x.x.y) G. Berry, Collège de France,

  45. Entiers de Church, de typeint d  . ()() • 0intd. f ().x.x • +1intd. nint.f ().x.f (nu f x) • It : itération n fois d’une fonction f() sur y • It dnint . f().y. nf y • - It0f y 0 f y  (. f ().x.x) f y  y • - Itn+1f y  n+1 fy • It u f n+ 1 (. f ().x.f(nfx))  f y • It u f n+1  f(n y f) • It u f n+1  f(Itf n y) G. Berry, Collège de France,

  46. Récursion primitive • R df(int).nint. y. • 1(It n (x.f(1x) (2x), +12x)y,0) R0f y  y Rn+1f y  f(Rnf y)n PreddR+1 Pred0 0 Predn+1n Pred(+1(+1(+1(+1(0))))) G. Berry, Collège de France,

  47. Agenda • Cohérence et confluence • Causalité • Normalisation relative • Le -calcul simplement typé • Approximations, stabilité, séquentialité • Les types d’ordre supérieur • Bonus: inférence de types en ML G. Berry, Collège de France,

  48. Types polymorphes à la ML 1. Factoriser les types identiques au lieu d’une identité () x.x pour chaque , avoir une seule identité (’a’a)où’a est un type générique, i.e. une variable de type quantifiée universellement. 2. Inférer les types pour ne pas les déclarer G. Berry, Collège de France,

  49. # let recappendx L <= sinullLalorsconsxnil sinoncons(hdL) (appendx (tlL)) append : ‘a’alist’alist # let recappendx L <= sinullLalorsconsxnil sinoncons(tlL) (appendx (tlL))  type-check error ! G. Berry, Collège de France,

  50. Conclusion • Le -calcul est apparemment hyper-simple mais il est hyper-expressif. • Les théorèmes syntaxiques sont fondamentaux mais durs. • Les types d’ordre supérieurs permettent de définir toutes les fonctions totales d’intérêt => fondamental pour la preuve de programme (CoQ). • Mais le -calcul reste strictement séquentiel. G. Berry, Collège de France,

More Related