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