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) 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) Ordonnancement Temporel d Evénements Explicite : Causalité A Expliciter! Blocage, divergence, Branchement 0?carte 3?billets!Carte 1!code 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 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 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 monopolisation du jeton par un site? Famine???
Vérification exhaustive p1 A p3 p2 C B p4 p5 E D Modèle LTS explicite Réseau de Petri - Produit d Automates Structure de Kripke Etiquetée 4 E C 1 A 0 D B B 3 C 2 E ν 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 2 P.
KTS - Espaces d états TINA En clair (verbose) MARKINGS : 0 : p1 p2*2 1 : p3 p4 p5 2 : p2 p3 p5.../... REACHABILITY GRAPH : t4 0 -> t1/1 1 -> t2/2, t3/5, t4/1, t5/7 2 -> t3/3, t4/2, t5/4.../... + Analyse de vivacité + graphe des CFC 5 t5 6 t3 t3 7 t5 t2 t2 4 t3 0 t1 t5 t4 1 t5 t2 t2 2 t3 3 t4 t4 Format binaire (compressé) KTZ (Kripke Transition Systems compressés) Ouvert MecIV LABRI / CADP Vasy Inria (.aut /.bcg)
2 visions complémentaires : Linéaire / Arborescente Arborescent (CTL / Bisimulation) Linéaire (LTL / Traces) E 0 5 10 C 1 A B 2 E 1 A 6 A 11 A 4 0 2 B 7 C 12 C D C B E C 3 8 13 B 3 4 D 9 E 14 C Programme Graphe (vision non-déterministe) 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 (cs 1 cs 2 ) Exclusion Mutuelle Réponse potentielle : AG (wait 1 EF cs 1 ) Accès inévitablement garanti à la section critique Réponse inévitable : AG (wait 1 AF cs 1 ) 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 (cs 1 cs 2 ) Exclusion Mutuelle Réponse : G (wait 1 F cs 1 ) Accès Garanti à la section critique Infiniment souvent : G F idle i Un client sera une infinité de fois idle Equité : G F wait i G F cs i 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 : Mixité totale possible (cs 1 + cs 2 + cs3 + cs4 1) Section critique en exculsion mutuelle (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 9 piece piece piece piece piece 1 5 6 10 11 the cafe the cafe cafe the 2 3 8 7 12 13 Points de vue correspondants Relations d équivalences (*) Langage Σ Σ Σ (*) Langage + Blocage Σ Σ (*) Acceptation/Refus Σ Σ Σ 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 Relations d équivalence Séquencement Equivalence Langage + Blocage Equivalence de Traces Maximales,... + Acceptation/Refus Equivalence de Test,... + Non-déterminisme Bisimulation,... + Divergence 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 req1 ack1 2 Obs = {req 1, ack 1, lib 1 } + 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 lib2 1 0 2 lib 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 Réseau de Petri = spec PDL PDL Formules LTL pour vérifier la consistance de la spec PDL
Exemple de spécification PDL
PDL 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