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




Chap 7   http://w3.uqo.ca/luigi/INF6001/                               1
Propriétés d’états et exécutions (chaînes)
                                                    X=X/2



             X=13              X=X/2+1             X>0
      s0                  s1               s2                 s3

                    X≤0
                                                                      X: entier et / a
                                                                      résultat entier
                                                                      (tronqué)
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.  x≤0 ou  x≤0, mais pas  x≤0.
        Observez que dans ce cas le contrôle est sur les transitions.


                                                              État d‟acceptation
                                                                       .
 INF6001 Chap 7                                                                    2
Comment vérifier les propriétés temporelles?

 Nous avons une machine dont nous pouvons observer
  certaines propriétés, p.ex.
     qu‟une 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
INF6001 Chap 7                                                   3
Vérification de modèle
                 Composition synchrone




                                     Automate exprimant
        Modèle à vérifier              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
INF6001 Chap 7                                                4
Exemple
AB pour vérifier p


                                          p


                                      s1

   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...


INF6001 Chap 7                                                  5
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


INF6001 Chap 7                                                         6
Exemple

         AB pour vérifierp


                        p                                    vrai


                     s0                                  s1
                                     p
     Cet AB est prêt à accepter des transitions où p est faux,
     mais il est content seulement quand p devient vrai.


INF6001 Chap 7                                                      7
Exercice: Prouver  x≤0 pour ce modèle
                                                 X=X/2



          X=13                 X=X/2+1           X>0
     s0                 s1               s2              s3       X: entier et / a
                                                                  résultat entier
                                                                  (tronqué)
                  X≤0




                 x≤0                      vrai

                                                              Automate de
                                                              Büchi à utiliser
             s0                          s1
                         x≤0



INF6001 Chap 7                                                               8
Schéma de Solution                                                                        x≤0

                                  X=13, ¬X≤0                         X=7, ¬X≤0                X=7, ¬X≤0
                 s0,s0                                    s1,s0                     s2,s0




                                 X=1, ¬X≤0                        X=0, X≤0                  X=0, vrai
                 s2,s0                                  s3,s0                    s2,s1                    s0,s1
X=1, ¬X≤0
                                                                                                              X=13, vrai
                                                X=X/2




  s0
        X=13
                      s1
                            X=X/2+1
                                      s2
                                                X>0
                                                         s3          Après ça, le système                 s1,s1
                                                                     continue normalement
                X≤0
                                                                     mais la propriété est                        X=7, vrai
               x≤0                          vrai                     satisfaite, l‟AB reste en
                                                                     état s1                              Etc.
           s0                              s1
                           x≤0

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




INF6001 Chap 7                                          10
Incomplétude des AB
 L‟AB 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

                  p                           p
    p


              s1          =              s1              s2
                                                  p
                                                              réjet!


 INF6001 Chap 7                                                      11
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 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
             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




INF6001 Chap 7                                                                          12
Exemple de nondéterminisme
AB pour vérifier que p           (enfin toujours p)


                 vrai                             p


                  s0                          s1
                             p

„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 …

INF6001 Chap 7                                           13
Comparer avec AB déterministe

L‟AB ci-dessous n‟est pas bon pour p
Car s‟il y a un 1er p qui n‟est pas suivi par p il rejette.
Il faut dans ce cas continuer à chercher un p futur après
lequel p
                        ¬p                            p


                         s0                          s1
                                      p
 Cet AB montre aussi les limites de l‟expressivité des opérateurs , car
 ce qu‟il exprime (après le 1er p, toujours p) n‟est pas exprimable avec ces
 opérateurs seulement.
                        faut utiliser U:      ¬ p U p

INF6001 Chap 7                                                                 14
Nondéterminisme des AB
 Le nondéterminisme est une caractéristique importante des AB
        true                   p

                                                             p
             s0                               s1
                            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 s0, ou bien changer à
 s1.

 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



INF6001 Chap 7                                                                              15
Exemple concret de fonctionnement de nondéterminisme


                          m0
                      p                          true                         p
  Nous voulons
  vérifier si             m1
  p ici                                         s0                        s1
                      q                                       p
                          m2
                  p
Nous commençons dans l‟état global (m0,s0).
La machine à vérifier produit son premier p:
Nous ne savons pas
           si nous devons l‟apparier avec un p  (m1,s1).
           ou avec un true  (m1,s0).
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

 INF6001 Chap 7                                                                         16
Exécution non-déterministe avec échec de parcours

                                             m0,s0

                               p, true               p, p

                            m1,s0                      m1,s1


                  q, true

                 m2,s1


     p, p
                                             m0
                                         p                  true          p

                                             m1
                                         q                  s0           s1
                                                                    p
                                             m2                    p
                                     p
INF6001 Chap 7                                                           17
Exercices
 Faites-vous des autres exemples




INF6001 Chap 7                      18
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 l‟automate, 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 l‟ensemble des états d‟un 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 l‟ensemble de tous les sous-ensembles de ND
   -1 car l‟ensemble vide n‟est pas un état…
 Construction en principe exponentielle (pourquoi?)
 V. un manuel quelconque de théorie des automates


INF6001 Chap 7                                                                     19
La même exécution,
mais avec automate déterministe

                                       m0,s0
                            p,p
                            p, true

                              m1,s0
                              m1, s1
                  q, true

                 m2,s1                 Nous voyons ici de manière
                                       implicite que l‟état m1, s1 n‟a
         p, p                          pas de suite




INF6001 Chap 7                                                           20
Exercice


 Trouver un automate déterministe qui fait le même
  travail que l‟AB pour p
 Vous verrez qu‟il existe, mais il est plus compliqué




INF6001 Chap 7                                           21
Autre exemple impliquant U (until fort)



                 p               vrai


                 s0             s1
                      q


                          pUq




INF6001 Chap 7                            22
Deux cas limites
 AB pour la tautologie: vrai, ou vrai, ou vrai ou p          p
  etc.
                                                vrai
     Cet AB accepte toujours tout.



                                             s1

 AB pour la contradiction: faux, ou faux, ou faux ou
  p p etc.
     Il n‟y a pas d‟AB pour la contradiction: il est vide
     Il n’y a pas de modèles pour les systèmes contradictoires
     Il n’est pas possible de vérifier un système contradictoire
INF6001 Chap 7                                                      23
Exemples impliquant opérateurs propositionnels
(utilisant http://www.lsv.ens-cachan.fr/~gastin/ltl2ba/index.php)




               F p || F q = F (p || q)                 p || Fq




               G F p && G q =
               G ( F p && q )                           G ( F p || q )




INF6001 Chap 7                                                           24
Quelques surprises … (possiblement)
 Utilisant l‟outil 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 n‟est pas vraiment intuitive au
  début …
INF6001 Chap 7                                                25
Efficacité de calcul
 Nous ne prenons pas en considération pour l‟instant les aspects
  d‟efficacité 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

                                   true                              p


                                   s0                              s1
                                                 p

                                                                                 26
INF6001 Chap 7
Exemple

           p                   toujours finalement p
                                 (infiniment souvent p)


                  vrai

                                p
                 s0                             s1
                               vrai

  Accepte seulement quand il continuera d‟y avoir des p dans le futur


INF6001 Chap 7                                                          27
Parfois le nondéterminisme n’est pas nécessaire


          p           toujours finalement p
                        (infiniment souvent p)


                  ¬p                       p

                       p
                 s0                   s1
                       ¬p



INF6001 Chap 7                                   28
Exemple: utiliser les équivalences

            p          =          p         toujours finalement     p




                  vrai

                              p
                 s0                           s1
                             vrai

       Un p doit être trouvé, après on peut trouver autre chose, mais
       il faut retourner sur p



INF6001 Chap 7                                                              29
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




INF6001 Chap 7                                                                30
Exemple continuation

                                            Dorénavant, un p
    (p       q) = ( p         q)        est toujours suivi
                                            par un q


                 p q                 vrai


                        vrai
                 s0                    s1
                         q

      Accepte tant que p q est vrai, peut aussi
      passer à un état où un q doit se produire plus tard

INF6001 Chap 7                                                   31
Pour bien comprendre…
 Pour bien comprendre l‟AB précédent, considérez le
  fait que un q peut se produire tout seul, même sans p
 Mais dès qu‟un p se vérifie, l‟automate passe à s1, qui
  n‟est pas un état d‟acceptation
 Il retourne et peut rester dans l‟état d‟acceptation
  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
Autres exemples
 D‟autres exemples plus complexes sont dans le livre de
  Holzmann, Chap. 6
 En pratique, on a rarement besoin d‟utiliser des
  formules complexes
     Ou on simplifie l‟assertion pour les éviter...
 Un programme pour trouver un AB pour une formule
 LTL:
     http://www.lsv.ens-cachan.fr/~gastin/ltl2ba/
 Büchi store, base de données d‟AB:
     http://buchi.im.ntu.edu.tw/

INF6001 Chap 7                                         33
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 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
         Exercice: Faites vos expériences à ce sujet! Cherchez à définir
          des AB qui n‟ont pas un correspondant en LTL



INF6001 Chap 7                                                              34
Mais la construction du modèle est le problème!
 Problème fondamental:
     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
 Bonne nouvelle, S n‟a pas besoin d‟être construit complet
  auparavant
     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‟




INF6001 Chap 7                                                            35
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 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 que quelqu‟un 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
Test d’honnêtété: deux manières de contrôler



      Comportements                          Comportements
      honnêtes                               malhonnêtes

          Comport.                Comport.
          de A                    de A




  Dans ce cas, on examine tous
  les comportements de A et         Dans ce cas, on cherche s‟ily a
  pour chacun on détermine s‟il     des comportement contraires: il
  est honnête                       suffit d’en trouver un seul

INF6001 Chap 7                                                   37
L’importance des contrexemples
 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.
     Dans ce cas, super!
 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.
     Si à un certain point on trouve une violation, ceci est un contre-
      exemple à la propriété, une erreur qu‟il faut corriger
     C‟est encore une trouvaille importante.

INF6001 Chap 7                                                             38
Propriétés d’un 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‟ d‟un automate l‟ensemble de chaînes, l‟ensemble
  des comportements, qu‟il 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 l‟AB qui exprime l‟exigence
 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 l‟exigence doivent avoir intersection
       vide
      Si l‟intersection est non vide, les exécutions dans l‟intersection sont des contre-
       exemples, montrant dans quelles situations la propriété est violée

INF6001 Chap 7                                                                         39
Exemple simple
 Supposons qu‟on 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
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

 L‟AB approprié est obtenu par négation d‟une formule
  de logique temporelle




INF6001 Chap 7                                           41
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 s‟il y aura un p et
   puis aucun q




INF6001 Chap 7                                    42
Automate négation: never automata

Supposons que nous voulions qu‟un 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)                                                 q
                                true

                                         p       q
                               s0                             s1
                       Si un comportement tombe dans l‟état s1, il
                       n‟est pas conforme aux exigences

INF6001 Chap 7                                                       43
(source: H.v.d.Schoot)
Un système à vérifier




  Exercice: calculer la machine globale de P1 et P2
  (ils ne communiquent pas).
INF6001 Chap 7                                           44
Une propriété à vérifier

Nous désirons voir si
f = w     d                            ¬d ¬w
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               ¬d        true
S{d} = ¬d = a b c v w
S{d,w} = ¬d ¬w = a b c v                d s‟est produit
                                         et ¬f est faux,
                                         f est vrai

INF6001 Chap 7                                   45
Notation utilisée dans cet exemple
 Σ est l‟ensemble 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 l‟ensemble 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
Exemple (source: H.v.d.Schoot)

                 Nous désirons voir si
                 ¬f =w ¬ d
                 ¬f est vrai pour P1XP2
                 ssi A¬f accepte au moins une des
                 chaînes de P1XP2

                 Voici la composition de P1,P2, et A¬f
                 Les états finaux sont des états où w
                 s‟est 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
INF6001 Chap 7   P1XP2.                         47
Cycles d’acceptation
 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
 Seulement ces chaînes sont des contre-exemples
   Donc dans P1XP2 nous ne sommes pas intéressés aux calculs qui finissent
    dans l‟état (13,22)
 Un exemple de cycle d‟acceptation:
     v; w; a; b; a; b; a; b …
     Exercice: trouver les autres




INF6001 Chap 7                                                           48
Preuve d’exigences 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 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
       S‟il est vide, toutes les exécutions de S satisfont f
         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 qu‟on trouve
      un contre-exemple on a prouvé que l‟exigence n‟est pas
      satisfaite
INF6001 Chap 7                                                             49
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 Af qui vérifie une propriété f et contient |Af| états
       Le nombre d‟états à considérer pour la preuve d‟inclusion est
             entre |Af| + |S| et |Af| x |S|
         Le nombre d‟états à considérer pour la preuve d‟intersection vide est
             entre 0 et |Af| x |S|
               En fait, la preuve de l‟intersection 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 l‟exigence négative, l‟intersection vide
                                                          Comportements                  Comportements
                                                          honnêtes                       malhonnêtes

                                                             Comport.         Comport.
                                                             de A             de A




INF6001 Chap 7                                                                                           50
Dans notre exemple
 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
 Les autres états n‟ont pas besoin d‟être visités
 Réduction de complexité d‟approx. 50% par rapport à
  exploration complète
     Il est suffisant de visiter 6 états sur 12




INF6001 Chap 7                                         51
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.
                                                          Comportements                Comportements
                                                          honnêtes                     malhonnêtes

                                                             Comport.       Comport.
                                                             de A           de A




 INF6001 Chap 7                                                                                        52
Exploration de l’espace d’états global
 Si une exécution erronée est détectée, l‟exploration de
  l‟espace d‟états peut être arrêtée

 Sinon, l‟exploration doit continuer jusqu‟à ce que tous
  les états auront été explorés
     À moins que l‟algorithme n‟excè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

INF6001 Chap 7                                                   53
Algorithme “supertrace”
 SPIN est fourni d‟une méthode extrêmement efficace d‟analyser 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 d‟hachage pour mettre en correspondance un état du système avec
       l‟adresse du bit qui le représente
 L‟adresse 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.
      http://www.spinroot.com/spin/Doc/Book91_PDF/ch11.pdf
          Section 11.4




INF6001 Chap 7                                                                54
Autre problème: obtenir l’AB optimal
 Un problème moins important, mais aussi important,
  est d‟avoir un AB optimal
 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é
 Sujet de recherche encore ouvert…
 Même la définition d‟optimalité n‟est pas claire




INF6001 Chap 7                                        55
AB déterministes et non
  w          ¬ d



                                                d                            d

                          =                   s0
                                                        w       d
                                                                          s1

À 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
INF6001 Chap 7                                                                   56
Représentation de la machine never en SPIN
     d               d

           w     d
    s0               s1
                          never {
                          S0_init :
                            if
                            :: (!d) -> goto S0_init
                            :: (w && !d) -> goto accept_S1
                             fi;
                          accept_S1 :
                             if
                             :: (!d) -> goto accept_S1
                             fi;
                          }
INF6001 Chap 7                                               57
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 l‟exécution
  étendue si elle est vraie pour l‟exécution finie originale
     P.ex. p est vrai pour une exécution qui contient une seule
      transition pour laquelle p est vrai

                       a            a        a

                                                        ε
INF6001 Chap 7                                                      58
Exercice: Exemple avec non-déterminisme
 Étudier l‟exemple à 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 (s0,s0,2,s0) il faut considérer
  deux possibilités.
     À cause de la transition true dans l‟automate de Büchi qui est
      toujours possible.




INF6001 Chap 7                                                   59
Remerciements…



 Pour la partie suivante de ce cours, j‟ai utilisé les notes
  de:
     Theo Ruys
         http://wwwhome.cs.utwente.nl/~ruys/




INF6001 Chap 7                                             60
Analyse de modèles, Model Checking
                         Modèle M
                       byte n;
                       proctype Aap() {
                         do
                         :: n++
                                                Propriété
                         :: noot!MIES
                         od                     [] (n<3)
                       }


Espace d’états




                                     Analyseur           M |


  Explosion d‟états.            OUI              NON,
                              Propriété    + contre_exemple
                              satisfaite

INF6001 Chap 7                                                 61
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.”



 INF6001 Chap 7                            62
À 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 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
 Approche dite „moderne‟:
      Le modèle est obtenu à partir de l‟implémentation par un procédé d‟abstraction
      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 l‟implantation contiennent beaucoup de détails


INF6001 Chap 7                                                                     63
Approches Classique et “Moderne”
Classic Approach                               ‘Modern’ Approach

   (initial) Design

             (manual)
             abstractions

       Abstract                   Model                       Abstract
  Verification Model                                     Verification Model
                                 Checker
             refinement                             abstraction
             techniques                                                   C, Java
                                                     techniques
   Implementation                                         Implementation

                       Abstraction is the key activity
                                                            To cope with the
                           in both approaches.           state space explosion.
INF6001 Chap 7                                                                    64
Promela et SPIN


 Promela est un langage pour la spécification des
  systèmes répartis



 SPIN est l‟analyseur (model checker) et son point de
  départ est la théorie que nous venons de discuter




INF6001 Chap 7                                           65
Promela/SPIN: un système pour l’analyse des modèles

 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
     1991 version initiale
     1995 réductions d‟ordre partiel
     1997 minimisation de l‟AB
     2003 inclusion de code C et Breadth-First Search
     …
 Il est un des analyseurs de modèles les plus connus et
  efficaces

INF6001 Chap 7                                           66
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 l‟ACM entre les réalisations majeures en
  informatique
     Software System Award avec Unix, TeX, Tcl/TK, Java



INF6001 Chap 7                                                            67
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 d‟implantation
 De compréhension facile pour les implémenteurs
 Admet la communication
     Par variables globales partagées
     Synchrone, directe
     Asynchrone, par canaux
INF6001 Chap 7                                                  68
Promela Model

 A Promela model consist of:             mtype, constants,
                                          typedefs (records)

     type declarations                 chan ch = [dim] of {type, …}
                                         asynchronous: dim > 0
                                         rendez-vous:  dim == 0
     channel declarations
                                             - simple vars
                                             - structured vars
     global variable declarations           - vars can be accessed
                                               by all processes

     process declarations           behaviour of the processes:
                                     local variables + statements

     [init process]                 initialises variables and
                                     starts processes

INF6001 Chap 7                                                        69
Example of a Promela model
Promela Model
mtype = {REQ,ACK};
                      message types (constants)
typedef Msg {
  byte a[2];
  mtype tp;         “record” declaration
} ;
chan toR = [1] of {Msg}; channel declaration
bool flag;

proctype Sender() {     global variable
  Msg m;
  ...
  m.a[0]=2; m.a[1]=7; m.tp = REQ;
  toR ! m;
}                              Inputs/outputs
proctype Receiver(byte n) {
  Msg m;                             A Promela model corresponds to a (usually
  ...       local variable           very large, but) finite transition system, so
  toR ? m;
}                                       no unbounded data
         creates processes              no unbounded channels
init {                                  no unbounded processes
  run Sender();
  run Receiver(2);                      no unbounded process creation
}
INF6001 Chap 7                                                                  70
Processes          (1)



A process type (proctype) consist of
      a name
      a list of formal parameters
      local variable declarations      formal parameters
                        name
      body
     proctype Sender(chan in; chan out) {
         bit sndB, rcvB;
         do                 local variables
         :: out ! MSG, sndB ->                  Une sortie et puis ->
                in ? ACK, rcvB;
  body          if
                :: sndB == rcvB -> sndB = 1-sndB
                :: else -> skip
                fi                      The body consist of a
         od
                                       sequence of statements.
     }
INF6001 Chap 7                                                     71
Statements
 The body of a process consists of a sequence of
  statements. A statement is either
                                           executable/blocked
     executable: the statement can       depends on the global
      be executed immediately.             state of the system.
     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 27
      3 + x           executable if x is not equal to –3

INF6001 Chap 7                                                    72
Statements are
                                                         separated by a
Statements          (2)                                  semi-colon: “;”.
                                                 or by the equivalent “->”
 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();          Executable if Noot can be created…
         x=2;
         x>2 && y==1;         Can only become executable if some
         skip;                other process makes x greater than 2.
       }

INF6001 Chap 7                                                        73
Statements            (3)

 assert(<expr>);
    The assert-statement is always executable.
    If <expr> evaluates to zero, SPIN will exit with an error, as the <expr>
     “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);
                     ...
                 }
INF6001 Chap 7                                                          74
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.

INF6001 Chap 7                                           = randomly   75
Bit alterné en SPIN http://spinroot.com/spin/Man/Manual.html
                                                    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 */
  1 #define MAX 5                                    35
  2                                                  36    do
  3 mtype = { mesg, ack, nak, err };                 37    :: in?mesg(i, s) ->
  4                                                  38              if
  5 proctype sender(chan in, out)                    39              :: (s == es) ->
  6 {        byte o, s, r;                          40                                      assert(i == ei);
  7                                                 41   progress:                           es = 1 - es;
  8          o=MAX-1;                               42                                        ei = (ei + 1)%MAX;
  9          do                                     43                                        if
  10         :: o = (o+1)%MAX; /* next msg */       44            /* send, *                  :: out!ack(s,0)
  11 again: if                                      45            /* distort */               :: out!err(0,0)
  12      :: out!mesg(o,s) /* send */               46            /* or lose                   :: skip
  13      :: out!err(0,0) /* distort */             47                                     fi
  14      :: skip        /* or lose */              48                                 :: (s != es) ->
  15      fi;                                       49                                               if
  16      if                                        50            /* send, */                        :: out!nak(s,0)
  17      :: timeout -> goto again                  51            /* distort */                      :: out!err(0,0)
  18      :: in?err(0,0) -> goto again              52            /* or lose */                      :: skip
  19      :: in?nak(r,0) -> goto again              53                                              fi
  20      :: in?ack(r,0) ->                         54                            fi
  21                 if                             55            :: in?err ->
  22                 :: (r == s) -> goto progress   56                            out!nak(s,0)
  23                 :: (r != s) -> goto again      57            od
  24                 fi                             58   }
  25      fi;                                       59
  26 progress: s = 1-s /* toggle seqno */           60   init {
  27         od                                     61            chan s_r = [1] of { mtype,byte,byte };
  28 }                                              62            chan r_s = [1] of { mtype,byte,byte };
  29                                                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)
INF6001 Chap 7                                                                                                         76
Xspin in a nutshell
 Xspin allows the user to
      edit Promela models (+ syntax check)
      simulate Promela models
          random
          interactive
          guided                               with dialog boxes to set
                                             various options and directives
      verify Promela models                to tune the verification process
          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)



INF6001 Chap 7                                                                 77
Conclusions sur SPIN
 Bases théoriques très solides
     Logique temporelle linéaire et automates de Büchi
 Outil très performant
 L‟outil de vérification le plus utilisé dans notre domaine

 Excellent survol pratique sur SPIN et plusieurs des
  concepts que nous avons vu:
     http://plan9.bell-labs.com/sys/doc/spin.html



INF6001 Chap 7                                             78
Exemples très pratiques
 Vérification de la conception d‟un four microondes:
     Est-il possible que dans des situations particulières le four
      puisse cuir avec la porte ouverte?


 Vérification de la conception d‟un avion:
     Est-il possible que les freins moteur puissent être activés
      avant que l‟avion touche le sol?


 Conception de matériel Etc. etc.


INF6001 Chap 7                                                        79
Reconnaissance
 Les vastes applications du Model Checking ont motivé
  l‟octroi du prix Turing à trois de ses inventeurs
  principaux:
     Sifakis, Clarke, Emerson




INF6001 Chap 7                                       80
Application de la logique temporelle
 Il faut savoir que:
     La logique temporelle linéaire LTL que nous venons de
      discuter n‟est qu‟une 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
      n‟importe quel système pour lequel il est possible de
      construire un automate global
         Donc avec SDL, LOTOS, Réseaux de Petri…



INF6001 Chap 7                                                           81
Structures de Kripke
 Au lieu des automates de Büchi, on utilise parfois des
  structures semblables qui s‟appellent „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 l‟autre.
 Le point important est que certaines analyses peuvent
  être faites plus facilement sur une structure que sur
  l‟autre.
INF6001 Chap 7                                                   82
Example
 (mais ce n’est pas toujours aussi simple que ça)

                                                      Ceci est { p, q}
 Kripke

                                                      p,q

                                                  p

  Büchi:                                                   vrai         p,q

                                                                   p
                                                          vrai           p

 Source: Notes de cours de Ofer Strichman, Technion

 INF6001 Chap 7                                                              83

Contenu connexe

En vedette

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

En vedette (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Chap07

  • 1. Chapitre 7 Vérification de modèles: Automates de Büchi et SPIN (Holzmann Chap. 6) (réserve à la biblio) Chap 7 http://w3.uqo.ca/luigi/INF6001/ 1
  • 2. Propriétés d’états et exécutions (chaînes) X=X/2 X=13 X=X/2+1 X>0 s0 s1 s2 s3 X≤0 X: entier et / a résultat entier (tronqué) 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.  x≤0 ou  x≤0, mais pas  x≤0. Observez que dans ce cas le contrôle est sur les transitions. État d‟acceptation . INF6001 Chap 7 2
  • 3. Comment vérifier les propriétés temporelles?  Nous avons une machine dont nous pouvons observer certaines propriétés, p.ex.  qu‟une 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 INF6001 Chap 7 3
  • 4. Vérification de modèle Composition synchrone Automate exprimant Modèle à vérifier 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 INF6001 Chap 7 4
  • 5. Exemple AB pour vérifier p p s1 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... INF6001 Chap 7 5
  • 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 INF6001 Chap 7 6
  • 7. Exemple AB pour vérifierp p vrai s0 s1 p Cet AB est prêt à accepter des transitions où p est faux, mais il est content seulement quand p devient vrai. INF6001 Chap 7 7
  • 8. Exercice: Prouver  x≤0 pour ce modèle X=X/2 X=13 X=X/2+1 X>0 s0 s1 s2 s3 X: entier et / a résultat entier (tronqué) X≤0 x≤0 vrai Automate de Büchi à utiliser s0 s1 x≤0 INF6001 Chap 7 8
  • 9. Schéma de Solution  x≤0 X=13, ¬X≤0 X=7, ¬X≤0 X=7, ¬X≤0 s0,s0 s1,s0 s2,s0 X=1, ¬X≤0 X=0, X≤0 X=0, vrai s2,s0 s3,s0 s2,s1 s0,s1 X=1, ¬X≤0 X=13, vrai X=X/2 s0 X=13 s1 X=X/2+1 s2 X>0 s3 Après ça, le système s1,s1 continue normalement X≤0 mais la propriété est X=7, vrai x≤0 vrai satisfaite, l‟AB reste en état s1 Etc. s0 s1 x≤0 INF6001 Chap 7 9
  • 10. Composition synchrone  Comme dans la composition synchrone, deux transitions peuvent être composées quand elles sont compatibles, p.ex. X=7, ¬X≤0 INF6001 Chap 7 10
  • 11. Incomplétude des AB  L‟AB 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 p p p s1 = s1 s2 p réjet! INF6001 Chap 7 11
  • 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 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  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 INF6001 Chap 7 12
  • 13. Exemple de nondéterminisme AB pour vérifier que p (enfin toujours p) vrai p s0 s1 p „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 … INF6001 Chap 7 13
  • 14. Comparer avec AB déterministe L‟AB ci-dessous n‟est pas bon pour p Car s‟il y a un 1er p qui n‟est pas suivi par p il rejette. Il faut dans ce cas continuer à chercher un p futur après lequel p ¬p p s0 s1 p Cet AB montre aussi les limites de l‟expressivité des opérateurs , car ce qu‟il exprime (après le 1er p, toujours p) n‟est pas exprimable avec ces opérateurs seulement. faut utiliser U: ¬ p U p INF6001 Chap 7 14
  • 15. Nondéterminisme des AB  Le nondéterminisme est une caractéristique importante des AB true p p s0 s1 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 s0, ou bien changer à s1. 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 INF6001 Chap 7 15
  • 16. Exemple concret de fonctionnement de nondéterminisme m0 p true p Nous voulons vérifier si m1 p ici s0 s1 q p m2 p Nous commençons dans l‟état global (m0,s0). La machine à vérifier produit son premier p: Nous ne savons pas si nous devons l‟apparier avec un p  (m1,s1). ou avec un true  (m1,s0). 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 INF6001 Chap 7 16
  • 17. Exécution non-déterministe avec échec de parcours m0,s0 p, true p, p m1,s0 m1,s1 q, true m2,s1 p, p m0 p true p m1 q s0 s1 p m2 p p INF6001 Chap 7 17
  • 18. Exercices  Faites-vous des autres exemples INF6001 Chap 7 18
  • 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 l‟automate, 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 l‟ensemble des états d‟un 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 l‟ensemble de tous les sous-ensembles de ND  -1 car l‟ensemble vide n‟est pas un état…  Construction en principe exponentielle (pourquoi?)  V. un manuel quelconque de théorie des automates INF6001 Chap 7 19
  • 20. La même exécution, mais avec automate déterministe m0,s0 p,p p, true m1,s0 m1, s1 q, true m2,s1 Nous voyons ici de manière implicite que l‟état m1, s1 n‟a p, p pas de suite INF6001 Chap 7 20
  • 21. Exercice  Trouver un automate déterministe qui fait le même travail que l‟AB pour p  Vous verrez qu‟il existe, mais il est plus compliqué INF6001 Chap 7 21
  • 22. Autre exemple impliquant U (until fort) p vrai s0 s1 q pUq INF6001 Chap 7 22
  • 23. Deux cas limites  AB pour la tautologie: vrai, ou vrai, ou vrai ou p p etc. vrai  Cet AB accepte toujours tout. s1  AB pour la contradiction: faux, ou faux, ou faux ou p p etc.  Il n‟y a pas d‟AB pour la contradiction: il est vide  Il n’y a pas de modèles pour les systèmes contradictoires  Il n’est pas possible de vérifier un système contradictoire INF6001 Chap 7 23
  • 24. Exemples impliquant opérateurs propositionnels (utilisant http://www.lsv.ens-cachan.fr/~gastin/ltl2ba/index.php) F p || F q = F (p || q) p || Fq G F p && G q = G ( F p && q ) G ( F p || q ) INF6001 Chap 7 24
  • 25. Quelques surprises … (possiblement)  Utilisant l‟outil 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 n‟est pas vraiment intuitive au début … INF6001 Chap 7 25
  • 26. Efficacité de calcul  Nous ne prenons pas en considération pour l‟instant les aspects d‟efficacité 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 true p s0 s1 p 26 INF6001 Chap 7
  • 27. Exemple  p toujours finalement p (infiniment souvent p) vrai p s0 s1 vrai Accepte seulement quand il continuera d‟y avoir des p dans le futur INF6001 Chap 7 27
  • 28. Parfois le nondéterminisme n’est pas nécessaire  p toujours finalement p (infiniment souvent p) ¬p p p s0 s1 ¬p INF6001 Chap 7 28
  • 29. Exemple: utiliser les équivalences p =  p toujours finalement p vrai p s0 s1 vrai Un p doit être trouvé, après on peut trouver autre chose, mais il faut retourner sur p INF6001 Chap 7 29
  • 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 n‟a pas besoin de se produire afin que q se produise et rende la formule vraie INF6001 Chap 7 30
  • 31. Exemple continuation Dorénavant, un p (p  q) = ( p  q) est toujours suivi par un q p q vrai vrai s0 s1 q Accepte tant que p q est vrai, peut aussi passer à un état où un q doit se produire plus tard INF6001 Chap 7 31
  • 32. Pour bien comprendre…  Pour bien comprendre l‟AB précédent, considérez le fait que un q peut se produire tout seul, même sans p  Mais dès qu‟un p se vérifie, l‟automate passe à s1, qui n‟est pas un état d‟acceptation  Il retourne et peut rester dans l‟état d‟acceptation 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. Autres exemples  D‟autres exemples plus complexes sont dans le livre de Holzmann, Chap. 6  En pratique, on a rarement besoin d‟utiliser des formules complexes  Ou on simplifie l‟assertion pour les éviter...  Un programme pour trouver un AB pour une formule LTL:  http://www.lsv.ens-cachan.fr/~gastin/ltl2ba/  Büchi store, base de données d‟AB:  http://buchi.im.ntu.edu.tw/ INF6001 Chap 7 33
  • 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 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  Exercice: Faites vos expériences à ce sujet! Cherchez à définir des AB qui n‟ont pas un correspondant en LTL INF6001 Chap 7 34
  • 35. Mais la construction du modèle est le problème!  Problème fondamental:  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  Bonne nouvelle, S n‟a pas besoin d‟être construit complet auparavant  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‟ INF6001 Chap 7 35
  • 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 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 que quelqu‟un 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. Test d’honnêtété: deux manières de contrôler Comportements Comportements honnêtes malhonnêtes Comport. Comport. de A de A Dans ce cas, on examine tous les comportements de A et Dans ce cas, on cherche s‟ily a pour chacun on détermine s‟il des comportement contraires: il est honnête suffit d’en trouver un seul INF6001 Chap 7 37
  • 38. L’importance des contrexemples  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.  Dans ce cas, super!  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.  Si à un certain point on trouve une violation, ceci est un contre- exemple à la propriété, une erreur qu‟il faut corriger  C‟est encore une trouvaille importante. INF6001 Chap 7 38
  • 39. Propriétés d’un 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‟ d‟un automate l‟ensemble de chaînes, l‟ensemble des comportements, qu‟il 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 l‟AB qui exprime l‟exigence  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 l‟exigence doivent avoir intersection vide  Si l‟intersection est non vide, les exécutions dans l‟intersection sont des contre- exemples, montrant dans quelles situations la propriété est violée INF6001 Chap 7 39
  • 40. Exemple simple  Supposons qu‟on 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. 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  L‟AB approprié est obtenu par négation d‟une formule de logique temporelle INF6001 Chap 7 41
  • 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 s‟il y aura un p et puis aucun q INF6001 Chap 7 42
  • 43. Automate négation: never automata Supposons que nous voulions qu‟un 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) q true p q s0 s1 Si un comportement tombe dans l‟état s1, il n‟est pas conforme aux exigences INF6001 Chap 7 43
  • 44. (source: H.v.d.Schoot) Un système à vérifier Exercice: calculer la machine globale de P1 et P2 (ils ne communiquent pas). INF6001 Chap 7 44
  • 45. Une propriété à vérifier Nous désirons voir si f = w d ¬d ¬w 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 ¬d true S{d} = ¬d = a b c v w S{d,w} = ¬d ¬w = a b c v d s‟est produit et ¬f est faux, f est vrai INF6001 Chap 7 45
  • 46. Notation utilisée dans cet exemple  Σ est l‟ensemble 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 l‟ensemble 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. Exemple (source: H.v.d.Schoot) Nous désirons voir si ¬f =w ¬ d ¬f est vrai pour P1XP2 ssi A¬f accepte au moins une des chaînes de P1XP2 Voici la composition de P1,P2, et A¬f Les états finaux sont des états où w s‟est 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 INF6001 Chap 7 P1XP2. 47
  • 48. Cycles d’acceptation  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  Seulement ces chaînes sont des contre-exemples  Donc dans P1XP2 nous ne sommes pas intéressés aux calculs qui finissent dans l‟état (13,22)  Un exemple de cycle d‟acceptation:  v; w; a; b; a; b; a; b …  Exercice: trouver les autres INF6001 Chap 7 48
  • 49. Preuve d’exigences 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 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  S‟il est vide, toutes les exécutions de S satisfont f  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 qu‟on trouve un contre-exemple on a prouvé que l‟exigence n‟est pas satisfaite INF6001 Chap 7 49
  • 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 Af qui vérifie une propriété f et contient |Af| états  Le nombre d‟états à considérer pour la preuve d‟inclusion est  entre |Af| + |S| et |Af| x |S|  Le nombre d‟états à considérer pour la preuve d‟intersection vide est  entre 0 et |Af| x |S|  En fait, la preuve de l‟intersection 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 l‟exigence négative, l‟intersection vide Comportements Comportements honnêtes malhonnêtes Comport. Comport. de A de A INF6001 Chap 7 50
  • 51. Dans notre exemple  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  Les autres états n‟ont pas besoin d‟être visités  Réduction de complexité d‟approx. 50% par rapport à exploration complète  Il est suffisant de visiter 6 états sur 12 INF6001 Chap 7 51
  • 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. Comportements Comportements honnêtes malhonnêtes Comport. Comport. de A de A INF6001 Chap 7 52
  • 53. Exploration de l’espace d’états global  Si une exécution erronée est détectée, l‟exploration de l‟espace d‟états peut être arrêtée  Sinon, l‟exploration doit continuer jusqu‟à ce que tous les états auront été explorés  À moins que l‟algorithme n‟excè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 INF6001 Chap 7 53
  • 54. Algorithme “supertrace”  SPIN est fourni d‟une méthode extrêmement efficace d‟analyser 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 d‟hachage pour mettre en correspondance un état du système avec l‟adresse du bit qui le représente  L‟adresse 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.  http://www.spinroot.com/spin/Doc/Book91_PDF/ch11.pdf  Section 11.4 INF6001 Chap 7 54
  • 55. Autre problème: obtenir l’AB optimal  Un problème moins important, mais aussi important, est d‟avoir un AB optimal  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é  Sujet de recherche encore ouvert…  Même la définition d‟optimalité n‟est pas claire INF6001 Chap 7 55
  • 56. AB déterministes et non w ¬ d d d = s0 w d s1 À 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 INF6001 Chap 7 56
  • 57. Représentation de la machine never en SPIN d d w d s0 s1 never { S0_init : if :: (!d) -> goto S0_init :: (w && !d) -> goto accept_S1 fi; accept_S1 : if :: (!d) -> goto accept_S1 fi; } INF6001 Chap 7 57
  • 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 l‟exécution étendue si elle est vraie pour l‟exécution finie originale  P.ex. p est vrai pour une exécution qui contient une seule transition pour laquelle p est vrai a a a ε INF6001 Chap 7 58
  • 59. Exercice: Exemple avec non-déterminisme  Étudier l‟exemple à 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 (s0,s0,2,s0) il faut considérer deux possibilités.  À cause de la transition true dans l‟automate de Büchi qui est toujours possible. INF6001 Chap 7 59
  • 60. Remerciements…  Pour la partie suivante de ce cours, j‟ai utilisé les notes de:  Theo Ruys  http://wwwhome.cs.utwente.nl/~ruys/ INF6001 Chap 7 60
  • 61. Analyse de modèles, Model Checking Modèle M byte n; proctype Aap() { do :: n++ Propriété :: noot!MIES od [] (n<3) } Espace d’états Analyseur M | Explosion d‟états. OUI NON, Propriété + contre_exemple satisfaite INF6001 Chap 7 61
  • 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.” INF6001 Chap 7 62
  • 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 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  Approche dite „moderne‟:  Le modèle est obtenu à partir de l‟implémentation par un procédé d‟abstraction  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 l‟implantation contiennent beaucoup de détails INF6001 Chap 7 63
  • 64. Approches Classique et “Moderne” Classic Approach ‘Modern’ Approach (initial) Design (manual) abstractions Abstract Model Abstract Verification Model Verification Model Checker refinement abstraction techniques C, Java techniques Implementation Implementation Abstraction is the key activity To cope with the in both approaches. state space explosion. INF6001 Chap 7 64
  • 65. Promela et SPIN  Promela est un langage pour la spécification des systèmes répartis  SPIN est l‟analyseur (model checker) et son point de départ est la théorie que nous venons de discuter INF6001 Chap 7 65
  • 66. Promela/SPIN: un système pour l’analyse des modèles  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  1991 version initiale  1995 réductions d‟ordre partiel  1997 minimisation de l‟AB  2003 inclusion de code C et Breadth-First Search  …  Il est un des analyseurs de modèles les plus connus et efficaces INF6001 Chap 7 66
  • 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 l‟ACM entre les réalisations majeures en informatique  Software System Award avec Unix, TeX, Tcl/TK, Java INF6001 Chap 7 67
  • 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 d‟implantation  De compréhension facile pour les implémenteurs  Admet la communication  Par variables globales partagées  Synchrone, directe  Asynchrone, par canaux INF6001 Chap 7 68
  • 69. Promela Model  A Promela model consist of: mtype, constants, typedefs (records)  type declarations chan ch = [dim] of {type, …} asynchronous: dim > 0 rendez-vous: dim == 0  channel declarations - simple vars - structured vars  global variable declarations - vars can be accessed by all processes  process declarations behaviour of the processes: local variables + statements  [init process] initialises variables and starts processes INF6001 Chap 7 69
  • 70. Example of a Promela model Promela Model mtype = {REQ,ACK}; message types (constants) typedef Msg { byte a[2]; mtype tp; “record” declaration } ; chan toR = [1] of {Msg}; channel declaration bool flag; proctype Sender() { global variable Msg m; ... m.a[0]=2; m.a[1]=7; m.tp = REQ; toR ! m; } Inputs/outputs proctype Receiver(byte n) { Msg m; A Promela model corresponds to a (usually ... local variable very large, but) finite transition system, so toR ? m; }  no unbounded data creates processes  no unbounded channels init {  no unbounded processes run Sender(); run Receiver(2);  no unbounded process creation } INF6001 Chap 7 70
  • 71. Processes (1) A process type (proctype) consist of  a name  a list of formal parameters  local variable declarations formal parameters name  body proctype Sender(chan in; chan out) { bit sndB, rcvB; do local variables :: out ! MSG, sndB -> Une sortie et puis -> in ? ACK, rcvB; body if :: sndB == rcvB -> sndB = 1-sndB :: else -> skip fi The body consist of a od sequence of statements. } INF6001 Chap 7 71
  • 72. Statements  The body of a process consists of a sequence of statements. A statement is either executable/blocked  executable: the statement can depends on the global be executed immediately. state of the system.  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 27 3 + x executable if x is not equal to –3 INF6001 Chap 7 72
  • 73. Statements are separated by a Statements (2) semi-colon: “;”. or by the equivalent “->”  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(); Executable if Noot can be created… x=2; x>2 && y==1; Can only become executable if some skip; other process makes x greater than 2. } INF6001 Chap 7 73
  • 74. Statements (3)  assert(<expr>);  The assert-statement is always executable.  If <expr> evaluates to zero, SPIN will exit with an error, as the <expr> “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); ... } INF6001 Chap 7 74
  • 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. INF6001 Chap 7 = randomly 75
  • 76. Bit alterné en SPIN http://spinroot.com/spin/Man/Manual.html 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 */ 1 #define MAX 5 35 2 36 do 3 mtype = { mesg, ack, nak, err }; 37 :: in?mesg(i, s) -> 4 38 if 5 proctype sender(chan in, out) 39 :: (s == es) -> 6 { byte o, s, r; 40 assert(i == ei); 7 41 progress: es = 1 - es; 8 o=MAX-1; 42 ei = (ei + 1)%MAX; 9 do 43 if 10 :: o = (o+1)%MAX; /* next msg */ 44 /* send, * :: out!ack(s,0) 11 again: if 45 /* distort */ :: out!err(0,0) 12 :: out!mesg(o,s) /* send */ 46 /* or lose :: skip 13 :: out!err(0,0) /* distort */ 47 fi 14 :: skip /* or lose */ 48 :: (s != es) -> 15 fi; 49 if 16 if 50 /* send, */ :: out!nak(s,0) 17 :: timeout -> goto again 51 /* distort */ :: out!err(0,0) 18 :: in?err(0,0) -> goto again 52 /* or lose */ :: skip 19 :: in?nak(r,0) -> goto again 53 fi 20 :: in?ack(r,0) -> 54 fi 21 if 55 :: in?err -> 22 :: (r == s) -> goto progress 56 out!nak(s,0) 23 :: (r != s) -> goto again 57 od 24 fi 58 } 25 fi; 59 26 progress: s = 1-s /* toggle seqno */ 60 init { 27 od 61 chan s_r = [1] of { mtype,byte,byte }; 28 } 62 chan r_s = [1] of { mtype,byte,byte }; 29 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) INF6001 Chap 7 76
  • 77. Xspin in a nutshell  Xspin allows the user to  edit Promela models (+ syntax check)  simulate Promela models  random  interactive  guided with dialog boxes to set various options and directives  verify Promela models to tune the verification process  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) INF6001 Chap 7 77
  • 78. Conclusions sur SPIN  Bases théoriques très solides  Logique temporelle linéaire et automates de Büchi  Outil très performant  L‟outil de vérification le plus utilisé dans notre domaine  Excellent survol pratique sur SPIN et plusieurs des concepts que nous avons vu:  http://plan9.bell-labs.com/sys/doc/spin.html INF6001 Chap 7 78
  • 79. Exemples très pratiques  Vérification de la conception d‟un four microondes:  Est-il possible que dans des situations particulières le four puisse cuir avec la porte ouverte?  Vérification de la conception d‟un avion:  Est-il possible que les freins moteur puissent être activés avant que l‟avion touche le sol?  Conception de matériel Etc. etc. INF6001 Chap 7 79
  • 80. Reconnaissance  Les vastes applications du Model Checking ont motivé l‟octroi du prix Turing à trois de ses inventeurs principaux:  Sifakis, Clarke, Emerson INF6001 Chap 7 80
  • 81. Application de la logique temporelle  Il faut savoir que:  La logique temporelle linéaire LTL que nous venons de discuter n‟est qu‟une 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 n‟importe quel système pour lequel il est possible de construire un automate global  Donc avec SDL, LOTOS, Réseaux de Petri… INF6001 Chap 7 81
  • 82. Structures de Kripke  Au lieu des automates de Büchi, on utilise parfois des structures semblables qui s‟appellent „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 l‟autre.  Le point important est que certaines analyses peuvent être faites plus facilement sur une structure que sur l‟autre. INF6001 Chap 7 82
  • 83. Example (mais ce n’est pas toujours aussi simple que ça) Ceci est { p, q}  Kripke p,q p  Büchi: vrai p,q p vrai p Source: Notes de cours de Ofer Strichman, Technion INF6001 Chap 7 83