Professional Documents
Culture Documents
Vrification de modles:
Chap 7
http://w3.uqo.ca/luigi/INF6001/
s0
X=13
s1
X0
X=X/2+1
s2
X>0
s3
Nous pouvons affirmer des proprits pour: Des tats: p.ex. ltat s1, X=13 toujours (invariant) pas besoin de logique temporelle ici
Des excutions, p.ex. x0 ou x0, mais pas x0. Observez que dans ce cas le contrle est sur les transitions.
tat dacceptation .
INF6001 Chap 7
Nous avons une machine dont nous pouvons observer certaines proprits, p.ex.
Solution:
excuter la machine en parallle avec une autre machine qui observe et vrifie ces proprits composition synchrone nous pouvons aussi vrifier une proprit ngative, c.-.-d. que la machine ne satisfait pas une proprit
never automata
3
INF6001 Chap 7
Vrification de modle
Modle vrifier
Composition synchrone
INF6001 Chap 7
Exemple
AB pour vrifier p
s1
Cet AB synchronise avec un autre AB seulement si la proprit p reste toujours vraie, toutes les transitions
INF6001 Chap 7
Il existe un algorithme pour effectuer cette construction, pas discut dans ce cours
Incompltude des AB
LAB de gauche ne considre pas le cas de recevoir un p Ceci simplifie la comprhension et la vrification, car les transitions qui ne conduisent pas au rsultat dsir ne sont pas prises en considration
s1
s1
s2
INF6001 Chap 7
Exemple
AB pour vrifierp
true
s0
s1
Cet AB est prt accepter des transitions o p est faux, mais il est content seulement quand p devient vrai.
INF6001 Chap 7
Exemple
AB pour vrifier que p
(enfin toujours p)
true
s0
s1
true accepte p et autres mais aprs un certain p, il naccepte que des p aprs
INF6001 Chap 7
10
s0
s1
Cet AB montre aussi les limites de lexpressivit des oprateurs , car ce quil exprime (aprs le 1er p, toujours p) nest pas exprimable avec ces oprateurs seulement. faut utiliser U: p U p
INF6001 Chap 7
11
true
s0
q
pUq
s1
INF6001 Chap 7
16
Exemple p
true p
toujours finalement p (infiniment souvent p)
s0
s1
true
Accepte seulement quand il continuera dy avoir des p dans le futur
INF6001 Chap 7
18
p
true
toujours finalement p
s0
p true
s1
Un p doit tre trouv, aprs on peut trouver autre chose, mais il faut retourner sur p
INF6001 Chap 7
20
INF6001 Chap 7
21
Exemple continuation
(p q) = ( p q)
Dornavant, un p est suivi toujours par un q
pq
true
true
s0
s1
q
Accepte tant que p q est vrai, peut aussi passer un tat o un q doit se produire plus tard
INF6001 Chap 7
22
INF6001 Chap 7
24
INF6001 Chap 7
25
(p q)
true
s0
p q
s1
Donc si un comportement tombe dans ltat s1, il nest pas conforme aux exigences INF6001 Chap 7
26
Toutes les excutions du systme satisfont aux proprits Pour prouver une exigence positive, nous devons prouver que le langage du systme est inclus dans le langage de lAB qui exprime lexigence Aucune excution du systme ne satisfait aux proprits Le langage du systme et le langage de lexigence doivent avoir intersection vide Si lintersection est non vide, les excutions dans lintersection sont des contreexemples, montrant dans quelles situations la proprit est viole
27
INF6001 Chap 7
Prouver que tous les comportements du systme satisfont la proprit Chercher un comportement du systme qui satisfait la ngation de la proprit! (un contrexemple)
ds quun contrexemple est trouv, nous savons que la proprit est fausse et nous navons pas besoin de continuer
INF6001 Chap 7
28
Never claims
Donc un model checker comme SPIN systmatiquement nie les proprits quon veut vrifier et cherche un contrexemple au lieu de chercher prouver que une proprit souhaite est toujours vraie
Si un contrexemple est trouv, on sait que la proprit est fausse et on a sauv du temps Si un contrexemple nest pas trouv, on sait que la proprit est vraie et on a fait le mme travail que dans le cas o on aurait cherch prouver la proprit positive directement
Calculer la composition synchrone des machines S et Af Contrler si le langage accept par cet automate est vide Sil est vide, toutes les excutions de S satisfont f
Sil a des excutions, il y a au moins une excution dans S qui est un contre-exemple pour f
En pratique, la composition synchrone souvent na pas besoin dtre calcule dans sa totalit car ds quon trouve un contre-exemple on a prouv que lexigence nest pas satisfaite
35
INF6001 Chap 7
Proprit [] (n<3)
Espace dtats
Analyseur
M |
Explosion dtats.
NON, + contre_exemple
INF6001 Chap 7
47
INF6001 Chap 7
48
Promela et SPIN
Promela est un langage pour la spcification des systmes rpartis
SPIN est lanalyseur (model checker) et son point de dpart est la thorie que nous venons de discuter
INF6001 Chap 7
49
Promela
Protocol/Process Meta Language Influenc par le CSP de Hoare Et par C
INF6001 Chap 7
Promela Model
A Promela model consist of:
mtype, constants, typedefs (records) chan ch = [dim] of {type, } asynchronous: dim > 0 rendez-vous: dim == 0
INF6001 Chap 7
Promela Model
mtype = {REQ,ACK}; message types (constants) typedef Msg { byte a[2]; record declaration mtype tp; } ; chan toR = [1] of {Msg}; channel declaration bool flag; global variable proctype Sender() { Msg m; ... m.a[0]=2; m.a[1]=7; m.tp = REQ; toR ! m; } Inputs/outputs proctype Receiver(byte n) { Msg m; local variable ... toR ? m; } creates processes init { run Sender(); run Receiver(2); } A Promela model corresponds to a (usually very large, but) finite transition system, so no unbounded data no unbounded channels no unbounded processes no unbounded process creation
INF6001 Chap 7
52
Processes
(1)
proctype Sender(chan in; chan out) { bit sndB, rcvB; local variables do Une sortie et puis -> :: out ! MSG, sndB -> in ? ACK, rcvB; if body :: sndB == rcvB -> sndB = 1-sndB :: else -> skip fi The body consist of a od sequence of statements. }
formal parameters
INF6001 Chap 7
53
Statements
The body of a process consists of a sequence of statements. A statement is either
executable: the statement can depends on the global be executed immediately. state of the system. blocked: the statement cannot be executed.
executable/blocked
Statements
(2)
A run statement is only executable if a new process can be created (remember: the number of processes is
bounded).
int x; proctype Aap() { int y=1; skip; run Noot(); x=2; x>2 && y==1; skip; }
Executable if Noot can be created Can only become executable if some other process makes x greater than 2.
INF6001 Chap 7
55
Statements
(3)
assert(<expr>);
The assert-statement is always executable. If <expr> evaluates to zero, SPIN will exit with an error, as the <expr> has been violated. The assert-statement is often used within Promela models, to check whether certain properties are always valid in a state.
proctype monitor() { assert(n <= 3); } proctype receiver() {
byte msg; ...
INF6001 Chap 7
56
Interleaving Semantics
Promela processes execute concurrently. Non-deterministic scheduling of the processes. Processes are interleaved (statements of different processes do not occur at the same time).
All statements are atomic; each statement is executed without interleaving with other processes. Each process may have several different possible actions enabled at each point of execution.
INF6001 Chap 7
40
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 progress:
assert(i == ei);
es = 1 - es; ei = (ei + 1)%MAX; if :: out!ack(s,0) :: out!err(0,0) :: skip fi :: (s != es) -> if :: out!nak(s,0) :: out!err(0,0) :: skip fi
out!nak(s,0) od } init { chan s_r = [1] of { mtype,byte,byte }; chan r_s = [1] of { mtype,byte,byte }; atomic { run sender(r_s, s_r); run receiver(s_r, r_s) } }
INF6001 Chap 7
We want to verify that data that is sent can only be delivered to the receiver without any deletions or reorderings, despite the possibility of arbitrary message loss. The assertion on line 40 verifies precisely that. Note that if it were ever possible for the protocol to fail to meet the above requirement, the assertion can be violated (autres dtails intressants dans le site)
58
Xspin in a nutshell
Xspin allows the user to
edit Promela models (+ syntax check) simulate Promela models random interactive with dialog boxes to set guided various options and directives verify Promela models to tune the verification process exhaustive bitstate hashing model additional features Xspin suggest abstractions to a Promela model (slicing) Xspin can draw automata for each process LTL property manager Help system (with verification/simulation guidelines)
59
INF6001 Chap 7
Outil trs performant Loutil de vrification le plus utilis dans notre domaine
Excellent survol pratique sur SPIN et plusieurs des concepts que nous avons vu:
http://plan9.bell-labs.com/sys/doc/spin.html
INF6001 Chap 7
60