Скачать презентацию Chapitre 7 Vérification de modèles Automates de Büchi Скачать презентацию Chapitre 7 Vérification de modèles Automates de Büchi

c9c427ee0682809abb9d7998b9d2843f.ppt

  • Количество слайдов: 90

Chapitre 7 Vérification de modèles: Automates de Büchi et SPIN (Holzmann Chap. 6) Chap Chapitre 7 Vérification de modèles: Automates de Büchi et SPIN (Holzmann Chap. 6) Chap 7 http: //w 3. uqo. ca/luigi/INF 6001/ 1

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

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

Vérification de modèle Composition synchrone Modèle à vérifier Automate exprimant des propriétés à vérifier Vérification de modèle Composition synchrone Modèle à vérifier Automate exprimant des propriétés à vérifier On peut dire que les deux côtés sont des modèles: L’automate est un modèle d’une propriété logique à vérifier INF 6001 Chap 7 4

Automates de Büchi l Les automates de Büchi sont des automates spéciaux qui peuvent Automates de Büchi l Les automates de Büchi sont des automates spéciaux qui peuvent vérifier certaine propriétés logiques Julius Richard Büchi INF 6001 Chap 7 5

Exemple AB pour vérifier p p s 1 Cet AB synchronise avec un autre Exemple AB pour vérifier p p s 1 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. . . INF 6001 Chap 7 6

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

Exemple AB pour vérifier p p s 0 vrai p s 1 Cet AB Exemple AB pour vérifier p p s 0 vrai p s 1 Cet AB est prêt à accepter des transitions où p est faux, mais il est content seulement quand p devient vrai. Après il reste content, n’importe. INF 6001 Chap 7 8

Exercice: Prouver x≤ 0 pour ce modèle X=X/2 s 0 X=13 s 1 X≤ Exercice: Prouver x≤ 0 pour ce modèle X=X/2 s 0 X=13 s 1 X≤ 0 X=X/2+1 s 2 X>0 s 3 X: entier et / a résultat entier (tronqué) Automate de Büchi à utiliser INF 6001 Chap 7 9

Schéma de Solution s 0, s 0 s 2, s 0 X=13, ¬X≤ 0 Schéma de Solution s 0, s 0 s 2, s 0 X=13, ¬X≤ 0 X=1, ¬X≤ 0 s 1, s 0 s 3, s 0 X=7, ¬X≤ 0 X=0, X≤ 0 x≤ 0 s 2, s 1 X=7, ¬X≤ 0 X=0, vrai X=1, ¬X≤ 0 s 0, s 1 X=13, vrai Après ça, le système continue normalement mais la propriété est satisfaite, l’AB reste en état s 1 INF 6001 Chap 7 s 1, s 1 X=7, vrai Etc. 10

Composition synchrone l Comme dans la composition synchrone, deux transitions peuvent être composées quand Composition synchrone l Comme dans la composition synchrone, deux transitions peuvent être composées quand elles sont compatibles, p. ex. X=7, ¬X≤ 0 ou X=7, vrai l vrai=true est compatible avec tout INF 6001 Chap 7 11

Incomplétude des AB l L’AB de gauche ne considère pas le cas de recevoir Incomplétude des AB l L’AB de gauche ne considère pas le cas de recevoir un p l 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 p p p s 1 INF 6001 Chap 7 = s 1 vrai p s 2 réjet! 12

Non-déterminisme … l Considérez la propriété: soleil (enfin toujours soleil) l l Après un Non-déterminisme … l Considérez la propriété: soleil (enfin toujours soleil) l l Après un certain moment, il y aura toujours du soleil Mais à partir de quand? l l Si un jour il y aura du soleil, ce n’est pas nécessairement le début de l’époque du soleil… Donc advenant une journée de soleil, il faut en même temps v v Considérer la possibilité qu’elle 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 INF 6001 Chap 7 13

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

Comparer avec AB déterministe L’AB ci-dessous n’est pas bon pour p Car s’il y Comparer avec AB déterministe L’AB ci-dessous n’est pas bon pour p Car s’il y a un 1 er p qui n’est pas suivi par p il rejette. Il faut dans ce cas continuer à cher un p futur après lequel p ¬p p s 0 s 1 p Cet AB montre aussi les limites de l’expressivité des opérateurs , car ce qu’il exprime (après le 1 er p, toujours p) n’est pas exprimable avec ces opérateurs seulement. faut utiliser U: ¬ p U p INF 6001 Chap 7 15

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

Exemple concret de fonctionnement de nondéterminisme m 0 p Nous voulons vérifier si p Exemple concret de fonctionnement de nondéterminisme m 0 p Nous voulons vérifier si p ici m 1 q m 2 p 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 l’apparier 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 l’apparier 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 INF 6001 Chap 7 17

Exécution non-déterministe avec échec de parcours m 0, s 0 p, true m 1, Exécution non-déterministe avec échec de parcours m 0, s 0 p, true m 1, s 0 p, p m 1, s 1 q, true m 2, s 1 p, p OK p INF 6001 Chap 7 18

Exercices l Faites-vous des autres exemples INF 6001 Chap 7 19 Exercices l Faites-vous des autres exemples INF 6001 Chap 7 19

Le non-déterminisme peut être essentiel l Résultat théorique: il n’existe pas un algorithme qui Le non-déterminisme peut être essentiel l Résultat théorique: il n’existe pas un algorithme qui permette de transformer un AB non déterministe dans un AB déterministe l Les AB non-déterministes peuvent représenter des propriétés que le déterministes ne peuvent pas l Ceci est en contraste avec la théorie des automates conventionnels, où la transformation nondet est toujours possible INF 6001 Chap 7 20

Autre exemple impliquant U (until fort) p s 0 vrai s 1 q p. Autre exemple impliquant U (until fort) p s 0 vrai s 1 q p. Uq INF 6001 Chap 7 21

Deux cas limites l AB pour la tautologie: vrai, ou vrai ou p p Deux cas limites l AB pour la tautologie: vrai, ou vrai ou p p etc. l Cet AB accepte toujours tout. vrai s 1 l AB pour la contradiction: faux, ou faux ou p p etc. Il n’y a pas d’AB pour la contradiction: il est vide l Il n’y a pas de modèles pour les systèmes contradictoires INF 6001 Chap 7 l Il n’est pas possible de vérifier un système l 22

Exemples impliquant opérateurs propositionnels utilisant http: //www. lsv. ens-cachan. fr/~gastin/ltl 2 ba/index. php F Exemples impliquant opérateurs propositionnels utilisant http: //www. lsv. ens-cachan. fr/~gastin/ltl 2 ba/index. php F p || F q = F (p || q) p || Fq G F p && G q = G ( F p && q ) INF 6001 Chap 7 G= , F= , 1=true Opérateurs logiques de C G ( F p || q ) 23

Exemple l F p || F q = F (p || q) l Il Exemple l F p || F q = F (p || q) l Il continue à cher jusqu’à ce qu’il trouve (p || q) INF 6001 Chap 7 24

Exemple l p || Fq l Accepte si (p || q) est vrai au Exemple l p || Fq l Accepte si (p || q) est vrai au début l Sinon il continue à cher jusqu’à q INF 6001 Chap 7 25

Exemple l G F p && G q = G (F p && q Exemple l G F p && G q = G (F p && q ) l Il accepte s’il trouve tout de suite p&&q qui reste vrai l Si q devient vrai sans p, il continue de se INF 6001 Chap 7 26

Exemple l G ( F p || q ) l Il accepte s’il trouve Exemple l G ( F p || q ) l Il accepte s’il trouve tout de suite p||q qui reste vrai l Il continue aussi de cher un p et il accepte quand dorénavant p||q INF 6001 Chap 7 27

Quelques surprises … (possiblement) l Utilisant l’outil vous pourrez vérifier que: l p U Quelques surprises … (possiblement) l Utilisant l’outil vous pourrez vérifier que: l p U q peut être vrai sans aucun p l p q a besoin seulement de q pour être vrai, mais il est aussi vrai si p est faux dorénavant(faux implique n’importe quoi) l p ○q est vrai dans deux cas: l p est dorénavant faux ou q est vrai dans le prochain état l La logique temporelle n’est pas vraiment intuitive au début … INF 6001 Chap 7 28

Efficacité de calcul l Nous ne prenons pas en considération pour l’instant les aspects Efficacité de calcul l Nous ne prenons pas en considération pour l’instant les aspects d’efficacité de calcul l Cependant la présence de nondéterminisme implique l l 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 l Tenir compte de toutes ces possibilités qui peuvent conduire à des échecs cause inefficacité dans le calcul INF 6001 Chap 7 29

Exemple où le nondét. n’est pas nécessaire p toujours finalement p (infiniment souvent p) Exemple où le nondét. n’est pas nécessaire p toujours finalement p (infiniment souvent p) vrai s 0 p vrai s 1 Accepte seulement quand il continuera d’y avoir des p dans le futur INF 6001 Chap 7 30

Équivalent déterministe p toujours finalement p (infiniment souvent p) p ¬p s 0 INF Équivalent déterministe p toujours finalement p (infiniment souvent p) p ¬p s 0 INF 6001 Chap 7 p ¬p s 1 31

Exemple: utiliser les équivalences p = p toujours finalement p vrai s 0 p Exemple: utiliser les équivalences p = p toujours finalement p vrai s 0 p vrai s 1 Un p doit être trouvé, après on peut trouver autre chose, mais il faut retourner sur p Pourquoi on ne peut pas mettre p au lieu de vrai? INF 6001 Chap 7 32

Exemple (pas très intuitif, mais…) (p q) = ( p q) Dorénavant, un p 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 n’a pas besoin de se produire afin que q se produise et rende la formule vraie INF 6001 Chap 7 33

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

Pour bien comprendre… l Pour bien comprendre cet AB, considérez le fait qu’un q Pour bien comprendre… l Pour bien comprendre cet AB, considérez le fait qu’un q peut se produire tout seul, même sans p l Mais dès qu’un p se vérifie, l’automate passe à s 1, qui n’est pas un état d’acceptation l Il retourne et peut rester dans l’état d’acceptation seulement après un q l À ce moment là, nous retournons à l’état initial dans lequel nous pourrons avoir (ou non …) des autres p et q INF 6001 Chap 7 35

Autres exemples l D’autres exemples plus complexes sont dans le livre de Holzmann, Chap. Autres exemples l D’autres exemples plus complexes sont dans le livre de Holzmann, Chap. 6 l En pratique, on a rarement besoin d’utiliser des formules complexes l Ou on simplifie l’assertion pour les éviter. . . l Un programme pour trouver un AB pour une formule LTL: l http: //www. lsv. ens-cachan. fr/~gastin/ltl 2 ba/ l Büchi store, base de données d’AB: l http: //buchi. im. ntu. edu. tw/ INF 6001 Chap 7 36

Puissance: LTL et AB l Le formalisme des AB est plus puissant que celui Puissance: LTL et AB l Le formalisme des AB est plus puissant que celui de la LTL l l On peut construire des AB qui ne peuvent pas être exprimés en LTL Intuitivement, ceci peut être justifié par le fait qu’en 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 l Exercice: Faites vos expériences à ce sujet! Cherchez à définir des AB qui n’ont pas un correspondant en LTL INF 6001 Chap 7 37

Mais la construction du modèle est le problème! l Problème fondamental: l l l Mais la construction du modèle est le problème! l Problème fondamental: l l l Soit S l’automate 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 l’entrelacement des actions des composantes de S l Bonne nouvelle, pour certaines propriétés S n’a pas besoin d’être construit complet auparavant l l Il peut être construit au fur et à mesure qu’il est composé avec l’automate de Büchi et n’a pas besoin d’être gardé entièrement en mémoire ‘on the fly model checking’ INF 6001 Chap 7 38

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

Test d’honnêtété: deux manières de contrôler Comportements honnêtes Comport. de A Dans ce cas, Test d’honnêtété: deux manières de contrôler Comportements honnêtes Comport. de A Dans ce cas, on examine tous les comportements de A et pour chacun on détermine s’il est honnête INF 6001 Chap 7 Comportements malhonnêtes Comport. de A Dans ce cas, on cherche s’ily a des comportement contraires: il suffit d’en trouver un seul 40

L’importance des contrexemples l Il pourrait être possible de construire le modèle complet d’un L’importance des contrexemples l Il pourrait être possible de construire le modèle complet d’un système et de contrôler qu’un ensemble de propriétés est toujours valable, dans toute évolution possible du système. l Dans ce cas, super! l Sinon, les model checkers d’aujourd’hui 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. l Si à un certain point on trouve une violation, ceci est un contre-exemple à la propriété, une erreur qu’il faut corriger l C’est encore INF 6001 Chap 7 une trouvaille importante. 41

Propriétés d’un système l Pour prouver qu’ un système jouit des propriétés spécifiées par Propriétés d’un système l 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 l Nous appelons ‘langage’ d’un automate l’ensemble de chaînes, l’ensemble des comportements, qu’il accepte l Propriétés ou exigences positives l l 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 l’AB qui exprime l’exigence l Propriétés ou exigences négatives Aucune exécution du système ne satisfait aux propriétés l Le langage du système et le langage de l’exigence doivent avoir intersection vide l Si l’intersection est non vide, les exécutions dans l’intersection sont des contre-exemples, montrant dans quelles situations la INF 6001 Chap 7 est violée 42 propriété l

Exemple simple l Supposons qu’on veuille contrôler que dans un système: x<4 l Nous Exemple simple l Supposons qu’on veuille contrôler que dans un système: x<4 l Nous pourrions cher à développer le modèle complet pour voir si ceci est toujours vrai l Ou nous pouvons cher 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 INF 6001 Chap 7 43 -exemple et donc probablement une erreur à

Never claims: exigences négatives l Donc il est plus efficace de contrôler l’absence de Never claims: exigences négatives l Donc il est plus efficace de contrôler l’absence de comportements défendus plutôt que de contrôler tous les comportements permis l L’AB approprié est obtenu par négation d’une formule de logique temporelle INF 6001 Chap 7 44

Exemple basé sur la formula précédente: Exigence: (p q) = ( p q) Ou: Exemple basé sur la formula précédente: Exigence: (p q) = ( p q) Ou: Dorénavant, un p est suivi toujours par un q Cette formule est fausse s’il y aura un p et puis aucun q INF 6001 Chap 7 45

Automate négation: never automata Supposons que nous voulions qu’un comportement niant la formule précédente Automate négation: never automata Supposons que nous voulions qu’un comportement niant la formule précédente soit détecté: (p q) = ( p q) = (p q) = (p q) par définition de par loi de dualité par loi de De Morgan par dualité s 0 INF 6001 Chap 7 q true p q s 1 Si un comportement tombe dans l’état s 1, il n’est pas conforme aux exigences (que dorénavant un p est toujours suivi par un q) 46

Un exemple plus compliqué INF 6001 Chap 7 47 Un exemple plus compliqué INF 6001 Chap 7 47

Un système à vérifier (source: H. v. d. Schoot) Exercice: calculer la machine globale Un système à vérifier (source: H. v. d. Schoot) Exercice: calculer la machine globale de P 1 et P 2 (ils ne communiquent pas, donc entrelecement pur). INF 6001 Chap 7 48

Une propriété à vérifier Nous désirons voir si f = w d Faisant la 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 INF 6001 Chap 7 ¬d ¬w ¬d w s’est produit et d continue de ne pas se produire, f est faux true d s’est produit et ¬f est faux, f est vrai 49

Notation utilisée dans cet exemple l Σ est l’ensemble de toutes les actions possibles Notation utilisée dans cet exemple l Σ est l’ensemble de toutes les actions possibles l Donc Σ est équivalent à true, prend tout l Si = {a, b, c, d, v, w}, alors Σ est (a v b v c … ) l Σ {a, b} est l’ensemble de toutes les actions possibles moins a et b, donc il prend tout moins a et b, l il est donc (¬a ¬b) INF 6001 Chap 7 50

Exemple (source: H. v. d. Schoot) Nous désirons voir si ¬f = w ¬ 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 s’est produit, et non d, car P 1 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. INF 6001 Chap 7 Donc la propriété f est fausse dans P 1 x P 2. 51

Cycles d’acceptation l Selon la définition d’acceptation dans les automates de Büchi, seulement les Cycles d’acceptation l Selon la définition d’acceptation 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 l Seulement ces chaînes sont des contreexemples l Donc dans P 1 x. P 2 nous ne sommes pas intéressés aux calculs qui finissent dans l’état (13, 22) v Toute la partie gauche du diagramme l Un exemple de cycle d’acceptation: l l v; w; a; b; a; b … Exercice: trouver les autres l La Chap 7 INF 6001 propriété serait vraie après avoir enlevé la 52

Preuve d’exigences négatives l Étant donné un système S et une formule LTL f Preuve d’exigences négatives l Étant donné un système S et une formule LTL f à contrôler pour S l Construire un AB A¬f pour la négation de f l l l Il n’accepte 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 l S’il est vide, toutes les exécutions de S satisfont f l S’il 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 n’a pas besoin d’être calculée dans sa totalité car dès INF 6001 Chap 7 l 53

Efficacité de ces procédures l Par un argument théorique on montre que, l l Efficacité de ces procédures l Par un argument théorique on montre que, l l pour un système S qui contient |S| états et un AB Af qui vérifie une propriété f et contient |Af| états l Le nombre d’états à considérer pour la preuve d’inclusion est v l entre |Af| + |S| et |Af| x |S| Le nombre d’états à considérer pour la preuve d’intersection vide est v entre 0 et |Af| x |S| § En fait, la preuve de l’intersection vide peut aboutir tout de suite (si un contrexemple est trouvé au tout début) l Pour cette raison, la méthode utilisée par SPIN est celleledeoùprouver l’exigence négative, l’intersection 0 dans cas le modèle et l’AB ne débutent pas de la même manière p. ex. un vide test de conduite et un test de cuisine … INF 6001 Chap 7 54

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

En mots… Gerard J. Holzmann : The Model Checker SPIN. IEEE TRANSACTIONS ON SOFTWARE 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. INF 6001 Chap 7 56

Exploration de l’espace d’états global l Si une exécution erronée est détectée, l’exploration de Exploration de l’espace d’états global l Si une exécution erronée est détectée, l’exploration de l’espace d’états peut être arrêtée l Sinon, l’exploration doit continuer jusqu’à ce que tous les états auront été explorés l À moins que l’algorithme n’excède le temps ou la mémoire disponible… l 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 INF 6001 Chap 7 57

Algorithme “supertrace” l SPIN est fourni d’une méthode extrêmement efficace d’analyser les états d’énormes Algorithme “supertrace” l SPIN est fourni d’une méthode extrêmement efficace d’analyser les états d’énormes machines à états l Concernant le problème de contrôler que tous les états ont été explorés l l l Un bit par état: exploré ou non Algorithme d’hachage pour mettre en correspondance un état du système avec l’adresse du bit qui le représente Donc chaque état est codé dans son adresse, le bit dit seulement si l’état a été exploré l L’adresse dira ‘vrai’ si l’état correspondent a été exploré, ‘faux’ sinon. l Cependant nous pouvons avoir des faux résultats à cause des ‘doubles affectations’ possibles dans les algorithmes de hachage l Pour une histoire complète, v. l http: //www. spinroot. com/spin/Doc/Book 91_PDF/ch 11. pdf l Section 11. 4 INF 6001 Chap 7 58

Autre problème: obtenir l’AB optimal l Un problème moins important, mais aussi important, est Autre problème: obtenir l’AB optimal l Un problème moins important, mais aussi important, est d’avoir un AB optimal l Les algorithmes connus de génération d’AB à partir de formules de logique temporelle ne garantissent pas l’optimalité de l’AB généré l Sujet de recherche encore ouvert… l Même la définition d’optimalité n’est pas claire INF 6001 Chap 7 59

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

Représentation de la machine never en SPIN d d s 0 w d s Représentation de la machine never en SPIN d d s 0 w d s 1 never { S 0_init : if : : (!d) -> goto S 0_init : : (w && !d) -> goto accept_S 1 fi; accept_S 1 : if : : (!d) -> goto accept_S 1 fi; } INF 6001 Chap 7 61

Stutter extension rule: extension bègue? l Pour prendre en considération le case des chaînes Stutter extension rule: extension bègue? l Pour prendre en considération le case des chaînes finies l 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: l Événements ε: le bégaiement l De cette manière, une propriété est vraie pour l’exécution étendue si elle est vraie pour l’exécution finie originale l P. ex. p est vrai pour une exécution qui contient une a a a seule transition pour laquelle p est vrai ε INF 6001 Chap 7 62

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

Remerciements… l Pour la partie suivante de ce cours, j’ai utilisé les notes de: Remerciements… l Pour la partie suivante de ce cours, j’ai utilisé les notes de: l Theo Ruys, voir aussi son tutoriel SPIN: l http: //spinroot. com/spin/Doc/Spin. Tutorial. pdf INF 6001 Chap 7 64

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

Définition[Clarke & Emerson 1981] “Model checking is an automated technique that, given a finite-state 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. ” INF 6001 Chap 7 66

À quel point faisons-nous cette analyse l Approche traditionnelle: l l l Dans le À quel point faisons-nous cette analyse l Approche traditionnelle: l l l Dans le processus de conception, on crée un modèle abstrait du processus avant de commencer l’implantation L’analyse est faite sur ce modèle L’implantation est puis obtenue à partir du modèle par un procédé de raffinement l Approche dite ‘moderne’: l l Le modèle est obtenu à partir de l’implémentation par un procédé d’abstraction Qui est automatisable, au moins en principe l 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 l Elle demande des algorithmes extrêmement efficaces car les modèles obtenus à partir de l’implantation contiennent INF 6001 Chap 7 détails beaucoup de 67

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

Promela et SPIN l Promela est un langage pour la spécification des systèmes répartis Promela et SPIN l Promela est un langage pour la spécification des systèmes répartis l SPIN est l’analyseur (model checker) et son point de départ est la théorie que nous venons de discuter l Simple Promela INterpreter INF 6001 Chap 7 69

Promela/SPIN: un système pour l’analyse des modèles l Promela/SPIN est un système développé à Promela/SPIN: un système pour l’analyse des modèles l Promela/SPIN est un système développé à partir du début des années 1990 par Gerhard Holzmann, un chercheur d’AT&T Labs l l l 1991 version initiale 1995 réductions d’ordre partiel 1997 minimisation de l’AB 2003 inclusion de code C et Breadth-First Search … l Il est un des analyseurs de modèles plus connus et efficaces INF 6001 Chap 7 70

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

Promela l Protocol/Process Meta Language l Influencé par le CSP de Hoare l Et Promela l Protocol/Process Meta Language l Influencé par le CSP de Hoare l Et par C l l Mais il est un langage pour la spécification de modèles Pas un langage d’implantation l De compréhension facile pour les implémenteurs l Admet la communication l Par variables globales partagées Synchrone, directe l INF 6001 Chap 7 72

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

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

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

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

Statements are separated by a semi-colon: “; ”. (2) or by the equivalent “->” Statements are separated by a semi-colon: “; ”. (2) or by the equivalent “->” l The skip statement is always executable. l “does nothing”, only changes process’ process counter l A run statement is only executable if a new process can be created (remember: the number int x; of processes is bounded). proctype Aap() { } int y=1; skip; run Noot(); x=2; x>2 && y==1; skip; INF 6001 Chap 7 Executable if Noot can be created… Can only become executable if some other process makes x greater than 2. 77

Statements (3) l assert(<expr>); l l l The assert-statement is always executable. If <expr> Statements (3) l assert(); l l l 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; . . . to. Receiver ? msg; assert(msg != ERROR); } INF 6001 Chap 7 . . . 78

Interleaving Semantics l Promela processes execute concurrently. l Non-deterministic scheduling of the processes. l Interleaving Semantics l Promela processes execute concurrently. l Non-deterministic scheduling of the processes. l Processes are interleaved (statements of different processes do not occur at the same time). l exception: rendez-vous communication. l All statements are atomic; each statement is executed without interleaving with other processes. l Each process may have several different possible actions enabled at each point of execution. l only one choice is made, non-deterministically. INF 6001 Chap 7 = randomly 79

Bit alterné en SPIN http: //spinroot. com/spin/Manual. html 1 #define MAX 5 2 3 Bit alterné en SPIN http: //spinroot. com/spin/Manual. html 1 #define MAX 5 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 } 29 30 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 */ 35 36 do 37 : : in? mesg(i, s) -> 38 if 39 : : (s == es) -> 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 assert(i == ei); progress: /* send, * /* distort */ /* or lose /* send, */ /* distort */ /* or lose */ 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 fi : : in? err -> out!nak(s, 0) od } init { chan s_r = [1] of { mtype, byte }; chan r_s = [1] of { mtype, byte }; atomic { run sender(r_s, s_r); run receiver(s_r, r_s) } } 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) INF 6001 Chap 7 80

Xspin in a nutshell l Xspin allows the user to l l edit Promela Xspin in a nutshell l Xspin allows the user to l l edit Promela models (+ syntax check) simulate Promela models l random l interactive with dialog boxes to set l guided various options and directives verify Promela models to tune the verification process l exhaustive l bitstate hashing model additional features l Xspin suggest abstractions to a Promela model (slicing) l Xspin can draw automata for each process l LTL property manager l Help system (with verification/simulation guidelines) INF 6001 Chap 7 81

Conclusions sur SPIN l Bases théoriques très solides l Logique temporelle linéaire et automates Conclusions sur SPIN l Bases théoriques très solides l Logique temporelle linéaire et automates de Büchi l Outil très performant l L’outil de vérification le plus utilisé dans notre domaine l Excellent survol pratique sur SPIN et plusieurs des concepts que nous avons vu: l http: //plan 9. bell-labs. com/sys/doc/spin. html INF 6001 Chap 7 82

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

Reconnaissance l Les vastes applications du Model Checking ont motivé l’octroi du prix Turing Reconnaissance l Les vastes applications du Model Checking ont motivé l’octroi du prix Turing à trois de ses inventeurs principaux: l Sifakis, Clarke, Emerson INF 6001 Chap 7 84

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

Pour voir un peu le CTL Computational Tree Logic l http: //www. inf. ed. Pour voir un peu le CTL Computational Tree Logic l http: //www. inf. ed. ac. uk/teaching/courses/prop m/papers/CTL. pdf INF 6001 Chap 7 86

Structures de Kripke l Au lieu des automates de Büchi, on utilise parfois des Structures de Kripke l Au lieu des automates de Büchi, on utilise parfois des structures semblables qui s’appellent ‘structures de Kripke’. l Différence principale est que les assertions logiques l l dans les automates de Büchi se trouvent sur les arêtes, dans les structures de Kripke se trouvent sur les états. l Un type de structure peut être transformé dans l’autre. INF 6001 Chap l Le point 7 important est que certaines analyses 87

Example (mais ce n’est pas toujours aussi simple que ça) Ceci est { p, Example (mais ce n’est pas toujours aussi simple que ça) Ceci est { p, q} l Kripke p, q p l Büchi: p, q vrai p Source: Notes de cours de Ofer Strichman, Technion INF 6001 Chap 7 88

Critique de l’approche logique temporelle l Méthode théoriquement très bien fondée l Énormément d’études Critique de l’approche logique temporelle l Méthode théoriquement très bien fondée l Énormément d’études et publications dans le sujet l Outils très performants (SPIN n’en est qu’un) l Applicable à n’importe quel logiciel, pas seulement protocoles l Exige des connaissances sophistiquées sur comment spécifier des propriétés intéressantes pour un système donné l Nous n’avons pas même commencé à dire comment on pourrait spécifier des propriétés du type: l Tous les messages seront livrés dans l’ordre d’envoi INF 6001 Chap 7 89

Outils automates Büchi l Plusieurs outils existent sur le web pour les automates de Outils automates Büchi l Plusieurs outils existent sur le web pour les automates de Büchi, outils qui sont témoins de la popularité de ce sujet l l l http: //www. lsv. enscachan. fr/~gastin/ltl 2 ba/index. php https: //spot. lrde. epita. fr/trans. html http: //buchi. im. ntu. edu. tw/ http: //goal. im. ntu. edu. tw https: //spot. lrde. epita. fr/trans. html INF 6001 Chap 7 90