TD6 : Sémantique
Simon Halfon :
halfon@lsv.fr
EX 1
ABS :
Supposons que $∃ 𝜌’; 𝜌 \vdash$ while 1 do skip
$⟹ 𝜌’$
est dérivable, alors soit $𝜋$ une dérivation minimale.
Donc par analyse de cas, elle termine par la règle “while” :
⋯ | ⋯ |
---|---|
$𝜋_1$ | $𝜋_2$ |
$𝜌\vdash skip ⟹ 𝜌’’$ | $𝜌\vdash $ while 1 do skip $⟹ 𝜌’$ |
$𝜌\vdash $ while 1 do skip $⟹ 𝜌’$ |
Or :
$𝜌\vdash skip ⟹ 𝜌’’$ implique que
\[𝜌=𝜌''\]donc $𝜋$ n’est pas minimal : absurde.
EX 2
1.
$c_1 ≝ $ while e do c
$\overset{?}{\sim}$
$c_2 ≝ $ if e then (c; while e do c) else skip
Soit $𝜌, 𝜌’$ des environnements.
⟹ : Si $𝜌 \vdash$ while e do c
$⟹ 𝜌’$
Montrons que :
$𝜌 \vdash $ if e then (c; while e do c) else skip
$ ⟹ 𝜌’$
- Cas 1 : si $⟦e⟧𝜌 ≠0$ :
Alors on a l’arbre de preuve suivant (while):
⋯ | ⋯ |
---|---|
$𝜋_1$ | $𝜋_2$ |
$𝜌\vdash c ⟹ 𝜌’’$ | $𝜌’‘\vdash $ while e do c $⟹ 𝜌’$ |
$𝜌\vdash $ while e do c $⟹ 𝜌’$ |
on veut avoir :
⋯ |
---|
$𝜌\vdash $ (c; while e do c) $⟹ 𝜌’$ |
$𝜌\vdash $ if e then (c; while e do c) else skip $⟹ 𝜌’$ |
Or, avec (Seq) :
⋯ | ⋯ |
---|---|
$𝜌\vdash c ⟹ 𝜌’’$ | $𝜌’‘\vdash $ while e do c $⟹ 𝜌’$ |
$𝜌\vdash $ (c; while e do c) $⟹ 𝜌’$ |
Donc
⋯ | ⋯ |
---|---|
$𝜌\vdash c ⟹ 𝜌’’$ | $𝜌’‘\vdash $ while e do c $⟹ 𝜌’$ |
$𝜌\vdash $ (c; while e do c) $⟹ 𝜌’$ |
|
$𝜌\vdash $ if e then (c; while e do c) else skip $⟹ 𝜌’$ |
- Cas 2 : si $⟦e⟧𝜌 =0$ :
Alors on a l’arbre de preuve suivant (while_fin):
$𝜌\vdash $ while e do c $⟹ 𝜌’$ |
on veut avoir (if_2) :
⋯ |
---|
$𝜌\vdash $ skip $⟹ 𝜌’$ |
$𝜌\vdash $ if e then (c; while e do c) else skip $⟹ 𝜌’$ |
ce qui force $𝜌 = 𝜌’$
Or, avec (Skip) :
$𝜌\vdash skip ⟹ 𝜌$ |
Donc on peut conclure.
2.
Ce sont les programmes qui ne terminent jamais.
3.
1.
Par récurrence sur le max $h$ des hauteurs des deux arbres de preuve de $𝜌\vdash c ⟹ 𝜌_1$ et $𝜌\vdash c ⟹ 𝜌_2$
-
Initialisation : si $h=1$ : on dans un des cas de base :
- Cas des base : $skip$,
:=
, ou $while_{fin}$
- Cas des base : $skip$,
-
Hérédité :
- On ne fait que le
while
, par exemple :- il suffit de remarquer que, comme $c$ est le même dans les deux arbres, les avant-dernières formules sont contraintes
- puis : on applique l’hypothèse d’induction à $𝜌’_1$, $𝜌’_2$ pour obtenir $𝜌’_1 = 𝜌’_2$
- puis : de même, hypothèse d’induction à $𝜌_1$ et $𝜌_2$ pour en déduire l’égalité.
- On ne fait que le
2.
On ajoute deux règles :
$𝜌\vdash c_1 ⟹ 𝜌’$ |
---|
$𝜌\vdash c_1 ∨ c_2 ⟹ 𝜌$ |
et
$𝜌\vdash c_2 ⟹ 𝜌’$ |
---|
$𝜌\vdash c_1 ∨ c_2 ⟹ 𝜌$ |
Leave a comment