Vous êtes sur la page 1sur 62

Introduction la Smantique Oprationnelle

( grands pas)
M.V. Aponte
Anne 2007/2008
Smantique : Quest-ce ?
Smantique : Etude du sens des units linguistiques et de leur
composition. [Petit Larousse, 1994]
Chane de
caractres
analyse lexicale

analyse syntaxique
Arbre de syntaxe
abstraite (AST)
Associer une signication un programme partir de son
AST.
Smantique : Quest-ce ?
Smantique dun langage : dnition prcise, non ambigu et
indpendante de limplantation, de la signication des
constructions de ce langage
quelle valeur nous dcidons de donner une expression ?
quel effet nous dcidons dattribuer une instruction ?
Smantique formelle dun langage : exprime dans un
formalisme mathmatique
Syntaxe vs Smantique
Exemple de la logique:
Syntaxe: x N successeur (x) =0
Smantique: tous les nombres naturels ont un successeur
diffrent de zro
Exemple dun langage de programmation:
Syntaxe:
z:=x; x:=y; y:=z;
est form de 3 instructions daffectation spares par des ;
Smantique:
changer les valeurs des variables x et y en donnant z la
dernire valeur de y
Smantique : Pourquoi ?
Garantir certaines proprits vries par les programmes ...
augmenter la conance que lon peut avoir dans les
programmes.
spcication dun compilateur pour un langage donn ...
raisonnement sur les proprits attendues du langage
comme par exemple le dterminisme de lexcution des
instructions
Smantique : Pourquoi ?
raisonnement sur les proprits des programmes:
Equivalence de programmes ... utile pour transformer un
programme en un programme quivalent mais plus efcace
Terminaison de programmes
Non-modication par un programme des valeurs contenues
des adresses sensibles de la mmoire
...
gnration doutils
Smantique : Comment ? (1)
Smantique dynamique : description du comportement (i.e.,
lexcution) de tous les programmes, y compris ceux dont
lexcution provoque une erreur.
Plusieurs manires de formaliser sa description:
smantique oprationnelle
smantique dnotationnelle
smantique axiomatique
Smantique oprationnelle
Le sens dune construction est donn par les calculs induits
lors de son excution par une machine. On sintresse la
manire dont se font les calculs.
Le sens dun programme est donn par la squence dtats
succssifs dune machine qui lexcute.
Programme = Systme de transitions entre tats
Smantique oprationnelle(2)
Exemple:
P1: a:=1; b:=0;
P2: a:=1 /
*
un commentaire
*
/; b:=0;
P3: b:=0; a:=1;
P1 et P2 sont (du point de vue de la smantique
oprationnelle) smantiquement quivalents.
P1 nest pas quivalent P3.
Remarque: Deux programmes qui ne sont pas
oprationnellement quivalents peuvent aboutir au mme tat
nal.
Smantique Dnotationnelle
(vision fonctionnelle)
Le sens dune construction est modlis par un objet
mathmatique qui reprsente leffet de son excution sur ltat
du programme.
programme = fonction mathmatique
On sintresse leffet dun programme et non la manire de
lexcuter.
non dvelopp ici
Smantique Dnotationnelle(2)
Exemple: P1, P2 et P3 comme avant.
P4: a:=1; b:=1;
P1, P2 et P3 sont dnotationnellement quivalents, mais ils ne
sont pas quivalents P4.
Exercice: Quelles quivalences pour ces trois programmes?
P1: z:=x; x:=y; y:=z;
P2: z:=y; y:=x; x:=z;
P3: z:=y; y:=x; x:=z; z:=y;
Smantique Axiomatique
Des proprits spciques portant sur leffet dexcuter un
programme sont inseres sous forme dassertions.
Certains aspects de lexcution sont dliberemment ignors:
on sintresse aux proprits de correction partielle par rapport
des prconditions et post-conditions:
si ltat initial dun programme satisfait la prcondition, la
proprit de correction partielle garantit que ltat nal satisfait
la postcondition.
Smantique Axiomatique(2)
programme = transformateur de proprits logiques
PProgQ
Exemple:
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
sont tous quivalents.
Smantiques Oprationnelles
Deux sortes de formulations:
Smantique oprationnelle petits pas: description assez
ne de lexcution. Non tudie ici.
Smantique naturelle ou grands pas: cache un peu plus
de dtails de lexcution.
Composantes dune Smantique Oprationnelle
(a) Une syntaxe: ce sont les constructions textuelles
auxquelles on attachera un sens.
(b) Une proprit smantique particulire: que lon veut
caractriser pour la syntaxe.
(c) Un calcul: une description de la manire de calculer la
proprit smantique pour nimporte quelle construction
de la syntaxe.
Composantes: une syntaxe
Les constructions textuelles auxquelles on veut attacher un
sens.
Exemple: le langage des expressions arithmtiques sur les
constantes et variables entires: 3, x+7, ...
eA := num
n
| x
| eA
1
+ eA
2
| eA
1
eA
2
| eA
1
eA
2
| eA
1
/eA
2
num
n
et x sont des mta-variables pour les numraux et les
variables. Autrement dit, num
n
reprsente nimporte quel
numral du langage dcrit par la grammaire de numraux,
alors que x reprsente un identicateur quelconque dcrit par
la grammaire des variables.
Composantes: une proprit smantique
Cest la proprit particulire que lon veut caractriser pour la
syntaxe.
Exemples:
Valeur: dune expression arithmtique quelconque.
Type: dune expression arithmtique quelconque.
Nombre daccs mmoire: dune expression arithmtique
quelconque.
etc.
Composantes: un calcul
Une description de la manire de calculer la proprit
smantique pour nimporte quelle construction de la syntaxe.
Exemples:
Valeur:
Valeur dun numral num
n
: le nombre entier n
correspondant,
Valeur dune variable x: sa valeur en mmoire,
etc..
Type dune constante num
n
: int, etc...
Nombre daccs mmoire: dune constante n: 0, etc...
Pour que cette description soit complte, on doit prvoir au
moins un cas de calcul de la proprit, pour chaque cas de la
syntaxe.
Systmes dinfrence
Dans une smantique oprationnelle, les calculs des
proprits sont dcrits avec des systmes dinfrence.
Ils servent dduire une proprit particulire pour les
constructions syntaxiques dun langage. Les dductions dans
ces systmes sont appeles jugements. Ils correspondent au
rsultat dduit pour la proprite tudie.
Un jugement
Un jugement a la forme:
< C, >r
C est la construction syntaxique traite, est un ensemble
dhypothses sur les variables dans C, et r est le rsultat
obtenu pour la proprit tudie.
On peut lire ce juegement: le rsultat de la proprite tudie
pour la construction C et suivant les hypothses dans est r.
Jugements
Exemples:
Si la syntaxe tudie est celle des expressions arithmtiques,
et la proprit caractriser, leur valeur, la valeur de la
constante 3 est tablie par le jugement:
< 3, >3
Exemples de jugements
Supossons que reprsente lensemble des valeurs en
mmoire pour chacune des variables dans lexpression
tudie. Si = [x 5], alors
< x + 3, >8
Exemple: Si la proprit tudi est le type, on pourrait tablir
des jugements tels que:
< 3, >int
ou
< x + 3, [x oat ] >oat
Systmes dinfrence
Compos de:
Un ensemble de rgles dinfrence: ce sont des jugements
avec premises: ils sont vrais si toutes les premises sont
vraies.
Un ensemble daxiomes: ce sont des jugements sans
premises: ils sont toujours vrais.
Rgles dinfrence
Ce sont des jugements avec premises: ils sont vrais si toutes
les premises sont vraies.
(R)
j
1
j
2
j
n
j
R est le nom de la rgle
j
1
, , j
n
: prmises qui doivent tre satisfaites pour que
le jugement conclusion j soit satisfait.
Axiomes
Ce sont des jugements sans premises: ils sont toujours vrais.
(A)
j
A est le nom de laxiome
Le jugement j est toujours satisfait.
Exemple: smantique des expressions arithmtiques
La syntaxe: (rappel)
eA := num
n
| x
| eA
1
+ eA
2
| eA
1
eA
2
| eA
1
eA
2
| eA
1
/eA
2
E
A
est lensemble des termes de ce langage.
Les jugements (en francais):
le sens dune expression eA est celle de son rsultat
numrique. Plus prcisement, du rsultat des oprations
quelle nonce, en tenant compte des valeurs des variables en
mmoire au moment de lvaluation.
valuer eA dans ltat courant de la mmoire n
Un tat de la mmoire
Il donne pour chaque variable, sa valeur courante. On le
modlise par une fonction (partielle) des variables vers leurs
valeurs:
: Var Z
La valeur dune variable x dans un tat est not (x).
Lorsque seules quelques variables nous intressent, nous
noterons = [x 5, y 2] pour ltat o (x) = 5, et
(y) = 2, et o la valeur pour tout autre variable nous est
indiffrente.
Jugement pour lvaluation dune expression
Evaluer une expression a E
A
dans ltat mmoire donne le
rsultat r :
'a, ` r
Exemple:
'x + 2, [x 5]` 7
Le couple 'a, ` form dune construction de la syntaxe et dun
tat dvaluation est nomm conguration.
Rgles dvaluation
(A
n
)
'num
n
, ` n
(n Z) (V
ar
)
'x, ` (x)
(x dom())
(A
dd
)
'a
1
, ` n
1
'a
2
, ` n
2
'a
1
+ a
2
, ` n
1
+ n
2
(M
ul
)
'a
1
, ` n
1
'a
2
, ` n
2
'a
1
a
2
, ` n
1
n
2
(S
ous
)
'a
1
, ` n
1
'a
2
, ` n
2
'a
1
a
2
, ` n
1
n
2
(D
iv
)
'a
1
, ` n
1
'a
2
, ` n
2
'a
1
/a
2
, ` n
1
/n
2
(n
2
= 0)
a
1
, a
2
, . . . E
A
Condition dans toutes les rgles: (n, n
1
, n
2
. . . Z)
Meta-variables et instances
Dans
(A
dd
)
'a
1
, ` n
1
'a
2
, ` n
2
'a
1
+ a
2
, ` n
1
+ n
2
a
1
et a
2
sont des mta-variables pouvant tre remplaces par
des expressions quelconques du langage E
A
. Idem pour n
1
, ,
. . .
Lorsque lon remplace les mta-variables dune rgle par des
termes du langage, on obtient une instance de la rgle.
(A
dd
)
'x, [x 5]` 5 '2, [x 5]` 2
'x + 2, [x 5]` 5 + 2
est une instance de la rgle Add.
Interprtation des numraux et symboles
Dans les rgles:
(A
n
)
'num
n
, ` n
(n Z) (A
dd
)
'a
1
, ` n
1
'a
2
, ` n
2
'a
1
+ a
2
, ` n
1
+ n
2
num
n
et a
1
+ a
2
sont des morceaux de syntaxe, alors que
n, n
1
, n
2
sont des valeurs entires. La diffrence est importante.
Dun cot, nous avons du texte, de lautre, des objets
mathmatiques correspodant au sens, ou interprtation pour ce
texte.
Interprtation des numraux et symboles(2)
Il est possible de rendre compte de cette distinction de manire
explicite au sein de nos rgles.
La fonction dinterprtation [[]] prend en argument un morceau
de la syntaxe et donne en rsultat lobjet mathmatique qui
correspond son interprtation:
[[num
n
]] donne en rsultat lentier n correspondant au
numral num
n
,
[[+]] dsigne loprateur daddition habituel sur les entiers,
. . .
Interprtation des numraux et symboles(3)
Nous pouvons alors noncer des rgles plus prcises:
(A
n
)
[[num
n
]] = n
'num
n
, ` n
(n Z) (A
dd
)
'a
1
, ` n
1
'a
2
, ` n
2
'a
1
+ a
2
, ` n
1
[[+]]n
2
Cela alourdit considrablement les notations. En gnral,
aprs avoir souslign la diffrence entre un morceau de
syntaxe + et son interprtation [[+]], on prfre laisser cette
distinction implicite dans les notations.
Nous ne changeons doc pas nos rgles...
Exemple dvaluation
Avec ce systme dinfrence, et sachant que est t.q.
(x) = 2, pouvons nous conclure '(2 3) + x, ` 8 ?
Nous allons construire un arbre de drivation pour ce jugement:
la racine: est le jugement que nous souhaitons obtenir en
conclusion '(2 3) + x, ` 8,
les noeuds: sont les jugements premisses, ainsi que les
instances des rgles nous permettant dobtenir chaque
conclusion intermdiaire ou nale.
les feuilles: sont ncessairement des instances daxiomes.
Arbre de drivation dune valuation
: tat tel que (x) = 2
'(2 3) + x, ` 8 ?
(A
dd
)
(M
ul
)
(A
n
)
'2, ` 2
(A
n
)
'3, ` 3
'2 3, ` 6
(V
ar
)
'x, ` 2
'(2 3) + x, ` 8
Chaque noeud (jugement) a pour ls les jugments qui lui sont
ncessaires en tant que premisses. Il est tiquett par le nom
de la rgle ayant permi dobtenir ce jugement. Les feuilles sont
des instances daxiomes.
Arbre de drivation = Preuve
Cet arbre de drivation est une
preuve de validit du jugement '(2 3) + x, [x 2]` 8
dans le systme dinfrence que nous avons nonc.
Conclusion : '(2 3) +x, [x 2]` 8 est un thorme pour la
smantique donne.
Et les jugements qui ne sont pas des thormes? Ceux pour
lesquels il nexiste pas darbre de drivation permettant de les
conclure. Exemple: '(2 + 3), ]` 8
Smantique oprationnelle dvaluation grands pas
Dcrire le processus dvaluation laide de systmes
dinfrence dont les rgles portent sur des jugements
exprimant quune valeur v Z est le rsultat de lvaluation
dune expression a E
A
tant donne une valuation 1[Z] :
'a, ` v
Caractriser un sous-ensemble des jugements de la forme
'a, ` v qui sont corrects dun point de vue smantique : il
sagit de lensemble des thormes dun systme dinfrence.
Exemples
'3 + 2, ` 5 est un thorme
'3 + 2, ` 1 nest pas un thorme, il sagit dun jugement
syntaxiquement correct mais smantiquement erron
Notre smantique oprationnelle: bilan
Ce que nous avons fait:
caractriser les congurations pour les expressions
arithmtiques smantiquement correctes du point de vue
de leur valuation, i.e., pouvant tre values,
caractris leur valeur,
impos un ordre dvaluation pour leurs sous-expressions
Nous obtenons une description prcise de la valeur de
nimporte quelle conguration dexpression arithmtique
smantiquement correcte. Nous pouvons en dduire un
algorithme dvaluation.
Notre smantique oprationnelle: bilan (2)
Ce que nous navons pas fait:
caractriser de facon prcise les congurations rrones:
que se passe-t-il si nous ne sommes pas capables
dobtenir une drivation, est-ce parce quelle nexiste pas,
ou parce que nous ne savons pas faire?
caractrisr le rsultat obtenu si lon tente dvaluer une
conguration rrone.
Notre algorithme sait-il dcider si une conguration nest pas
smantiquement correcte? Que se passe-t-il si cela survient au
milieu dune valuation?
Nous devrons ajouter les erreurs!
Une proprit dans notre smantique: lquivalence
Caractriser les expressions arithmtiques smantiquement
quivalentes: qui svaluent la mme valeur.
a
1
a
2
(v VA 1[Z] 'a
1
, ` v 'a
2
, ` v)
a
1
et a
2
sont quivalentes si indpendamment du contexte
dvaluation elles svaluent dans une mme valeur.
Exemple: x + x 2 x
Technique de preuve
Comme pour toute quivalence, nous devons montrer deux
noncs: si nous supposons valide chaque membre de
lquivalence, cela nous permet den dduire lautre.
Nous devons donc montrer que pour tout tat les deux
noncs suivants sont valides:
(1) Si 'x + x, ` n alors '2 x, ` n,
(2) Si '2 x, ` n, alors 'x + x, ` n.
Technique de preuve (2)
Pour montrer (1) Si 'x + x, ` n alors '2 x, ` n,
nous supposons valide 'x + x, ` n ,
nous construisons un arbre de preuve pour ce jugement,
nous rutilisons des sous-arbres de cette drivation an
dobtenir une preuve (drivation) pour '2 x, ` n
et nous laissons la preuve du rciproque en exercice...
Expressions arithmtiques quivalentes
Si (1) : 'x + x, ` n, alors:
(A
dd
)
(V
ar
)
'x, ` (x)
(V
ar
)
'x, ` (x)
'x + x, ` (x) + (x)
o (x) + (x) = n. En rutilisant le sous-arbre (Var), on peut
construire larbre :
(M
ul
)
(A
n
)
'2, ` 2
(V
ar
)
'x, ` (x)
'2 x, ` 2 (x)
qui est une preuve pour '2 x, ` 2 (x). Mais, puisque
2 (x) = (x) + (x) = n, on a bien une preuve de
'2 x, ` n.
La rciproque (2) est laisse en exercice.
Un mini-langage impratif: While
Syntaxe:
c := skip [ x := a [ c
1
; c
2
[ if b then c
1
else c
2
[ while (b) do c
a := num
n
[ x [ a
1
+ a
2
[ a
1
a
2
[ a
1
a
2
[ a
1
/a
2
[ (a
1
)
b := true [ false [ a
1
a
2
[ a
1
= a
2
[ not b
1
[ b
1
or b
2
[ b
1
and b
2
a, a
1
. . . E
A
dsignent les expressions arithmtiques
b, b
1
. . . E
B
ensembles des expressions bolennes
c, c
1
. . . E
C
ensemble des instructions du langage While
Exemples pour la syntaxe
Instruction de calcul du PGCD:
while (not (x = y)) do if x y then y := y x else x := x y
Expression bolenne: not (x = 0 and x (7/z))
Smantique des expressions boolennes
Mme dmarche quavec les expressions arithmtiques.
Les jugements: 'b, ` t o:
b E
B
est une construction syntaxique pour les
expressions bolennes,
t B est une valeur de vrit dans lensemble
B = true, false
et quon lit: une expression boolenne b svalue en une valeur
t B tant donne une valuation .
Interprtation des constantes et oprateurs
Interprter une expression boolenne cest lui donner une
valeur appartenant B avec B = true, false.
t IB est interprt par lui-mme : [[true]] = true et
[[false]] = false
=, interprts par les oprateurs habituels.
[[ or ]]
=

[[ and ]]
=

[[not ]]
=

Systme dinfrence
(B
=
)
'a
1
, ` n
1
'a
2
, ` n
2
'a
1
= a
2
, ` (n
1
= n
2
)
(B

)
'a
1
, ` n
1
'a
2
, ` n
2
'a
1
a
2
, ` (n
1
n
2
)
(B
c
)
't , ` t
t B (B

)
'b
1
, ` v
1
'b
2
, ` v
2
'b
1
and b
2
, ` v
1
v
2
(B

)
'b
1
, ` v
1
'b
2
, ` v
2
'b
1
or b
2
, ` v
1
v
2
(B

)
'b, ` t
'not b, ` (t )
Pour toutes les rgles avec occurrences de n
1
, n
2
, : n
1
, n
2
Z
Expressions et changements dtats
Nous avons dni les tats:
: Var Z
an de donner des valeurs aux variables entires prsentes
dans une expression:
Soit = [x 5] alors 'x + 2, ` 7
Si nous retraons en rouge lvolution des tats:
[x 5] x + 2 7 [x 5]
ltat avant valuation de lexpression est = [x 5]
ltat aprs valuation ne change pas.
Expressions, instructions et changements dtat
Effet dune instruction: Un programme impratif ralise des
affectations: les valeurs des variables en mmoire sont
modis:
(tat avant) = [x 5] x := x+1 [x 6] =
1
(tat aprs)
tat avant valuation = tat aprs valuation
Effet dune expression: ne change pas ltat courant de la
mmoire: elle linspecte.
(tat avant) [x 5] x + 1 7 [x 5] (tat aprs)
Instructions et changements dtat
Le rle dun programme c est de modier ltat courant
1
de la
mmoire en un tat
2
:
'c,
1
`
2
Lexcution de linstruction c dans ltat
1
conduit ltat
2
.
Nous dcrivons lexcution dune instruction par le changement
dtat quelle provoque.
Changement dtat: [x n](y) =

n si y = x
(y) sinon
Exemple: 'x := 0, ` [x 0]
Smantique oprationnelle de While: jugements
le sens dune expression est celui de caulculer une valeur.
Pour cela on peut avoir besoin dinspecter ltat des
variables,
le sens dune instruction de While est de (possiblement)
modier ltat courant de la mmoire.
Les jugements pour une smantique de While ne cherchent
donc pas calculer une valeur, mais un nouvel tat.
'c,
1
`
2
o c est une instruction de While.
Rgles pour une smantique de While
(C
1
)
'skip, `
(C
2
)
'a, ` n
'x := a, ` [x n]
n Z
(C
3
)
'c
1
, `
1
'c
2
,
1
`
2
'c
1
; c
2
, `
2
(C
4
)
'b, ` true 'c
1
, `
1
'if b then c
1
else c
2
, `
1
(C
5
)
'b, ` false 'c
2
, `
2
'if b then c
1
else c
2
, `
2
(C
6
)
'b, ` false
'while b do c, `
(C
7
)
'b, ` true 'c, `
1
'while b do c,
1
`
2
'while b do c, `
2
Smantique oprationnelle grands pas : exemple
(C
3
)
(C
2
)
(A
n
)
'0, ` 0
'x := 0, `
1
(C
7
)
D
1
D
2
D
3
'while x 0 do x := x + 1,
1
`
2
'x := 0 ; while x 0 do x := x + 1, `
2
o
1
= [x 0],
2
=
1
[x 1]. D
1
et D
2
sont des arbres de
drivation pour 'x 0,
1
` true et 'x := x + 1,
1
`
2
.
D
3
est larbre :
(C
6
)
(B

)
(V
ar
)
'x,
2
` 1
(A
n
)
'0,
2
` 0
'x 0,
2
` false
'while x 0 do x := x + 1,
2
`
2
Effets de bords lors de lvaluation dexpressions
La rgle:
(C
4
)
'b, ` true 'c
1
, `
1
'if b then c
1
else c
2
, `
1
ainsi que (C
5
) ne sont correctes que si lvaluation dune
expression boolenne ne modie pas ltat dans lequel
seffectue lvaluation.
Est-ce le cas avec le langage C? Non:
if (i++ > 0) i=i-1 else i=i+1;
... mme remarque pour toutes les rgles ncessitant
lvaluation dune expression.
Programmes quivalents
Deux programmes c
1
, c
2
sont quivalents, not c
1
c
2
si leur
excution partir dun mme tat initial aboutt dans un tat
nal identique.
c
1
, c
2
E
C
:
c
1
c
2
(,

1[Z] 'c
1
, `

'c
2
, `

)
Exemples :
if b then I else I I
if b then I else skip I
Programmes quivalents: exemples(1)
c; (if b then c

else c

)
?
if b then (c; c

) else (c; c

)
Non. Voici un contre-exemple:
c x := 0
c

x := x + 1
c

x := x + 5
b 1 x
(x) = 2
'c; (if b then c

else c

), `

(x) = 5
'if b then (c; c

) else (c; c

), `

(x) = 1
Programmes quivalents : exemples (2)
Si:
c
1
: (if b then c else c

); c

c
2
: if b then (c; c

) else (c

; c

)
c
1
?
c
2
Pour ,

quelconques, nous construisons un arbre dinfrence


de 'c
1
, `

partir dun arbre de dinfrence de


'c
2
, `

et vice versa.
Programmes quivalents : exemples (3)
Si on dispose dun arbre dinfrence de
'(if b then c else c

); c

, `

, il a forcment t obtenu
partir de la rgle C
3
:
(C
3
)
(C
i
)
.
.
.
'if b then c else c

, `
1
(C
j
)
.
.
.
'c

,
1
`

'(if b then c else c

); c

, `

On distingue alors deux cas (rsultat de lvaluation de b).


Programmes quivalents : exemples (4)
(1) Si b svalue true, alors, partir de larbre :
(C
3
)
(C
4
)
(B
i
)
.
.
.
b, true
(C
j
)
.
.
.
c,
1
if b then c else c

,
1
(C
k
)
.
.
.
c

,
1

(if b then c else c

); c

on peut obtenir larbre :


(C
4
)
(B
i
)
.
.
.
b, true
(C
3
)
(C
j
)
.
.
.
c,
1
(C
k
)
.
.
.
c

,
1

c; c

if b then (c; c

) else (c

; c

),

et vice versa.
Programmes quivalents : exemples (5)
(2) Si b svalue false, alors, partir de larbre :
(C
3
)
(C
5
)
(B
i
)
.
.
.
b, false
(C
j
)
.
.
.
c

,
1
if b then c else c

,
1
(C
k
)
.
.
.
c

,
1

(if b then c else c

); c

on peut obtenir larbre :


(C
5
)
(B
i
)
.
.
.
b, false
(C
3
)
(C
j
)
.
.
.
c

,
1
(C
k
)
.
.
.
c

,
1

; c

if b then (c; c

) else (c

; c

),

et vice versa.
Boucles et Terminaison
Linstruction while permet dcrire des programmes dont
lexcution ne termine pas.
Les arbres dinfrence tant des objets nis, la smantique
oprationnelle grands pas nest pas en mesure de rendre compte
de lexcution des programmes qui ne terminent pas ... contrairement
la smantique oprationnelle petits pas.
Exemple: while true do skip
(C
7
)
(B
c
)
'true, ` true
(C
1
)
'skip, `
(C
7
)
.
.
.
'while true do skip, `

'while true do skip, `

Il nexiste pas dtat

tel que 'while true do skip, `