Méthode B
Méthode B
Méthode B
Substitution généralisée
Les plus faibles préconditions
Soient P et R des prédicats et S une instruction
• P{S}R [Logique de Hoare ]
Le prédicat R décrit le résultat de l’opération S.
Le prédicat P représente un ensemble d'états tels que l'exécution de S
commençant par un d'entre eux se termine en un temps fini dans un
état satisfaisant R.
• Exemple : S est l'affectation i:=i+1, et R le prédicat i<=1.
Donnez un prédicat P vérifiant P{S}R :
i<=-10, mais aussi i<-4...
Parmi tous ces prédicats, le plus faible (le moins contraignant, le prédicat
donnant le plus d'états...) est i<=0.
Ce prédicat sera appelé la plus faible précondition de S par rapport à
R. On le notera wp(S,R) pour 'weakest precondition‘.
Exercices :
• wp(i:=i + 1, i<=1) = ?
2- wp(S, R) est la plus faible des telles préconditions, c'est à dire que :
• [S]P est la condition initiale la plus large pour que, après avoir
“exécuté” S, P devienne vrai.
2 remarques importantes :
• [n:=n+3]n>2 ≡ n>-1
• [n:=n+3]n>7 ≡ n>4
• [n:=n+3]n2>9 ≡ (n+3)2>9
Plus généralement :
=> Sémantique de S
Syntaxe : x:=e
Exemple :
[n:=3] n>m ≡ ?
[i:=i+1] i<=1 ≡ ?
• ATTENTION !
n>0 ⇒ ∀n.∃m.m>=n
[n:=m+1]P ≡ ?
• Syntaxe : x1,x2:=e1,e2
Exemple : [x,y:=y,x]x=y ≡ ?
Ne fait rien.
• Syntaxe : skip
• Sémantique : [skip]P ≡ P
• Syntaxe : S1;S2
[x:=y;y:=x]x=y ≡ ?
[x,y:=y,x]x=y ≡ ?
Exemples :
IF x ∈ { 2, 4, 8 } THEN x := x / 2 END ;
IF y + z < 0 THEN y := - z ELSE y := 0 END ;
Exemple :
CHOICE
x1 := x1 + 1
OR
x1 := x1 - 1
END
• x1,x2:=e1,e2 ≡ x2,x1:=e2,e1
Syntaxe :
Rappel :