La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Chap 7 1 Chapitre 7 Vérification de modèles: Automates de Büchi et SPIN (Holzmann Chap. 6) (réserve à la biblio)

Présentations similaires


Présentation au sujet: "Chap 7 1 Chapitre 7 Vérification de modèles: Automates de Büchi et SPIN (Holzmann Chap. 6) (réserve à la biblio)"— Transcription de la présentation:

1 Chap 7 1 Chapitre 7 Vérification de modèles: Automates de Büchi et SPIN (Holzmann Chap. 6) (réserve à la biblio)

2 INF6001 Chap 7 2 Propriétés détats et exécutions (chaînes) X=13X=X/2+1 X>0 X=X/2 X0X0 s0 Nous pouvons affirmer des propriétés pour: Des états: p.ex. à létat s1, X=13 toujours (invariant) pas besoin de logique temporelle ici Des exécutions, p.ex. x0 ou x0, mais pas x0. Observez que dans ce cas le contrôle est sur les transitions. s1 s2 s3 X: entier et / a résultat entier (tronqué). État dacceptation

3 INF6001 Chap 7 3 Comment vérifier les propriétés temporelles? Nous avons une machine dont nous pouvons observer certaines propriétés, p.ex. quune variable a toujours une certaine valeur ou une propriété temporelle Solution: exécuter la machine en parallèle avec une autre machine qui observe et vérifie ces propriétés – composition synchrone nous pouvons aussi vérifier une propriété négative, c.-à.-d. que la machine ne satisfait pas une propriété never automata

4 INF6001 Chap 7 4 Vérification de modèle Modèle à vérifier Automate exprimant des propriétés à vérifier Composition synchrone On peut dire que les deux côtés sont des modèles: Lautomate est un modèle dune propriété logique à vérifier

5 INF6001 Chap 7 5 Exemple s 1 p AB pour vérifier p Cet AB synchronise avec un autre automate seulement si la propriété p reste toujours vraie, à toutes les transitions Si elle reste toujours vraie, il est content...

6 INF6001 Chap 7 6 Acceptation dans les automates de Büchi Pour chaque expression de logique temporelle, il y a un AB qui accepte les chaînes qui satisfont cette expression Il existe un algorithme pour effectuer cette construction, pas discuté dans ce cours Un automate régulier accepte toutes les chaînes qui conduisent à un état final Un AB accepte toutes les chaînes infinies qui passent un nombre infini de fois par un état final

7 INF6001 Chap 7 7 Exemple s 0 s 1 p p vrai AB pour vérifier p Cet AB est prêt à accepter des transitions où p est faux, mais il est content seulement quand p devient vrai.

8 Exercice: INF6001 Chap 7 8 X=13X=X/2+1 X>0 X0X0 s0 s1 s2 s3 X: entier et / a résultat entier (tronqué) Prouver x0 pour ce modèle Automate de Büchi à utiliser X=X/2

9 Schéma de Solution x0 INF6001 Chap 7 9 s0,s 0 X=13, ¬X0 s1,s 0 X=1, ¬X0 s2,s 0 X=7, ¬X0 s3,s 0 s2,s 1 X=0, X0 X=0, vrai X=13, vrai s0,s 1 s1,s 1 Etc. Après ça, le système continue normalement mais la propriété est satisfaite, lAB reste en état s 1 X=7, ¬X0 X=1, ¬X0 X=7, vrai

10 Composition synchrone Comme dans la composition synchrone, deux transitions peuvent être composées quand elles sont compatibles, p.ex. INF6001 Chap 7 10 X=7, ¬X0

11 INF6001 Chap 7 11 Incomplétude des AB LAB de gauche ne considère pas le cas de recevoir un p Ceci simplifie la compréhension et la vérification, car les transitions qui ne conduisent pas au résultat désiré ne sont pas prises en considération s 1 p s 1 p s 2 p = p réjet!

12 INF6001 Chap 7 12 Non-déterminisme … Considérez la propriété: soleil (enfin toujours soleil) Après un certain moment, il y aura toujours du soleil Mais à partir de quand? Si un jour il y aura du soleil, ce nest pas nécessairement le début de lépoque du soleil… Donc advenant une journée de soleil, il faut en même temps Considérer la possibilité quelle soit la première journée de soleil de lépoque du soleil Ou la possibilité que non, lépoque du soleil viendra plus tard

13 INF6001 Chap 7 13 Exemple de nondéterminisme AB pour vérifier que p (enfin toujours p) vrai accepte p et autres mais après un certain p, il naccepte que des p après Cet AB est nondéterministe, mais avec raison … s 0 s 1 vrai p p

14 INF6001 Chap 7 14 Comparer avec AB déterministe s 0 s 1 ¬p p p LAB ci-dessous nest pas bon pour p Car sil y a un 1er p qui nest pas suivi par p il rejette. Il faut dans ce cas continuer à chercher un p futur après lequel p Cet AB montre aussi les limites de lexpressivité des opérateurs, car ce quil exprime (après le 1er p, toujours p) nest pas exprimable avec ces opérateurs seulement. faut utiliser U: ¬ p U p

15 INF6001 Chap 7 15 Nondéterminisme des AB Le nondéterminisme est une caractéristique importante des AB p Il est important de comprendre quune transition étiquetée vrai peut toujours être prise, même sil y a des autres transitions possibles. Quand un p est rencontré, lautomate peut ou bien boucler sur s0, ou bien changer à s1. Ceci est justifié par le fait que sil y a des p initiaux après lesquels p est faux, la propriété nest pas nécessairement fausse! Donc des p peuvent être ignorés et la propriété peut encore être vraie plus tard finalement toujours p

16 Exemple concret de fonctionnement de nondéterminisme INF6001 Chap 7 16 p q p Nous voulons vérifier si p ici Nous commençons dans létat global ( m 0, s 0 ). La machine à vérifier produit son premier p: Nous ne savons pas si nous devons lapparier avec un p ( m 1, s 1 ). ou avec un true ( m 1, s 0 ). Nous devons considérer les deux possibilités Plus tard nous saurons que lapparier avec un true était le bon choix Le q suivant sera aussi apparié avec un true, puis enfin on peut apparier les p avec les p m0m0 m1m1 m2m2

17 Exécution non-déterministe avec échec de parcours INF6001 Chap 7 17 m 0,s 0 m 1,s 1 p, p m 1,s 0 p, true m 2,s 1 q, true p, p p

18 Exercices Faites-vous des autres exemples INF6001 Chap 7 18

19 INF6001 Chap 7 19 Transformation Büchi aut. déterm. Étant donné un automate Büchi ou semblable, il est toujours possible de donner un automate régulier et déterministe équivalent Cependant ce dernier pourrait être beaucoup plus complexe Avant tout, il faut compléter lautomate, y incluant toutes les transitions et états non spécifiés En deuxième, il faut enlever le nondéterminisme Si une transition p peut aller à un état s1 ou à un état s2, nous la faisons aller à létat {s1,s2} Donc lensemble des états dun automate déterministe D équivalent à un automate nondéterministe ND, qui a |ND| états, peut avoir jusquà 2 |ND| -1 états Son ensemble détats est lensemble de tous les sous-ensembles de ND -1 car lensemble vide nest pas un état… Construction en principe exponentielle (pourquoi?) V. un manuel quelconque de théorie des automates

20 La même exécution, mais avec automate déterministe INF6001 Chap 7 20 m 0,s 0 m 1,s 0 m 1, s 1 p,p p, true m 2,s 1 q, true p, p Nous voyons ici de manière implicite que létat m 1, s 1 na pas de suite

21 Exercice Trouver un automate déterministe qui fait le même travail que lAB pour p Vous verrez quil existe, mais il est plus compliqué INF6001 Chap 7 21

22 INF6001 Chap 7 22 Autre exemple impliquant U (until fort) s 0 s 1 p q vrai p U q

23 Deux cas limites AB pour la tautologie : vrai, ou vrai, ou vrai ou p p etc. Cet AB accepte toujours tout. AB pour la contradiction : faux, ou faux, ou faux ou p p etc. Il ny a pas dAB pour la contradiction: il est vide Il ny a pas de modèles pour les systèmes contradictoires Il nest pas possible de vérifier un système contradictoire INF6001 Chap 7 23 s 1 vrai

24 Exemples impliquant opérateurs propositionnels (utilisant INF6001 Chap 7 24 F p || F q = F (p || q) p || Fq G F p && G q = G ( F p && q ) G ( F p || q )

25 Quelques surprises … (possiblement) Utilisant loutil vous pourrez vérifier que: p U q peut être vrai sans aucun p p -> q a besoin seulement de q pour être vrai, mais il est aussi vrai si p est faux dorénavant p -> q est vrai dans deux cas: p est dorénavant faux ou q est vrai dans le prochain état La logique temporelle nest pas vraiment intuitive au début … INF6001 Chap 7 25

26 INF6001 Chap 7 26 Efficacité de calcul Nous ne prenons pas en considération pour linstant les aspects defficacité de calcul Cependant la présence de nondéterminisme implique le besoin de retour en arrière si on a pris la mauvaise branche… ou bien de tenir en compte de toutes les branches possible à chaque pas Tenir compte de ces possibilités cause inefficacité dans le calcul

27 INF6001 Chap 7 27 Exemple s 0 s 1 vrai p p toujours finalement p (infiniment souvent p) vrai Accepte seulement quand il continuera dy avoir des p dans le futur

28 INF6001 Chap 7 28 Parfois le nondéterminisme nest pas nécessaire s 0 s 1 ¬p p p toujours finalement p (infiniment souvent p) ¬p p

29 INF6001 Chap 7 29 Exemple: utiliser les équivalences p = p Un p doit être trouvé, après on peut trouver autre chose, mais il faut retourner sur p s 0 s 1 vrai p toujours finalement p

30 INF6001 Chap 7 30 Exemple (pas très intuitif, mais…) (p q) = ( p q) Dorénavant, un p est suivi toujours par un q. Utilisant la formule de droite, nous voyons que: à cause du fait que (faux vrai) = vrai, p na pas besoin de se produire afin que q se produise et rende la formule vraie

31 INF6001 Chap 7 31 Exemple continuation (p q) = ( p q) s 0 s 1 p q vrai q Accepte tant que p q est vrai, peut aussi passer à un état où un q doit se produire plus tard Dorénavant, un p est toujours suivi par un q

32 Pour bien comprendre… Pour bien comprendre lAB précédent, considérez le fait que un q peut se produire tout seul, même sans p Mais dès quun p se vérifie, lautomate passe à s 1, qui nest pas un état dacceptation Il retourne et peut rester dans létat dacceptation seulement après un q À ce moment là, nous retournons à létat initial dans lequel nous pourrons avoir (ou non …) des autres p et q INF6001 Chap 7 32

33 INF6001 Chap 7 33 Autres exemples Dautres exemples plus complexes sont dans le livre de Holzmann, Chap. 6 En pratique, on a rarement besoin dutiliser des formules complexes Ou on simplifie lassertion pour les éviter... Un programme pour trouver un AB pour une formule LTL: Büchi store, base de données dAB:

34 Puissance: LTL et AB Le formalisme des AB est plus puissant que celui de la LTL On peut construire des AB qui ne peuvent pas être exprimés en LTL Intuitivement, ceci peut être justifié par le fait quen LTL on ne peut définir que des propriétés de comportement générales, tandis que avec un AB on peut spécifier des comportements détaillés complexes et à plusieurs stages Exercice: Faites vos expériences à ce sujet! Cherchez à définir des AB qui nont pas un correspondant en LTL INF6001 Chap 7 34

35 INF6001 Chap 7 35 Mais la construction du modèle est le problème! Problème fondamental: Soit S lautomate global (modèle) du système en considération S est construit à partir des différentes composantes du système Nous avons vu (Chapitre 2) que le problème de construire S peut être de complexité exponentielle à cause du fait que nous devons considérer lentrelacement des actions des composantes de S Bonne nouvelle, S na pas besoin dêtre construit complet auparavant Il peut être construit au fur et à mesure quil est composé avec lautomate de Büchi et na pas besoin dêtre gardé entièrement en mémoire on the fly model checking

36 Deux manières de prouver ou refuser une propriété Prouver que tous les comportements du système satisfont la propriété Chercher un comportement du système qui satisfait la négation de la propriété! (un contrexemple) Cette deuxième stratégie pourrait aboutir plus rapidement, car dès quun contrexemple est trouvé, nous savons que la propriété est fausse et nous navons pas besoin de continuer si on veut sassurer que quelquun est honnête, il pourrait être difficile de le démontrer en principe donc on lui propose des comportements possibles et on attend de voir si jamais il se comporte de manière malhonnête … ce processus est une sorte de test systématique. INF6001 Chap 7 36

37 Comportements honnêtes Comportements malhonnêtes Test dhonnêtété: deux manières de contrôler INF6001 Chap 7 Comport. de A 37 Comport. de A Dans ce cas, on examine tous les comportements de A et pour chacun on détermine sil est honnête Dans ce cas, on cherche sily a des comportement contraires: il suffit den trouver un seul

38 Limportance des contrexemples Il pourrait être possible de construire le modèle complet dun système et de contrôler quun ensemble de propriétés est toujours valable, dans toute évolution possible du système. Dans ce cas, super! Sinon, les model checkers daujourdhui permettent de développer le système pas par pas (on the fly) et de contrôler la violation de propriétés à chaque pas. Si à un certain point on trouve une violation, ceci est un contre- exemple à la propriété, une erreur quil faut corriger Cest encore une trouvaille importante. INF6001 Chap 7 38

39 INF6001 Chap 7 39 Propriétés dun système Pour prouver qu un système jouit des propriétés spécifiées par des expression de logique temporelle, il faut montrer que tous les comportements du système ont ces propriétés Nous appelons langage dun automate lensemble de chaînes, lensemble des comportements, quil accepte Propriétés ou exigences positives Toutes les exécutions du système satisfont aux propriétés Pour prouver une exigence positive, nous devons prouver que le langage du système est inclus dans le langage de lAB qui exprime lexigence Propriétés ou exigences négatives Aucune exécution du système ne satisfait aux propriétés Le langage du système et le langage de lexigence doivent avoir intersection vide Si lintersection est non vide, les exécutions dans lintersection sont des contre- exemples, montrant dans quelles situations la propriété est violée

40 Exemple simple Supposons quon veuille contrôler que dans un système: x<4 Nous pourrions chercher à développer le modèle complet pour voir si ceci est toujours vrai Ou nous pouvons chercher un contre-exemple après chaque pas de création du modèle, utilisant ¬ x 4 Au moment où nous trouvons la violation de cette propriété (x=5, p.ex.), nous avons trouvé un contre-exemple et donc probablement une erreur à corriger. INF6001 Chap 7 40

41 INF6001 Chap 7 41 Never claims: exigences négatives Donc il est plus efficace de contrôler l absence de comportements défendus plutôt que de contrôler tous les comportements permis LAB approprié est obtenu par négation dune formule de logique temporelle

42 INF6001 Chap 7 42 Exemple basé sur la formula précédente: (p q) = ( p q) Dorénavant, un p est suivi toujours par un q Cette formule est fausse sil y aura un p et puis aucun q

43 INF6001 Chap 7 43 Automate négation: never automata Supposons que nous voulions quun comportement niant la formule précédente soit détecté: (p q) =par définition de ( p q) = par loi de dualité ( p q)=par loi de De Morgan (p q) =par dualité (p q) s 0 s 1 true p q q Si un comportement tombe dans létat s1, il nest pas conforme aux exigences

44 INF6001 Chap 7 44 Un système à vérifier Exercice: calculer la machine globale de P1 et P2 (ils ne communiquent pas). (source: H.v.d.Schoot)

45 INF6001 Chap 7 45 Une propriété à vérifier Nous désirons voir si f = w d Faisant la négation (never claim) ¬f = ¬( w d) = ¬(¬ w d) = w ¬ d = ¬f = w ¬ d Un AB Büchi pour A¬f est celui-ci où = true = a b c d v w S\{d} = ¬d = a b c v w S\{d,w} = ¬d ¬w = a b c v ¬d ¬w ¬d¬d true d sest produit et ¬f est faux, f est vrai

46 Notation utilisée dans cet exemple Σ est lensemble de toutes les actions possibles Donc Σ est équivalent à true, prend tout Si = {a, b,c, d}, alors Σ est (a v b v c v d) Σ \ {a,b} est lensemble de toutes les actions possibles moins d et w, donc il prend tout moins d et w, il est donc ( ¬a ¬b) INF6001 Chap 7 46

47 INF6001 Chap 7 47 Exemple (source: H.v.d.Schoot) Nous désirons voir si ¬f = w ¬ d ¬f est vrai pour P 1 XP 2 ssi A ¬f accepte au moins une des chaînes de P 1 XP 2 Voici la composition de P 1,P 2, et A ¬f Les états finaux sont des états où w sest produit, et non d, car P1 a tombé dans un cycle de {a,b} V.cycles en jaune. La propriété ¬f est vraie, étant donné que nous venons de trouver des exemples pour ¬f. Donc la propriété f est fausse dans P 1 XP 2.

48 INF6001 Chap 7 48 Cycles dacceptation Selon la définition dacceptation dans les automates de Büchi, seulement les chaînes infinies qui passent un nombre infini de fois par un état final sont acceptées Seulement ces chaînes sont des contre-exemples Donc dans P 1 XP 2 nous ne sommes pas intéressés aux calculs qui finissent dans létat (13,22) Un exemple de cycle dacceptation: v; w; a; b; a; b; a; b … Exercice: trouver les autres

49 INF6001 Chap 7 49 Preuve dexigences négatives Étant donné un système S et une formule LTL f à contrôler pour S Construire un AB A ¬f pour la négation de f Il naccepte que les chaînes qui satisfont ¬f, qui violent f Calculer la composition synchrone des machines S et A ¬f Contrôler si le langage accepté par cet automate est vide Sil est vide, toutes les exécutions de S satisfont f Sil a des exécutions, il y a au moins une exécution dans S qui est un contre-exemple pour f En pratique, la composition synchrone souvent na pas besoin dêtre calculée dans sa totalité car dès quon trouve un contre-exemple on a prouvé que lexigence nest pas satisfaite

50 INF6001 Chap 7 50 Efficacité de ces procédures Par un argument théorique on montre que, pour un système S qui contient |S| états et un AB A f qui vérifie une propriété f et contient |A f | états Le nombre détats à considérer pour la preuve dinclusion est entre |A f | + |S| et |A f | x |S| Le nombre détats à considérer pour la preuve dintersection vide est entre 0 et |A f | x |S| En fait, la preuve de lintersection vide peut aboutir tout de suite (un contrexemple est trouvé au tout début) Pour cette raison, la méthode utilisée par SPIN est celle de prouver lexigence négative, lintersection vide

51 Dans notre exemple Notez que dans lexemple, pour trouver que la propriété never est satisfaite, il est suffisant de compléter la partie jaune du diagramme de composition Les autres états nont pas besoin dêtre visités Réduction de complexité dapprox. 50% par rapport à exploration complète Il est suffisant de visiter 6 états sur 12 INF6001 Chap 7 51

52 INF6001 Chap 7 52 En mots… Gerard J. Holzmann : The Model Checker SPIN. IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 23, NO. 5, MAY 1997 A positive claim requires us to prove that the language of the system (i.e., all its executions) is included in the language of the claim. A negative claim, on the other hand, requires us to prove that the intersection of the language of the system and of the claim is empty. The size of the state space for a language inclusion proof is at most the size of the Cartesian product of the (automata representing) system and claim, and at least the size of their sum. The worst-case state space size to prove emptiness of a language intersection is still the size of the Cartesian product of system and claim, but, in the best case, it is zero. Note that if no initial portion of the invalid behavior represented by the claim appears in the system, the intersection contains no states. SPIN, therefore, works with negative correctness claims and solves the verification problem by language intersection.

53 INF6001 Chap 7 53 Exploration de lespace détats global Si une exécution erronée est détectée, lexploration de lespace détats peut être arrêtée Sinon, lexploration doit continuer jusquà ce que tous les états auront été explorés À moins que lalgorithme nexcède le temps ou la mémoire disponible… Nous devons donc utiliser un mécanisme qui soit capable de déterminer si nous venons de générer un état déjà généré précédemment

54 INF6001 Chap 7 54 Algorithme supertrace SPIN est fourni dune méthode extrêmement efficace danalyser les états dénormes machines à états Concernant le problème de contrôler que tous les états ont été explorés Un bit par état: exploré ou non Algorithme dhachage pour mettre en correspondance un état du système avec ladresse du bit qui le représente Ladresse dira vrai si létat correspondent a été exploré, faux sinon. Cependant nous pouvons avoir des faux résultats à cause des doubles affectations possibles dans les algorithmes de hachage Pour une histoire complète, v. Section 11.4

55 INF6001 Chap 7 55 Autre problème: obtenir lAB optimal Un problème moins important, mais aussi important, est davoir un AB optimal Les algorithmes connus de génération dAB à partir de formules de logique temporelle ne garantissent pas loptimalité de lAB généré Sujet de recherche encore ouvert… Même la définition doptimalité nest pas claire

56 INF6001 Chap 7 56 AB déterministes et non w ¬ d s 0 s 1 d w d d À noter que lAB de gauche est déterministe, ce qui simplifie le calcul de la composition LAB à droite est nondéterministe, il est plus facile à comprendre mais le calcul de la composition peut être plus complexe =

57 Représentation de la machine never en SPIN INF6001 Chap 7 57 s 0 s 1 d w d d never { S0_init : if :: (!d) -> goto S0_init :: (w && !d) -> goto accept_S1 fi; accept_S1 : if :: (!d) -> goto accept_S1 fi; }

58 INF6001 Chap 7 58 Stutter extension rule: extension bègue? Pour prendre en considération le case des chaînes finies On peut supposer que toute exécution finie soit étendue par une séquence infinie dévénements vides qui ne causent pas de changements détat: Événements ε : le bégaiement De cette manière, une propriété est vraie pour lexécution étendue si elle est vraie pour lexécution finie originale P.ex. p est vrai pour une exécution qui contient une seule transition pour laquelle p est vrai aaa ε

59 INF6001 Chap 7 59 Exercice: Exemple avec non-déterminisme Étudier lexemple à la page 558 et suivantes du livre de Holzmann sur SPIN Basé cependant sur des concepts un peu différents de ceux que nous avons vu dans ce cours Notez quà partir de létat (s 0,s 0,2,s 0 ) il faut considérer deux possibilités. À cause de la transition true dans lautomate de Büchi qui est toujours possible.

60 INF6001 Chap 7 60 Remerciements… Pour la partie suivante de ce cours, jai utilisé les notes de: Theo Ruys

61 INF6001 Chap 7 61 Analyse de modèles, Model Checking byte n; proctype Aap() { do :: n++ :: noot!MIES od } Modèle M [] (n<3) Propriété Analyseur Espace détats OUI Propriété satisfaite NON, + contre_exemple Explosion détats.

62 INF6001 Chap 7 62 Définition [Clarke & Emerson 1981] Model checking is an automated technique that, given a finite-state model of a system and a logical property, systematically checks whether this property holds for (a given initial state in) that model.

63 INF6001 Chap 7 63 À quel point faisons-nous cette analyse Approche traditionnelle: Dans le processus de conception, on crée un modèle abstrait du processus avant de commencer limplantation Lanalyse est faite sur ce modèle Limplantation est puis obtenue à partir du modèle par un procédé de raffinement Approche dite moderne: Le modèle est obtenu à partir de limplémentation par un procédé dabstraction Qui est automatisable, au moins en principe Cette dernière approche a été rendue nécessaire par le fait que les développeurs ne veulent pas faire des détours dans leur travail Elle demande des algorithmes extrêmement efficaces car les modèles obtenus à partir de limplantation contiennent beaucoup de détails

64 INF6001 Chap 7 64 To cope with the state space explosion. Approches Classique et Moderne Model Checker Abstract Verification Model (initial) Design Implementation (manual) abstractions refinement techniques Modern Approach abstraction techniques Abstract Verification Model Implementation C, Java Abstraction is the key activity in both approaches. Classic Approach

65 INF6001 Chap 7 65 Promela et SPIN Promela est un langage pour la spécification des systèmes répartis SPIN est lanalyseur (model checker) et son point de départ est la théorie que nous venons de discuter

66 INF6001 Chap 7 66 Promela/SPIN: un système pour lanalyse des modèles Promela/SPIN est un système développé à partir du début des années 1990 par Gerhard Holzmann, un chercheur dAT&T Labs 1991 version initiale 1995 réductions dordre partiel 1997 minimisation de lAB 2003 inclusion de code C et Breadth-First Search … Il est un des analyseurs de modèles les plus connus et efficaces

67 INF6001 Chap 7 67 Atouts de ce système Automatique, sans intervention humaine Après la définition du problème Implantation très efficace en C Interface conviviale Excellent appui Il combine un grand nombre de connaissances sur le sujet Plusieurs chercheurs chevronnés ont participé à son dévéloppement Reconnu par lACM entre les réalisations majeures en informatique Software System Award avec Unix, TeX, Tcl/TK, Java

68 INF6001 Chap 7 68 Promela Protocol/Process Meta Language Influencé par le CSP de Hoare Et par C Mais il est un langage pour la spécification de modèles Pas un langage dimplantation De compréhension facile pour les implémenteurs Admet la communication Par variables globales partagées Synchrone, directe Asynchrone, par canaux

69 INF6001 Chap 7 69 Promela Model A Promela model consist of: type declarations channel declarations global variable declarations process declarations [ init process] behaviour of the processes: local variables + statements - simple vars - structured vars - vars can be accessed by all processes initialises variables and starts processes chan ch = [ dim ] of { type, … } asynchronous:dim > 0 rendez-vous:dim == 0 mtype, constants, typedefs (records)

70 INF6001 Chap 7 70 mtype = {REQ,ACK}; typedef Msg { byte a[2]; mtype tp; } ; chan toR = [1] of {Msg}; bool flag; proctype Sender() { Msg m;... m.a[0]=2; m.a[1]=7; m.tp = REQ; toR ! m; } proctype Receiver(byte n) { Msg m;... toR ? m; } init { run Sender(); run Receiver(2); } Promela Model 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 channel declaration creates processes global variable local variable message types (constants) record declaration Example of a Promela model Inputs/outputs

71 INF6001 Chap 7 71 Processes (1) A process type ( proctype ) consist of a name a list of formal parameters local variable declarations body proctype Sender(chan in; chan out) { bit sndB, rcvB; do :: out ! MSG, sndB -> in ? ACK, rcvB; if :: sndB == rcvB -> sndB = 1-sndB :: else -> skip fi od } name local variables body formal parameters The body consist of a sequence of statements. Une sortie et puis ->

72 INF6001 Chap 7 72 Statements The body of a process consists of a sequence of statements. A statement is either executable: the statement can be executed immediately. blocked: the statement cannot be executed. An assignment is always executable. An expression is also a statement; it is executable if it evaluates to non-zero. 2 < 3 always executable x < 27 only executable if value of x is smaller x executable if x is not equal to –3 executable/blocked depends on the global state of the system.

73 INF6001 Chap 7 73 Statements (2) The skip statement is always executable. does nothing, only changes process process counter 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; } Can only become executable if some other process makes x greater than 2. Executable if Noot can be created… Statements are separated by a semi-colon: ;. or by the equivalent ->

74 INF6001 Chap 7 74 Statements (3) assert( ); The assert -statement is always executable. If evaluates to zero, SPIN will exit with an error, as the 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;... toReceiver ? msg; assert(msg != ERROR);... }

75 INF6001 Chap 7 75 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). exception: rendez-vous communication. 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. only one choice is made, non-deterministically. = randomly

76 INF6001 Chap 7 76 Bit alterné en SPIN 1 #define MAX5 2 3 mtype = { mesg, ack, nak, err }; 4 5 proctype sender(chan in, out) 6 {byte o, s, r; 7 8 o=MAX-1; 9 do 10 :: o = (o+1)%MAX; /* next msg */ 11 again: if 12 :: out!mesg(o,s) /* send */ 13 :: out!err(0,0) /* distort */ 14 :: skip /* or lose */ 15 fi; 16 if 17 :: timeout -> goto again 18 :: in?err(0,0) -> goto again 19 :: in?nak(r,0) -> goto again 20 :: in?ack(r,0) -> 21 if 22 :: (r == s) -> goto progress 23 :: (r != s) -> goto again 24 fi 25 fi; 26 progress:s = 1-s/* toggle seqno */ 27 od 28 } proctype receiver(chan in, out) 31 {byte i;/* actual input */ 32 byte s;/* actual seqno */ 33 byte es;/* expected seqno */ 34 byte ei;/* expected input */ do 37 :: in?mesg(i, s) -> 38 if 39 :: (s == es) -> 40 assert(i == ei); 41 progress: es = 1 - es; 42 ei = (ei + 1)%MAX; 43 if 44 /* send, * :: out!ack(s,0) 45 /* distort */ :: out!err(0,0) 46 /* or lose :: skip 47 fi 48 :: (s != es) -> 49 if 50 /* send, */:: out!nak(s,0) 51 /* distort */ :: out!err(0,0) 52 /* or lose */:: skip 53 fi 54 fi 55 :: in?err -> 56 out!nak(s,0) 57 od 58 } init { 61 chan s_r = [1] of { mtype,byte,byte }; 62 chan r_s = [1] of { mtype,byte,byte }; 63 atomic { 64 run sender(r_s, s_r); 65 run receiver(s_r, r_s) 66 } 67 } 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 détails intéressants dans le site)

77 INF6001 Chap 7 77 Xspin in a nutshell Xspin allows the user to edit Promela models (+ syntax check) simulate Promela models random interactive guided verify Promela models 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) with dialog boxes to set various options and directives to tune the verification process

78 INF6001 Chap 7 78 Conclusions sur SPIN Bases théoriques très solides Logique temporelle linéaire et automates de Büchi Outil très performant Loutil de vérification le plus utilisé dans notre domaine Excellent survol pratique sur SPIN et plusieurs des concepts que nous avons vu:

79 Exemples très pratiques Vérification de la conception dun four microondes: Est-il possible que dans des situations particulières le four puisse cuir avec la porte ouverte? Vérification de la conception dun avion: Est-il possible que les freins moteur puissent être activés avant que lavion touche le sol? Conception de matériel Etc. etc. INF6001 Chap 7 79

80 Reconnaissance Les vastes applications du Model Checking ont motivé loctroi du prix Turing à trois de ses inventeurs principaux: Sifakis, Clarke, Emerson INF6001 Chap 7 80

81 INF6001 Chap 7 81 Application de la logique temporelle Il faut savoir que: La logique temporelle linéaire LTL que nous venons de discuter nest quune des logiques temporelles qui ont été étudiées Il y a aussi la logique linéaire à branchements Computational Tree Logic, le calcul, etc. Elle ou ces autres logiques peuvent être utilisées pour nimporte quel système pour lequel il est possible de construire un automate global Donc avec SDL, LOTOS, Réseaux de Petri…

82 Structures de Kripke Au lieu des automates de Büchi, on utilise parfois des structures semblables qui sappellent structures de Kripke. Différence principale est que les assertions logiques dans les automates de Büchi se trouvent sur les arêtes, dans les structures de Kripke se trouvent sur les états. Un type de structure peut être transformé dans lautre. Le point important est que certaines analyses peuvent être faites plus facilement sur une structure que sur lautre. INF6001 Chap 7 82

83 INF6001 Chap 7 83 Example (mais ce nest pas toujours aussi simple que ça) Kripke p,q p Büchi: p,q vrai p p Ceci est { p, q} Source: Notes de cours de Ofer Strichman, Technion


Télécharger ppt "Chap 7 1 Chapitre 7 Vérification de modèles: Automates de Büchi et SPIN (Holzmann Chap. 6) (réserve à la biblio)"

Présentations similaires


Annonces Google