Nousavons hoisid'exprimerlesspé i ationsdesfon tionssousformede ouplesdepre/post
[Hoa69℄.
L'expressiondesspé i ationssousformepre/postaétéprivilégiéepourdiérentspoints:
le otésimpled'appréhensiond'untelformatd'expression(danslesens ara térisationd'un
sous-domaineenentréeasso ié àun omportementpré is),
la simpli ité d'expression (nousaurions pu opterpar exemple pour les spé i ations algé-
briquesmaisnouslesavonsjugéplus omplexespourl'utilisateur)et
le point de vue outillage (le rle de haque partie de ontraintes des pre/post est laire-
ment déni : valeursinterdites, ara térisationdu sous-domaineen entrée, ara térisation
entrées/sorties).
Leformatdesspé i ations hoisimanipuledesformulesdenotrelangage
L
.Avant d'aller dans le détail, nous allons donner deux illustrations du type de spé i ation
Parexemple,prenonslafon tion
valAbs(X) = Y
avep1(X) = x
etp1(Y ) = y
al ulantlavaleurabsolued'unnombredeprol:
valAbs(x) = (y)
lafon tion
valAbs
est totaleet deuxsous-domainesenentréedelafon tionpeuventêtredistingués:
(x < 0)
(x ≥ 0)
et pour haque sous-domaine orrespondun omportement pré is de lafon tion (en respe tant
l'ordrepré édentdesous-domainesenentrée:
(y = −x)
(y = x)
Illustration 24
Sinousprenonsen orel'exempledelafon tion
div(x1, x2) = (y)
lavaleurnullepour
x2
estinterdite:(x26= 0)
La fon tion ne possède pas de omportement parti ulier pour de sous-domainesen entrée et le
omportementensortiedelafon tionvérie:
(y = x1/x2)
ave
p1(X) = x1
,p2(X) = x2
etp1(Y ) = y
Nous avons don besoin de ara tériser les ontraintes de bonne utilisation d'une fon tion, de
ara tériserlessous-domainesenentréeasso iéàun omportementdonnédelafon tionetenn
de ara tériser es omportements.
Chaquepré onditiond'unefon tion représenteunensemble de ontraintes(pouvantêtre des
onjon tionset/oudisjon tionsde ontraintes)àrespe terparl'utilisateurpourunbonfon tion-
nementdelafon tion ara térisantledomainededénitiondelafon tionetlespost onditionsles
ontraintesquelafon tiondoitrempliraprèsexé ution.Ceformatàl'avantaged'êtrerapidement
ompréhensibleparl'utilisateur,deplusils'agitd'unformat ourammentutilisé quipermetune
identi ationpré isedes hangementsd'états.
Définition 3.4.1
Lespré onditionsd'unefon tionfdeprol
f (X) = Y
sontunensembledepropriétéspor-tant surlesvariables de
X
.Nousnoterons la onjon tion despré onditions d'unefon tionP re(f, X)
.Ledomaine ara tériséparlespré onditionssedénit ommeDom(P re(f, X)) = {(a1. . . an)|M |=ν
P re(f, X)}
ave
ν
interprétationuniquesurM
telleque∀i, 1 ≤ i ≤ n, ν(xi) = ai
avexi= pi(X)
pourDom(P re(f, X)) = Def (f )
.Le non respe t de l'ensemble des ontraintes des pré onditions d'une fon tion orrespond à
unevaleurnondénie
U ndef
etl'appli ationd'unefon tionsurunevaleurnondénie orrespondàunrésultatnondéni.
Les post onditions traduisent le omportement attendu de la fon tion et permettent
d'exprimerlespropriétéssurlessortiesprévues.
Nousavons hoisi ommeformatd'expressiondespost onditionsleformatsuivant:
(1)P ost(f, X, Y ) : (D(f, X) ∧ Q(f, X, Y ))
ar il est fa ilement ompréhensible par l'utilisateur :
D(f, X)
détermine un sous-domaine enentrée de la fon tion et
Q(f, X, Y )
dénit le omportement attendu pour e sous-domaine parl'expressiondes propriétés à vérier pour
X
etY
. Il est toutefois possibleque la post onditionsoitexpriméeselonleformatsuivantplusgénéral:
(2)P ost(f, X, Y ) : Q(f, X, Y )
dans e as,les ontraintes expriméespar
Q(f, X, Y )
s'appliquentsur latotalité dudomaine dedénitiondelafon tion.
Définition 3.4.2
Les post onditions d'une fon tion ftelleque
f (X) = Y
sont unensemble de propriétésP ost(f, X, Y )
surlesentréesetlessorties def
dontledomaine sedénit omme :Dom(P ost(f, X, Y )) = {(a1. . . an)|∃b1. . . bmM |=ν
P ost(f, X, Y )}
ave
ν
interprétation uniquesurM
telleque∀i, 1 ≤ i ≤ n, ν(xi) = ai
Notonsquenousnouslimitonsi iaux asoù
Q(f, X, Y )
estuneexpressionfon tionnelledeY
enfon tionde
X
i.e.quin'induitpasde ontraintessupplémentairessurX
parrapportàD(f, X)
soit:
Dom(P ost(f, X, Y )) = Dom(D(f, X))
La se onde partie d'une post ondition,
Q(f, X, Y )
, dénit le omportement attendu de lafon tiondansle odomainedelapost ondition:
CoDom(P ost(f, X, Y )) = {(b1. . . bm)|∃a1. . . an
∈ Dom(P ost(f, X, Y )), M |=νP ost(f, X, Y )}
ave
ν
interprétationuniquesurM
telleque∀i, 1 ≤ i ≤ n, ν(xi) = ai
∀j, 1 ≤ j ≤ m, ν(yj) = bi
toujoursave
xi= pi(X)
pourX
àn
omposantesetyj= pj(X)
pourY
àm
omposantes.Pourune fon tionftelleque
f (X) = Y
, lespré onditionsP re(f, X)
et haquepost onditionP osti(f, X, Y )
peuvent être représentées par analogie au triplet de la logique de Hoare sous laforme:
ave
P osti(f, X, Y ) = (Di(f, X) ∧ Qi(f, X, Y ))
. LesensintuitifdutripletdeHoarepré édentestquesi
X
vérieP re(f, X) ∧ Di(f, X)
alorsf
setermineet àl'issue del'exé utiondef
,X
etY
vérient
Qi(f, X, Y )
.P re(f, X)
etP osti(f, X, Y )
sontdesformules universellementquantiéesdansL
et respe ti-vementsur
X
etX ∪ Y
.Nousnoteronsun ouplepre/post
P Pi(f, X, Y )
d'unefon tionf
telle quef (X) = Y
P Pi(f, X, Y ) : P re(f, X) ∧ Di(f, X)[f (X) = Y ]Qi(f, X, Y )
P Pi(f, X, Y ) = P re(f, X) ∧ Di(f, X), Qi(f, X, Y )
Convention 1
Pourallégerunpeulesnotations,
Dom(f )|P re(f,X)∧D
i(f,X)
seranotéDom(P re(f, X) ∧ Di(f, X))
.Le support d'un ouple pre/post
P Pi(f, X, Y )
,Dom(P Pi(f, X, Y ))
et son odomaine,CoDom(P Pi(f, X, Y ))
sontdénis omme:Dom(P Pi(f, X, Y )) = Dom(P re(f, X)) ∩ Dom(P ost(f, X, Y ))
= Dom(P re(f, X)) ∩ Dom(Di(f, X)
CoDom(P Pi(f, X, Y )) = CoDom{(b1. . . bm)|∃(a1. . . an) ∈ Dom(P Pi(f, X, Y )), M |=ν
Qi(f, X, Y )}
L'interprétationd'un ouplepre/postdansnotremodèlevérie:
P PiM(f, X, Y ) =
{(a1. . . an, b1. . . bm)|
(a1. . . an) ∈ Dom(P Pi(f, X, Y )), (b1. . . bm) ∈ CoDom(P Pi(f, X, Y )),
M |=ν
P re(f, X) ∧ Di(f, X) ∧ Qi(f, X, Y )}
ave
ν(xi) = ai
etν(yi) = bi
.Laspé i ationdelafon tionf,notée
Spec(f, X, Y )
orrespondàunensemblenide ouplespre/postpourf:
Spec(f, X, Y ) : {P Pi(f, X, Y )}i∈I
ave
I
unensembled'entiersnaturelsborné.Remarque(s) 11
Les domaines des diérents ouples pre/post d'une fon tion
f
sont aussi appelés les diérentsdomainesfon tionnelsdelafon tion
f
.Ils'agitdesous-domainesdesvaleursdesvariablesd'entréeUn domaine fon tionnel
DFi
orrespond ausupport d'un ouple pre/postde la spé i-ationtelque: