a, x - ENS de Lyon
Transcription
a, x - ENS de Lyon
Sémantique de langages de programmation Master 1 - LC - MPRI Delia Kesner PPS, Université Paris VII Email : [email protected] URL : www.pps.jussieu.fr/~kesner Informations générales Cours : lundi 10h30-12h30, salle J4 TD : lundi 12h30-14h30, salle J4 Partiel Obligatoire : mars Note module : (Partiel + Examen)/ 2 2eme session : Examen 1 Motivations Functional Programming Concurrent Languages Imperative Programming Data Base languages Programming languages Rewriting Programming Proof Assistants Object-Oriented Programming 2 Syntax vs Semantics Syntax : ∀x s(x) 6= 0 Semantics : Every positive natural number is dierent from zero 3 Semantics of programming languages The meaning of programming languages. Dierent techniques : Operational semantics Denotational semantics Axiomatic semantics 4 Operational semantics The meaning of a program is the sequence of states of the machine executing the program. program = transition system Example : P1: a=1; b=0; P2: a=1; b=0; P3: b=0; a=1; P1 is equivalent to P2, but P1 is not equivalent to P3. / non equivalent programs may have the same result. This notion can be rened in order to observe just a piece of memory of the machine. 5 Denotational semantics program = mathematical function Argument of this function : the state of the memory before execution Result of this function : the state of the memory after execution Example : P1:a=1; b=0; P2:a=1; b=0; P3:b=0; a=1; P4:a=1; b=1; P1, P2 and P3 are equivalent, but they are not equivalent to P4. 6 Axiomatic semantics program = transformation of logical properties This can be written for example in Hoare logic as {P }P rog{Q} Thus for example, {vrai} a = 1; b = 0; {a ≥ 0 ∧ b ≥ 0} {vrai} b = 0; a = 1; {a ≥ 0 ∧ b ≥ 0} {vrai} a = 1; b = 1; {a ≥ 0 ∧ b ≥ 0} are all equivalent. 7 Relation between dierent semantics Two syntactic equivalent programs are operational equivalent. Two operational equivalent programs are denotational equivalent. Two denotational equivalent programs are axiomatic equivalent. The converse implications are in general false. 8 Operational Semantics program = transition system Rewriting systems are a natural tool to model transitions between objects. 9 Example I : String rewriting Rewriting system : vert → orange orange → rouge rouge → vert Reduction sequence : vert → orange → rouge → vert → orange → . . . 10 Example II : String rewriting Rewriting system : ◦• → •◦ •• → •• •◦ → ◦• Reduction Sequence : ◦•• ◦ •• ◦ •• ↓∗ ••• ◦ ◦ ◦ ••• 11 Example III : Term rewriting Rewriting system for Peano arithmetic : 0+y → y s(x) + y → s(x + y) 0∗y → 0 s(x) ∗ y → (x ∗ y) + y Reduction sequence : 12 2 ∗ 3 = s(s(0)) ∗ s(s(s(0))) → s(0) ∗ s(s(s(0))) + s(s(s(0))) → 0 ∗ s(s(s(0))) + s(s(s(0))) + s(s(s(0))) → 0 + s(s(s(0))) + s(s(s(0))) → s(s(s(0))) + s(s(s(0))) → s(s(s(0)) + s(s(s(0)))) → s(s(s(0) + s(s(s(0))))) → s(s(s(0 + s(s(s(0)))))) → s(s(s(s(s(s(0)))))) = 6 13 Example IV : Equational Programming Rewriting system : nil[a/y] → nil cons(a, x)[a/y] → cons(y, x[a/y]) cons(b, x)[a/y] → cons(b, x[a/y]) Reduction sequence : cons(a, cons(b, cons(a, cons(b, nil))))[a/c][b/d] →∗ cons(c, cons(d, cons(c, cons(d, nil)))) 14 Example V : Logical reasoning Rewriting system : p⇒q → ¬p ∨ q ¬(p ∧ q) → ¬p ∨ ¬q ¬(p ∨ q) → ¬p ∧ ¬q ¬¬p → p Reduction sequence : 15 ¬(¬(¬p ⇒ q) ⇒ r) → ¬(¬(¬¬p ∨ q) ⇒ r) → ¬(¬(p ∨ q) ⇒ r) → ¬((¬p ∧ ¬q) ⇒ r) → ¬(¬(¬p ∧ ¬q) ∨ r) → ¬((¬¬p ∨ ¬¬q) ∨ r) → ¬((p ∨ ¬¬q) ∨ r) → ¬((p ∨ q) ∨ r) → ¬(p ∨ q) ∧ ¬r → (¬p ∧ ¬q) ∧ ¬r 16 Example VI : Graph Rewriting A B A⊥ AOB ⊥ A Cut B⊥ ⊗B ⊥ A B A⊥ B⊥ O−⊗ Cut Cut 17 Example VII : Functional Programming The λ-calculus [Church] (β) (λx.M )N → M {x/N } (η) λx.M x → M (SP ) hπ1 (M ), π2 (M )i → M 18 Example VIII : Object-Oriented Programming The ς -calculus [Abadi & Cardelli] An objet O is a collection of methods hli ≡ ς selfi .Bi ii∈1...n . Method invocation is given by the rewriting rules : O.lj → Bj {selfj /O} 19 Example IX : Mathematical reasoning ∃α.∀β.X T ∈ {α : A | P } → → ∀β.∃α.X T ∈ A ∧ P {α/T } 20 Example X : Pattern Matching case(c1 (L), λx1 .M1 , . . . , λxn .Mn ) → M1 {x1 /L} .. .. . . case(cn (L), λx1 .M1 , . . . , λxn .Mn ) → Mn {xn /L} 21 Example XI : OCAML Programs let rec length l = match l with [] -> 0 | h::t -> length t + 1 ;; let rec append l1 l2 = match l1 with [] -> l2 | h::t -> h::append t l2;; let rec map l f = match l with [] -> [] | h::t -> (f h):: map t f ;; 22 Example XII : Concurrent Programming The π -calculus [Milner & Parrow & Walker] αhti.P | αhxi.Q → P | Q{x/t} 23 Example XIII :XSLT A language to transform (by rewriting) XML documents. See http://www.w3.org/Style/XSL/ 24 Example XIV : development of plant structures See http://algorithmicbotany.org/ for more details. 25 Formal denition of rewriting Given a set of objects A, (abstract) rewriting is a relation → ⊆ A × A. String rewriting : A is a set of words. First-order rewriting : A is a set of algebraic terms. Higher-order rewriting : A is a set of higher-order terms. Graph rewriting : A is a set of graphs. 26 Main components of the rewriting model Objects Substitution Matching 27 Typical questions concerning a rewriting model Consider a rewriting sequence t1 →R t2 →R t3 →R . . . Is this computation terminating ? (always ? sometimes ?) Is there a result (e.g. canonical form) ? Is there uniqueness of results ? 28 (Part of the) History (Thue-1914) String rewrite systems (Church-1936) Lambda calculus (Gorn-1967) Term rewrite systems (Klop-1980) Combinatory reduction systems 29 Plan du cours Introduction Notions mathématiques Relations bien fondées : dénitions et exemples Principe d'induction bien fondée Composition de relations bien fondées : lexicographique, produit, multi-ensemble, etc Notions de réécriture abstraite Notions de Church-Rosser, conuence, conuence faible, conuence forte, normalisation faible et normalisation forte Quelques théorèmes fondamentaux Calculs algébriques Termes et Sigma algèbres 30 Homomorphismes et substitutions Théorème de Birkho Réécriture Égalité engendrée par une relation de réécriture Quelques techniques pour montrer la conuence Quelques techniques pour montrer la terminaison Calculs fonctionnels Introduction au lambda calcul Lambda termes, substitutions, alpha-conversion Réduction beta et égalité beta Conuence du lambda calcul (réductions parallèles) Lambda calcul typé : type, jugement de type, dérivation de typage Propriétés : Unicité, décidabilité et préservation du typage, 31 normalisation forte du lambda calcul simplement typé (méthode de réductibilité et preuve arithmétique) Sémantique opérationnelle Sémantique opérationnelle structurée (petits pas) Sémantique opérationnelle naturelle (grands pas) Exemple évaluation des nombres binaires Sémantique du lambda calcul : appel par nom et par valeur, à petits pas et grands pas Propriétés : déterminisme, correspondance entre petits pas et grands pas, héritage de la préservation de types et de la normalisation forte Machines à environnement pour l'appel par nom Évaluateur simple Machine de Krivine 32 Sémantique dénotationnelle L'approche dénotationnelle de la sémantique Sémantique d'un langage fonctionnel simple Modéliser la non terminaison : les ordres partiels complets (CPO) 33 Bibliographie Transparents et tableau (consulter www.pps.jussieu.fr/~kesner régulièrement) 34 Pour les calculs algébriques : Term Rewriting and All That. 1998. Franz Baader, Tobias Nipkow. Cambridge University Press 35 Pour les calculs fonctionnels : Lambda-calcul, types et modèles. 1997. Jean-Louis Krivine. Masson 36 The lambda calculus : its Syntax and Semantics. 1984. Henk Barendregt. North-Holland 37 Notions mathématiques pour la sémantique Notions mathématiques de base Ensembles Univers Dénition : Soient deux ensembles A, B inclus dans U . L'intersection de A et B est A ∩ B = {e ∈ U | e ∈ A et e ∈ B} L'union de A et B est A ∪ B = {e ∈ U | e ∈ A ou e ∈ B} La diérence de A et B est A \ B = {e ∈ U | e ∈ A et e ∈ / B} Le complémentaire de A est A = U \ A = {e ∈ U | e ∈ / A} P(A) est l'ensemble de toutes les parties de l'ensemble A. (Lois de de Morgan) A ∪ B = A∩B A∩B = A∪B Dénition : Le produit cartésien de n ensembles A1 . . . An est l'ensemble de n-uplets A1 × . . . × An = {(a1 , . . . , an ) | ai ∈ Ai }. Si Ai = A pour tout i, on note An le produit A1 × . . . × An . 40 Relations Dénition : Une relation n-aire sur A1 . . . An est un sous-ensemble de A1 × . . . × An . Dénition : Soit R ⊆ A × A une relation binaire. R est réexive ssi pour tout x ∈ A, (x, x) ∈ R. R est irréexive ssi pour tout x ∈ A, (x, x) ∈ / R. R est symétrique si pour tout x, y ∈ A, (x, y) ∈ R implique (y, x) ∈ R. R est anti-symétrique si pour tout x, y ∈ A, (x, y) ∈ R et (y, x) ∈ R implique x = y . R est transitive si pour tout x, y, z ∈ A, (x, y) ∈ A et (y, z) ∈ R implique (x, z) ∈ R. 41 Notations (x, y) ∈ R peut s'écrire aussi x R y . On peut utiliser un symbole à la place de R : Ainsi par exemple, si ≤ est une relation, alors (x, y) ∈ ≤ s'écrit x ≤ y . On écrit y ≥ x lorsque x ≤ y . 42 Exemples Example : La relation ≥ sur les entiers naturels est réexive, la relation > sur les entiers naturels est irréexive. Example : La relation = sur les ensembles est symétrique, la relation ≥ sur les entiers naturels est anti-symétrique. Example : La relation ⊇ sur les ensembles est transitive. 43 Équivalence et Congruence Dénition : R est une équivalence si elle est réexive, symétrique et transitive. Exercice : Montrer que ∼= {(x, y) | 3 est diviseur de x − y} est une équivalence. R est une congruence p.r. à f si R est une équivalence compatible avec f , c'est à dire, si a1 R b1 . . . an R bn implique f (a1 , . . . , an ) R f (b1 . . . bn ). Exercice : Montrer que ∼= {(x, y) | 3 est diviseur de x − y} est une congruence par rapport à + et à ∗. 44 Classes d'équivalence La classe d'équivalence de a ∈ A par rapport à une équivalence R est l'ensemble [a]R = {b ∈ A | aRb}. 45 Composition de relations Dénition : Si R ⊆ A × B et S ⊆ B × C , alors la composition de S avec R est une relation dans A × C t.q. S ◦ R = {(x, y) ∈ A × C | ∃z ∈ B (x, z) ∈ R et (z, y) ∈ S}. Dénition : Soit R ⊆ A × A. On note Rn la n-composition de R avec elle même par induction comme suit : R0 = {(a, a) | a ∈ A} Rn+1 = Rn ◦ R = R ◦ Rn = R . . ◦ R} | ◦ .{z n+1 fois 46 Example : Soit A = {P aris, Lyon, T oulouse} et R = {(P aris, Lyon), (P aris, T oulouse), (Lyon, P aris), (T oulouse, P aris)}, R2 = {(P aris, P aris), (Lyon, Lyon), (T oulouse, T oulouse), (Lyon, T oulouse), (T oulouse, Lyon)}, Calculer R3 . 47 Les clôtures Dénition : La clôture transitive d'une relation R est donnée par R+ = ∞ [ Rn n=1 La clôture réexive et transitive d'une relation R est donnée par R∗ = ∞ [ Rn = R+ ∪ R0 n=0 Example : Dans l'exemple d'avant, R∗ = A × A. 48 Fonctions Dénition : Une fonction f entre deux ensembles A et B, notée f : A → B , est une relation sur A × B t.q. pour tout x, y, z si (x, y) ∈ f et (x, z) ∈ f , alors y = z . Notation : On écrit f (x) pour dénoter l'unique élément y t.q. (x, y) ∈ f et f (C) = {y ∈ B | ∃x ∈ C, f (x) = y}. On note idA la fonction identité sur A donnée par idA (x) = x. Dénition : Soit f : A → B une fonction. Letoujours domaineune de fonction f est Dom(f ) = {x ∈ A | ∃y ∈ B, (x, y) ∈ f } pas L'image de f est Im(f ) = {y ∈ B | ∃x ∈ A, (x, y) ∈ f } L'inverse de f est f −1 = {(y, x) ∈ B × A | (x, y) ∈ f } 49 Composition de fonctions Dénition : La composition de f : B → C avec g : A → B est la fonction f ◦ g : A → C , où f ◦ g(x) = f (g(x)). Example : f (x) = x2 , g(x) = x + 4, f ◦ g(x) = (x + 4)2 , g ◦ f (x) = x2 + 4. La n-composition de f avec elle-même , notée f n , est déni par récurrence sur n : Si n = 0, alors f 0 = id Si n > 0, alors f n = f ◦ f n−1 Example : f (x) = x + 2, f 0 (x) = x, f 1 (x) = x + 2, f 2 (x) = x + 4, f 3 (x) = x + 6, . . ., f n (x) = x + 2.n. 50 Par induction, voir la Section suivante Exercice : Soit n > 0. Montrer que f n = f n−1 ◦ f . 51 Propriétés des fonctions Dénition : Une fonction f : A → B est injective ssi pour tout x, y ∈ A, f (x) = f (y) implique x = y . Example : f (x) = x + 2 sur les entiers est injective. f (x) = x \ {3} sur les ensembles d'entiers n'est pas injective. Ainsi f ({2, 3, 4}) = f ({2, 4}) mais {2, 3, 4} 6= {2, 4}. Dénition : Une fonction f : A → B est surjective ssi pour tout y ∈ B il existe x ∈ A tel que f (x) = y . Example : f (x) = x div 2 sur les entiers naturels est surjective. f (x) = x + 2 sur les entiers naturels n'est pas surjective. 52 Dénition : Une fonction est bijective ssi elle est injective et surjective. Example : Soit A l'ensemble de mots de longueur 3 contenant uniquement 0 et 1. Soit B = {0 . . . 7}. Soit f (”b2 b1 b0 ”) = b2 .22 + b1 .21 + b0 .20 . Cette fonction est injective et surjective, donc bijective. 53 Fonction caractéristique Dénition : Soit A un ensemble inclus dans un univers U . La fonction caractéristique de A dans U est la fonction χ : U → {0, 1} telle que ∀a ∈ U.χ(a) = 1 ssi a ∈ A 54 Préordres, ordres Dénition : Un préordre est une relation réexive et transitive. Example : R = {(2, 2), (3, 3), (4, 4), (3, 2), (2, 3), (2, 4), (3, 4)}. Un ordre ou ordre partiel est une relation réexive, anti-symétrique et transitive. Notation : ≥ Example : R n'est pas un ordre car (3, 2), (2, 3) mais 2 6= 3. S = {(2, 2), (3, 3), (4, 4), (2, 3), (2, 4), (3, 4)} est un ordre. Dénition : Un ordre strict est une relation irréexive et transitive. 55 Notation : > Example : > sur les entiers, ⊃ sur les ensembles. Dénition : Un ordre strict est bien fondé ssi il n'existe aucune chaîne innie (i.e., de la forme a0 > a1 > a2 > . . .). Example : > sur les entiers naturels est bien fondé. > sur tous les entiers n'est pas bien fondé. ⊃ sur les ensembles est bien fondé. 56 Majorants/minorants et bornes supérieures/inférieures Soit E un ensemble muni d'un ordre ≤. Soit A ⊆ E . Dénition : Un majorant de A est un x ∈ E t.q. pour tout y ∈ A, y ≤ x. Un minorant de A est un x ∈ E t.q. pour tout y ∈ A, x ≤ y . La borne supérieure de A, notée sup(A), est le plus petit des majorants de A (si z est un majorant de A alors sup(A) ≤ z ). La borne inférieure de A, notée inf (A), est le plus grand des minorants de A (si z est un minorant de A alors z ≤ inf (A)). Example : Soit A = {1, . . . , 10}. Tous les entiers dans {10, . . .} sont des majorants de A et 10 est la borne supérieure. 57 Example : Si a ≤ c, a ≤ d, b ≤ c, b ≤ d, alors a et b sont des minorants, mais comme ils sont incomparables il n'y a pas de borne inférieure. Example : Si Ei sont des ensembles dans P(E), alors le sup est S i Ei et le inf T i Ei . 58 Fonctions monotones et points xes Dénition : Soit f : A → B une fonction et soient ≤A , ≤B deux ordres sur A et B respectivement. La fonction f est monotone ssi x ≤A y implique f (x) ≤B f (y). Example : f (x) = x + 3. Dénition : Soit f : A → A une fonction. Un point xe de f est un élément x ∈ A t.q. f (x) = x. Example : Soit f (x) = x2 . Alors x = 1 est un point xe. Le plus petit point xe de f est inf ({x ∈ A | f (x) = x}). Le plus grand point xe de f est sup({x ∈ A | f (x) = x}). 59 Dénitions Inductives Dénitions inductives en informatique Syntaxe concrete Syntaxe abstraite Règles de typage Règles d'évaluation 61 Le principe Une dénition inductive est caracterisée par : Une ou plusieures assertions Un ensemble de règles d'inférence pour dériver ces assertions Example : Assertion : "X est naturel" ou "X nat" Règles d'inférence : R1 : 0 est naturel R2 : Si n est naturel, alors succ(n) est naturel. 62 Notation Les règles d'inférence sont notées Hypothèse1 . . . Hypothèsen Conclusion (Nom de la règle) Conclusion est une assertion Hypothèse1 . . . Hypothèsen sont des assertions En général n ≥ 0. Si n = 0 la règle est un axiome 63 Exemple (règle unaire) Les entiers naturels 0 est naturel (N at0) n est naturel succ(n) est naturel (N at+) 64 Exemple (règle binaire) Les arbres binaires vide est un arbre binaire A1 est un arbre binaire (Abin-nil) A2 est un arbre binaire node(A1 , A2 ) est un arbre binaire (Abin-ind) 65 Exemple Les mots sur un alphabet A a∈A ² mot n mot a.n mot 66 Exemple (plusieurs axiomes, règles unaires et binaires) Les expressions de la logique propositionnelle sur l'alphabet A p∈A p expr A1 expr A2 expr A1 ∨ A2 expr A1 expr A2 expr A1 → A2 expr A1 expr A2 expr A1 ∧ A2 expr A expr ¬A expr 67 Exemple (plusieures assertions) Les forêts de type T avide ∈ arbre T t∈T f ∈ foret T node(t, f ) ∈ arbre T f vide ∈ foret T A ∈ arbre T f ∈ foret T add(A, f ) ∈ foret T 68 Dérivation d'une assertion Une assertion A est dérivable ssi A est un axiome A ou il y a une règle de la forme A1 An A telle que A1 , . . . , An sont dérivables 69 Exercice : 1. Montrer que succ(succ(succ(0))) nat est dérivable. 2. Donner le terme qui dénote la forêt suivante et montrer comment la construire avec les règles précédentes : avide 3 / 44 | avide \ 6 | avide 6 / | \ 6 7 8 / | \ avide 5 avide / \ avide avide 70 Ensemble inductif Un ensemble inductif est le plus petit ensemble engendré par un système de règles d'inférence. 71