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

Documents pareils