Académique Documents
Professionnel Documents
Culture Documents
Preuve axiomatique
Vérification de modèles
Cinquième partie
TLA+– la logique
Systèmes de transitions 1 / 23
LTL et TLA+
Logique TLA+
Preuve axiomatique
Raffinage
Vérification de modèles
Plan
1 LTL et TLA+
Logique TLA+
Raffinage
2 Preuve axiomatique
3 Vérification de modèles
La logique TLA+
Expressions logiques
Expressions de LTL avec 2, 3, ; (leads-to) et variables primées
+ quantificateurs ∀, ∃.
Pas de U mais :
2(p ⇒ (pWq)) = 2(p ⇒ (p 0 ∨ q))
2(p ⇒ (pUq)) = 2(p ⇒ (p 0 ∨ q)) ∧ 2(p ⇒ 3q)
Équité / Fairness
enabled
enabled A est la fonction d’état qui est vraie dans l’état s ssi il
existe un état t accessible depuis s par l’action A.
Weak/Strong Fairness
WFe (A) = 23¬(enabled hAie ) ∨ 23hAie
∆
I ∧ 2[N ]v ∧ E
Raffinage de programme
Raffinage simple
Un programme (concret) Pc raffine un programme (abstrait) Pa si
Pc ⇒ Pa : tout ce que fait Pc est possible dans Pa.
Raffinage – exemple
Somme abstraite
module somme1
extends Naturals
constant N
variable res
∆
TypeInvariant = res ∈ Nat
∆
Init = res = 0
∆
Next = res 0 = ((N + 1) ∗ N) ÷ 2
Spec = Init ∧ 2[Next]res ∧ WFres (Next)
∆
Raffinage – exemple
Raffinage – exemple
Raffinage – exemple
Graphe des exécutions pour N = 3
res = 0 res = 0
acc = 1 / acc = 3
disp = {2, 3} disp = {3}
; <
" !
res = 0 res = 0 res = 0 res = 0
acc = 0 / acc = 2 acc = 4 / acc = 6 / res = 6
disp = {1, 2, 3} disp = {1, 3} disp = {2} disp = {}
< =
# "
res = 0 res = 0
acc = 3 / acc = 5
disp = {1, 2} disp = {1}
Raffinage – exemple
Raffinage – exemple
Somme concrète
module somme3
extends Naturals
constant N
variable res, acc, i
∆
TypeInvariant = res ∈ Nat ∧ acc ∈ Nat ∧ i ∈ 1 . . N
∆
Init = res = 0 ∧ acc = 0 ∧ i = N
∆
Next = ∨ i > 0 ∧ acc 0 = acc + i ∧ i 0 = i − 1 ∧ unchanged res
∨ i = 0 ∧ res 0 = acc ∧ unchanged hi, acci
Spec = Init ∧ 2[Next]hres, i, acci ∧ WFhres, i, acci (Next)
∆
Raffinage – exemple
Raffinage – exemple
Plan
1 LTL et TLA+
Logique TLA+
Raffinage
2 Preuve axiomatique
3 Vérification de modèles
F prouvable en
logique propositionnelle F ⇒G
stl1 stl4
2F 2F ⇒ 2G
stl2 stl3
2F ⇒ F 22F = 2F
stl5 stl6
2(F ∧ G ) = (2F ) ∧ (2G ) 32F ∧ 32G = 32(F ∧ G )
P ∧ (v 0 = v ) ⇒ P 0 P ∧ [A]v1 ⇒ Q ∧ [B]v2
tla1 tla2
2P = P ∧ 2[P ⇒ P 0 ]v 2P ∧ 2[A]v1 ⇒ 2Q ∧ 2[B]v2
I ∧ [N ]v ⇒ I 0
inv1 inv2
I ∧ 2[N ]v ⇒ 2I 2I ⇒ (2[N ]v = 2[N ∧ I ∧ I 0 ]v )
P ∧ [N ]v ⇒ (P 0 ∨ Q 0 )
P ∧ hN ∧ Aiv ⇒ Q 0
P ⇒ enabled hAiv
WF1
2[N ]v ∧ WFv (A) ⇒ (P ; Q)
P ∧ [N ]v ⇒ (P 0 ∨ Q 0 )
P ∧ hN ∧ Aiv ⇒ Q 0
2P ∧ 2[N ]v ∧ 2F ⇒ 3enabled hAiv
SF1
2[N ]v ∧ SFv (A) ∧ 2F ⇒ (P ; Q)
2(P ⇒ 2P) ∧ 3P P ;Q ∧Q ;R
ldstbl trans
32P P;R
∀m ∈ W : (P(m) ; Q)
infdij
(∃m ∈ W : P(m)) ; Q
Plan
1 LTL et TLA+
Logique TLA+
Raffinage
2 Preuve axiomatique
3 Vérification de modèles
Vérification de modèles
Principe
Construire le graphe des exécutions et étudier la propriété.
Complexité
Vérificateur TLC