Programmation, langages, compilation 3 – Sémantique

publicité
Programmation, langages, compilation 3
–
Sémantique
E. Lozes
Exercice 1 – Définitions récursives et points fixes
1. Pour chacune des fonctions CAML suivantes, définir sa fonctionnelle
τ : (N → N) → (N → N) et chercher les points fixes :
a) let rec f x = if x > 100 then x − 10
else f (f (x + 11))
b) let rec f x = if x mod 2 = 0 then x + 1
else f (f (x − 1))
c) let rec f x = match x with
d) let rec f x = match x with
0 → 1 | 2 → 2 | x → f (x + 1) ∗ f (x − 1)
1 → 1 | 2n → f (n) | 2n + 1 → f (3n + 2)
W
2. Soit (D, ≤, , ⊥) un ω-c.p.o,
autrement
W
W dit ≤ est un ordre partiel, ⊥ est le
plus petit élément, et : (xn )n∈N → n xn définit la borne sup de toute
suite croissante (xn )n∈N .
(a) montrer que D → D admet une structure naturelle de ω-c.p.o.
W
(b) τW : D → D est dite continue si elle est croissante et τ ( n xn ) =
n τ (xn ). Montrer que l’ensemble des points fixes de τ admet un
plus petit élément, noté µ(τ ).
3. Application : on note N⊥ le ω-d.c.p.o. de domaine N ∪ {⊥} ordonné par
⊥ < n pour tout n, et n, m sont incomparables. Chercher les plus petits
points fixes des fonctionnelles précédentes. Moraliser.
ExerciceV 2W– Point fixe de Tarsky
Soit (X, , ) un treillis complet, et f : X → X une fonction croissante :
V
1. W
Montrer que {x : f (x) ≤ x} définit le plus petit point fixe de f (resp.
{x : x ≤ f (x)} le plus grand).
2. Montrer que l’ensemble des points fixes de f est un treillis complet.
Exercice 3 – Sémantique opérationnelle et dénotationnelle de TOY
On considère le langage TOY :
c ::= a | skip | c; c | if b then c else c | while b do c
1
où a désigne une action sur un environnement de type Σ (“la mémoire”). On
se donne la sémantique dénotationnelle [a] : Σ → Σ (modification d’un état
mémoire) et [b] : Σ → {0, 1} (évaluation d’expression dans un état mémoire).
1. Rappeler ce qu’est la sémantique opérationnelle (grands pas ou petits pas)
et en proposer une pour ce langage.
2. Rappeler ce qu’est la sémantique dénotationnelle et en proposer une pour
ce langage.
Exercice 4 – Preuves en logique de Hoare
On se place dans la logique de Hoare, constituée des assertions {P re} c {P ost}
signifiant : ∀σ, σ |= P re et [c](σ) 6= ⊥ ⇒ [c](σ) |= P ost.
On rappelle les règles de déduction suivantes :
{b ∧ I} c {I}
{I} while b do c {¬b ∧ I}
{A{x := e}} x := e {A}
|= A0 ⇒ A {A0 } c {B 0 } |= B ⇒ B 0
{A} c {B}
1. Rappeler la règle du “ ;”.
2. Etablir la preuve de {n ≥ 0} Cube {z = n3 } où Cube est le programme :
x :=0 ;y :=0
;z :=0 ;while not (x=n) do z :=z+3y+3x+1 ;y :=y+2x+1 ;
x :=x+1
3. Etablir la preuve de {n ≥ 0} Sqrt {x2 ≤ n < (x + 1)2 } où Sqrt est le
programme :
x :=0 ;y :=1 ;z :=1 ;while (y ≤ n) do x :=x+1 ;z :=z+2 ;y :=y+z
4. Montrer que la logique de Hoare est indécidable.
Exercice 5 – Topologie de Scott
1. Soit (X, O) un espace topologique. On pose :
x ≤O y
si
∀O ∈ O, x ∈ O ⇒ y ∈ O
Montrer que ≤O est un ordre ssi X vérifie l’axiome T0 :
∀x, y ∈ X ∀O ∈ O. x ∈ O ⇔ y ∈ O ⇒ x = y
Dans ce cas, on appelle ≤O l’ordre de spécialisation. Quel est cet ordre si
X est séparé ?
W
W
2. Soit (X, ≤, ) un ensemble ordonné tel que la borne sup n xn de toute
suite croissante soit définie (on appelle une telle structure un ω-d.c.p.o).
Une partie O ⊂ X est un ouvert de Scott si elle vérifie :
∀x, y ∈ X.
x ≤ y et x ∈ O ⇒ y ∈ O
et
∀(xn ) ∈ X N croissante,
2
W
n
xn ∈ O ⇒ ∃n. xn ∈ O
(a) Quelle est la topologie de Scott sur R ?
(b) On considère un ω-d.c.p.o quelconque (X, ≤). Montrer que Ox =
{y ∈ X | y 6≤ x} est un ouvert de Scott ; en déduire que ≤ est l’ordre
de spécialisation de la topologie de Scott.
(c) Montrer que les fonctions
Scott
W
W continues sont croissantes et qu’elles
vérifient de plus f ( n xn ) = n f (xn ).
Exercice 6 – Une topologie sans points
On étudie ici une autre correspondance
entreWordres et
W
W topologie. On appelle
frame une structure (X, ≤, ∧, ) telle que a ∧ B = b∈B a ∧ b.
1. Vérifier que l’ensemble des ouverts d’un espace topologique X est une
frame (spatialisation).
2. Respectivement, si O est une frame, montrer que l’on peut donner une
structure d’espace topologique aux morphismes de frame p : O → {>, ⊥}
(localisation).
3. On pose Spat : Topo → Frame et Loc : Frame → Topo. Que vaut
Im(Spat) ? Montrer que TopoT1 ⊂ Im(Loc) ⊂ TopoT0 .
Exercice 7 – Plus faible précondition
On se place dans la sémantique axiomatique de TOY. On note
w(c, A) = {σ : [c](σ) |= A}
la plus faible précondition de (c, A). On dit que A caractérise l’ensemble d’états
w si σ |= A ⇔ σ ∈ w.
1. Donner une formule qui caractérise w(x := e, A).
2. On admet que le langage d’assertion est expressif, i.e. pour tout (c, A), il
existe Fc,A qui caractérise w(c, A). Montrer que {Fc,A } c {A} est prouvable
pour tout A et c. En déduire que ce système est complet.
3. Montrer qu’il n’existe pas de système de preuve vérifiable qui soit complet
pour la logique de Hoare. En déduire qu’il n’y a pas de système de preuve
complet pour les assertions valides (i.e. les A t.q. σ |= A pour tout σ).
3
Téléchargement