tina-verif - afsec

Transcription

tina-verif - afsec
Vérification avec TINA
B. Berthomieu, F. Vernadat
LAAS-CNRS
Journée AFSEC “Outils” - Juin 2007 Insa Lyon
22 Juin 2007
Le contexte
Vérification de Systèmes Réactifs, Protocoles, Logiciels Temps Réel
Points durs
Problèmes indécidables
Facilité d’utilisation (formel/”semi-formel”)
Passage à l’échelle (explosion combinatoire)
Exemples de propriétés considérées
Classification : Safety/Liveness
Sûreté : Rien de ”mauvais” ne peut arriver (pendant plus de K u.t)
Vivacité : Quelque chose de ”bon” doit arriver (en moins de K u.t)
7→ Configurations qu’un système doit atteindre ou doit éviter
- Violation d’exclusion Mutuelle / Bruleur ouvert ∧ FlammeEteinte
- Une requète en attente doit être satisfaite (en moins de K u.t)
7→ Ordonnancement Temporel d’Evénements
Explicite : Causalité
A Expliciter !
Blocage, divergence,
Branchement
0
!Carte
?carte
1
3
!code
?billets
2
Vérification avec Tina
Analyse Structurelle
Expressivité réduite / Semi-effectif / “Manuelle”
Finitude de l’espace d’états (atemporel)
Graphe de Couverture (Karp Miller)
Vérification exhaustive
Explosion Combinatoire ou Systèmes infinis
7→ abstraction (ordres partiels, graphes de classes, ...)
Types de Spécifications Assertionnelles ou Comportementales
Assertionnelles
Logiques temporelles,
Contrôle de modèles
Comportementales
LTS (Système de transitions étiquetté)
Annneau à Jetons
Description opératoire
1_ask
wait_1
idle_1
cs_1
1_work
1_rel
after_1
1_entry
1_exit
token_1
Propriétes attendues
Exclusion mutuelle
Absence de famine : Un client en attente inévitablement travaillera
Analyse structurelle (sortie TINA)
P-Semi-Flows
invariant
cs 1 idle 1 wait 1
cs 2 idle 2 wait 2
after 1 after 2 after 3 cs 1 cs 2 cs 3 token 1 token 2
token 3
cs 3 idle 3 wait 3
7→ Réseau borné et Exclusion mutuelle
T-Semi-Flows
consistent
1 ask 1 rel 1 work
2 ask 2 rel 2 work
3 ask 3 rel 3 work
1 entry 1 exit 2 entry 2 exit 3 entry 3 exit
7→ monopolisation du jeton par un site ? Famine ? ? ?
Vérification exhaustive
Modèle 7→ LTS explicite
Réseau de Petri - Produit d’Automates 7→ Structure de Kripke Etiquetée
E
p5
C
E
p1
A
p2
p4
B
7→
C
ν
B
1
p3
2
A
E
4
D
0
D
C
B
3
0− > {p1}
1− > {p2, p3}
2− > {p3, p4}
3− > {p4, p5}
4− > {p2, p5}
Structure de Kripke Etiquetée
M =< W , Σ, R, P, ν > où
W : ensemble de mondes,
R : relation entre ces mondes (R ⊂ W × Σ × W ),
P : ensemble de variables propositionnelles,
ν une valuation ν : W 7→ 2P .
KTS - Espaces d’états TINA
En clair (verbose)
MARKINGS :
0 : p1 p2*2
1 : p3 p4 p5
2 : p2 p3 p5
.../...
REACHABILITY GRAPH :
0 -> t1/1
1 -> t2/2, t3/5, t4/1, t5/7
2 -> t3/3, t4/2, t5/4
.../...
7
t3
6
t5
t2
t5
t2
4
t3
0
t1
t5
t4
1
t4
5
t5
t3
t2
2
t2
t3
t4
3
t4
+ Analyse de vivacité + graphe des CFC
Format binaire (compressé)
KTZ (Kripke Transition Systems compressés)
Ouvert
MecIV LABRI / CADP Vasy Inria (.aut / .bcg)
2 visions complémentaires : Linéaire / Arborescente
Linéaire
(LTL / Traces)
Arborescent
(CTL / Bisimulation)
E
0
5
A
C
10
B
1
A
A
2
A
E
1
6
B
11
C
C
4
0
2
7
C
D
3
12
B
8
E
13
C
D
B
E
C
3
4
Programme ⇔ Graphe
(vision non-déterministe)
9
14
Programme ⇔ Ensemble (infini)
d’exécutions (suite (infinie) d’états)
CTL et LTL incomparables
Potentiel (∈ CTL)
Equité / Infiniment souvent (∈ LTL)
Logique temporelle Arborescente
Quelques Exemples
Invariant : AG ¬(cs1 ∧ cs2 ) Exclusion Mutuelle
Réponse potentielle : AG (wait1 ⇒ EF cs1 ) Accès inévitablement garanti
à la section critique
Réponse inévitable : AG (wait1 ⇒ AF cs1 ) Accès inévitablement garanti
à la section critique
Réponse potentielle : AG (EF init) Toujours possible de se réinitialiser
TINA : MC 2 Prototype + connexion à MECIV et Evaluator
Logique temporelle Linéaire
Quelques Exemples
Invariant : G ¬(cs1 ∧ cs2 ) Exclusion Mutuelle
Réponse : G (wait1 ⇒ F cs1 ) Accès Garanti à la section critique
Infiniment souvent : G F idlei Un client sera une infinité de fois idle
Equité : G F waiti ⇒ G F csi Si un client reserve infiniment souvent, il
entrera infiniment souvent en cs
Principe de vérification
Associer à une formule φ un automate de Büchi Aφ correspondant
K |= φ ssi L(K ) ⊂ L(φ) ssi L(K ) ∩ L(¬φ) = ∅ ssi L(K × A¬φ ) = ∅
Complexité : O(|K |.|A¬φ |) = O(|K |.2|φ| )
TINA : SELT model-checker pour State/Event LTL (Shaki/Clarke/etc,
CMU 2004)
Construction de l’automate de Büchi via LTL2BA (LIAFA)
Model-checker SELT de Tina 1/3
Expressions SELT
Modalités : (next), (always), ♦ (eventually), U (until)
propositions atomiques ou “entières” P, P ≤ 4, ...
propositions de transitions ♦(Req1 ∨ Ack1 ∨ Lib1)
On peut atteindre un état à partir duquel il n’y aura plus
que les événements Req1 ou Ack1 ou Lib1
(cf Invariants de transitions)
Opérateurs arithmétiques et logico-arithmétiques :
(cs1 + cs2 + cs3 + cs4 ≤ 1) Section critique en exculsion
mutuelle
Mixité totale possible
(t1 ⇒ (−(t3 ∨ t4) ∧ (p2 ≥ p3 + p4)) U t2) ....
Définition possible de nouveaux opérateurs
prefix F p = <> p;
infix Q responds P = G (P => F Q);
Model-checker SELT de Tina 2/3
Contre-Exemple abstrait
−[] (wait 1 => <> cs 1);
FALSE
state0 : idle 1 idle 2 idle 3 idle 4 token 1
− 1 ask...(preservingT )− >
state25 : after 2 idle 3 wait 1 wait 2 wait 4
− 3 ask...(preserving − cs 1/ wait 1)− >
∗ [accepting ]state26 : after 2 wait 1 wait 2 wait 3 wait 4
− 3 entry ...(preserving − cs 1)− >
state26 : after 2 wait 1 wait 2 wait 3 wait 4 state0 : p1p2 ∗ 2
0
1
2
3
4
5
6
7
8
9
10
Possibilité d’obtenir le contre-exemple complet
Possibilité de le rejouer sur le stepper (y compris en temporisé)
Model-checker SELT de Tina 3/3
Mode “ligne de commande”
selt [-h | -help]
selt ktzfile [-f formula | formulafile] [-prelude file]
q | -v[-b | -c | -p | -s | -g] [outfile]
FLAGS
WHAT
-h | -help
this mode
ktzfile
transition system input file
-f formula
pass formula to be checked as a string
formulafile
pass formula as a file (stdin if absent or -)
-prelude file loads command file on entry
outfile
result file or output mode :
-b
just prints truth value
-c
prints summary of counter example
-p
prints counter example in full
-s
prints counter example loadable in stepper
-g
builds and prints full synchronized graph
-q
no banner nor times printed
-v
prints banner and exec times for commands
Approche Comportementale
0
4
piece
piece
5
1
the
cafe
2
3
9
piece
6
cafe
the
8
7
piece
piece
10
11
cafe
the
12
13
6= Points de vue correspondants 6= Relations d’équivalences
(*) Langage Σ ≡ Σ′ ≡ Σ′′
(*) Langage + Blocage Σ ≡ Σ′
(*) Acceptation/Refus Σ 6≡ Σ′ 6≡ Σ′′
Après piece Σ ne refuse ni the ni cafe
Après piece Σ′ refuse the ou cafe
Après piece Σ′′ refuse the et cafe
(+) Non-déterminisme, (+) Branchement
Divergence
Approche Comportementale
6= Relations d’équivalence
Séquencement
+ Blocage
+ Acceptation/Refus
+ Non-déterminisme
+ Divergence
+ ...
7→
7→
7→
7
→
7
→
Equivalence Langage
Equivalence de Traces Maximales, . . .
Equivalence de Test, . . .
Bisimulation, . . .
Branching Bisimulation . . .
Outils associés CADP (Vasy/Inria)
Comparaison :
Minimisation :
Bisimulator
BCG MIN (strong, branching),
Reductor (pré-minimisation à la volée)
Approche Comportementale
Approche par Minimisation
(Introspection)
Initialement : Système Σ et une équivalence ≡ (logique L≡ )
Construire à partir de Σ, le plut petit STE ΣAbs tel que Σ ≡ ΣAbs
“Analyser” ΣAbs
Exemple
delta
1
ack1
req1
2
Obs = {req1 , ack1 , lib1 }
+ Bisimulation et Divergence
lib1
delta
0
Approche Comportementale
Approche par Comparaison
Initialement : Système Σ et une spécification comportementale (Σ′ , ≡)
Σ ≡ Σ′ ⇒ Σ et Σ′ respectent les mêmes propriétés (L≡ )
Comparaison
Spécification “comportementale” de l’exclusion mutuelle
+ Equiv Langage
ack1
1
lib2
0
lib
2
ack2
Masquer le formel : PDL2TINA LAAS-IRIT (Topcased)
Process Development Language (DSL standard OMG)
Activité (imbriquées) contraintes :
relations de causalité
disponibilités de ressources
contraintes temporelles
Problème à résoudre
Spécification PDL ≡ Ensemble de contraintes
Question : Existe-t-il au moins un run exécutant toutes les activités en
respectant les contraintes de causalité, en prenant en compte les
disponibilités de ressources et en respectant les contraintes temporelles ?
Utilisation des techniques de model-checking
pour savoir si le problème admet une solution
Techniques de transformations de modèle (Atlas/Inria)
PDL →
7 Réseau de Petri |= spec PDL
PDL →
7 Formules LTL pour vérifier la consistance de la spec PDL
Exemple de spécification PDL
PDL 7→ SE-LTL
Etude de la terminaison
<> finished Tout run termine correctement
[] − finished Aucun run ne termine !
(contre-exemple exhibe une solution)
[] (act notStared => <> act Started)
[] (act Started => <> act Finished)
Propriétes plus quantitatives (observateurs temporels)
[] − development intime
Impossible de terminer development dans les délais
−(−(dev toearly ∨ dev tolate) U finished)
Impossible de terminer le process en ayant respecté les
contraintes temporelles de development
[](dev intime => development count <= 8)
8 itérations au plus pour respecter les contraintes temporelles
Perspectives : Logiques Temporelles temporisées
TCTL
EF∼c φ Uψ
Il est possible d’atteindre, en maintenant φ vraie, un état satisfaisant
ψ en une durée d ∼ c
AG∼c φ
φ est toujours vraie après une durée d satisfaisant d ∼ c
...
Vérification
“CTL” sur le Graphe de Régions
Points fixes Symboliques (Kronos)
Accessibilité bornée ⊂ TCTL
Observateurs (IF, TINA, UPPAAL...)
Perspectives
Passage à l’echelle
Ordres Partiels et Temporel
Abstraction, ...
Model-checking parallèle
Vérification “Quantitative”
Automatisation des Observateurs (Topcased)
Model-checking (TCTL,MITL, ...)
Faciliter la vérification/expression
Kit de propriétés (textuel/graphique)
Aide au “diagnostic”
Exigences SySML / Formel

Documents pareils