Chap05 (buchi)

475 vues

Publié le

0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
475
Sur SlideShare
0
Issues des intégrations
0
Intégrations
6
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Chap05 (buchi)

  1. 1. Chap 7 1Chapitre 4Vérification de modèles:Automates de Büchi et SPIN(Holzmann Chap. 6)http://w3.uqo.ca/luigi/INF6001/
  2. 2. INF6001 Chap 7 2Proprié té s d’é tats et exé cutions(chaî nes)X=13 X=X/2+1 X>0X=X/2X≤0s0Nous pouvons affirmer des propriétés pour:Des états: p.ex. à l’état s1, X=13 toujours (invariant)pas besoin de logique temporelle iciDes 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.s1 s2 s3X: entier et/ a résultatentier.État d’acceptation
  3. 3. INF6001 Chap 7 3Comment vérifier les proprié té s temporelles?Nous avons une machine dont nous pouvons observercertaines 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 quiobserve et vérifie ces propriétés – composition synchrone nous pouvons aussi vérifier une propriété négative, c.-à.-d.que la machine ne satisfait pas une propriété never automata
  4. 4. INF6001 Chap 7 4Vé rification de modè leModèle à vérifierMachine exprimantdes propriétésà vérifierComposition synchrone
  5. 5. INF6001 Chap 7 5Exemples1pAB pour vérifier pCet AB synchronise avec un autre AB seulement si la propriétép reste toujours vraie, à toutes les transitions
  6. 6. 6Acceptation dans les automates deBüchiUn automate régulier accepte toutes les chaînes quiconduisent à un état finalUn AB accepte toutes les chaînes infinies qui passentun nombre infini de fois par un état finalPour chaque expression de logique temporelle, il y aun AB qui accepte les chaînes qui satisfont cetteexpression Il existe un algorithme pour effectuer cette construction, pasdiscuté dans ce cours
  7. 7. INF6001 Chap 7 7Incomplé 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 lestransitions qui ne conduisent pas au résultat désiré ne sont pasprises en considérations1ps1ps2¬ p
  8. 8. INF6001 Chap 7 8Exemples0 s1¬ pptrueAB pour vérifierpCet AB est prêt à accepter des transitions où p est faux,mais il est content seulement quand p devient vrai.
  9. 9. INF6001 Chap 7 10ExempleAB pour vérifier que p (enfin toujours p)‘true’ accepte p et autres mais après un certain p, iln’accepte que des p aprèss0 s1truepp
  10. 10. INF6001 Chap 7 11Comparer avec AB dé terministes0 s1¬pppL’AB ci-dessous n’est pas bon pour pCar 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èslequel pCet AB montre aussi les limites de l’expressivité des opérateurs , car cequ’il exprime (après le 1er p, toujours p) n’est pas exprimable avec cesopérateurs seulement.faut utiliser U: ¬ p U p
  11. 11. INF6001 Chap 7 16Autre exemple impliquant U (until fort)s0 s1pqtruep U q
  12. 12. INF6001 Chap 7 18Exemples0 s1truep p toujours finalement p(infiniment souvent p)trueAccepte seulement quand il continuera d’y avoir des p dans le futur
  13. 13. INF6001 Chap 7 20Exemple: utiliser les notionsd’é quivalence¬p =  ¬ pUn ¬ p doit être trouvé, après on peut trouver autre chose, maisil faut retourner sur ¬ ps0 s1truetrue¬ptoujours finalement ¬ p
  14. 14. INF6001 Chap 7 21Exemple (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 afinque q se produise et rende la formule vraie
  15. 15. INF6001 Chap 7 22Exemple continuation(p →  q) = (¬ p ∨  q)s0 s1¬ p ∨ qtrueqtrueAccepte tant que ¬ p ∨ q est vrai, peut aussipasser à un état où un q doit se produire plus tardDorénavant, un pest suivi toujourspar un q
  16. 16. INF6001 Chap 7 24Never claims: exigences né gativesNous verrons qu’en principe il est plus efficace decontrôler l’absence de comportements défendus plutôtque de contrôler que tous les comportements soientpermisL’AB approprié est donc obtenu par négation d’uneformule de logique temporelle
  17. 17. INF6001 Chap 7 25Né gation de la formule pré cé dente:(p →  q) = (¬ p ∨  q)Dorénavant, un p est suivi toujours par un qDonc cette formule est fausse s’il y aura unp et puis aucun q
  18. 18. INF6001 Chap 7 26Automate négation: never automataSupposons que nous voulions qu’un comportement niant laformule 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)s0 s1truep ∧ ¬q¬qDonc si un comportement tombe dans l’état s1,il n’est pas conforme aux exigences
  19. 19. INF6001 Chap 7 27Proprié té s d’un systè me Pour prouver qu’ un système jouit des propriétés spécifiées par desexpression de logique temporelle, il faut montrer que tous lescomportements du système ont ces propriétés Nous appelons ‘langage’ d’un automate l’ensemble de chaînes, l’ensembledes 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 dusystè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 intersectionvide 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
  20. 20. Deux maniè res de prouver ou refuser une proprié téProuver que tous les comportements du systèmesatisfont la propriétéChercher un comportement du système qui satisfait lanégation de la propriété! (un contrexemple) Clairement, cette deuxième stratégie pourrait aboutir plusrapidement, car dès qu’un contrexemple est trouvé, nous savons que la propriétéest fausse et nous n’avons pas besoin de continuerINF6001 Chap 7 28
  21. 21. Never claimsDonc un model checker comme SPINsystématiquement nie les propriétés qu’on veut vérifieret cherche un contrexemple au lieu de chercher àprouver que une propriété souhaitée est toujours vraie Si un contrexemple est trouvé, on sait que la propriété estfausse et on a sauvé du temps Si un contrexemple n’est pas trouvé, on sait que la propriétéest vraie et on a fait le même travail que dans le cas où onaurait cherché à prouver la propriété positive directementLes propriétés niées s’appellent never claimsINF6001 Chap 7 29
  22. 22. INF6001 Chap 7 35Preuve 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 estun contre-exemple pour f En pratique, la composition synchrone souvent n’a pasbesoin d’être calculée dans sa totalité car dès qu’on trouveun contre-exemple on a prouvé que l’exigence n’est passatisfaite
  23. 23. INF6001 Chap 7 47Analyse de modè les, Model Checkingbyte n;proctype Aap() {do:: n++:: noot!MIESod}Modèle M[] (n<3)Propriété φAnalyseurEspace d’étatsOUIPropriétésatisfaiteNON,+ contre_exempleϕ=|MExplosion d’états.
  24. 24. INF6001 Chap 7 48Dé finition[Clarke & Emerson1981]“Model checking is an automatedtechnique that, given a finite-statemodel of a system and a logicalproperty, systematically checkswhether this property holds for (a giveninitial state in) that model.”
  25. 25. INF6001 Chap 7 49Promela et SPINPromela est un langage pour la spécification dessystèmes répartisSPIN est l’analyseur (model checker) et son point dedépart est la théorie que nous venons de discuter
  26. 26. INF6001 Chap 7 50Promela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
  27. 27. INF6001 Chap 7 51Promela ModelA Promela model consist of: type declarations channel declarations global variable declarations process declarations [init process]behaviour of the processes:local variables + statements- simple vars- structured vars- vars can be accessedby all processesinitialises variables andstarts processeschan ch = [dim] of {type, …}asynchronous: dim > 0rendez-vous: dim == 0mtype, constants,typedefs (records)
  28. 28. INF6001 Chap 7 52mtype = {REQ,ACK};typedef Msg {byte a[2];mtype tp;} ;chan toR = [1] of {Msg};bool flag;proctype Sender() {Msg m;...m.a[0]=2; m.a[1]=7; m.tp = REQ;toR ! m;}proctype Receiver(byte n) {Msg m;...toR ? m;}init {run Sender();run Receiver(2);}Promela ModelA Promela model corresponds to a (usuallyvery large, but) finite transition system, so no unbounded data no unbounded channels no unbounded processes no unbounded process creationchannel declarationcreates processesglobal variablelocal variablemessage types (constants)“record” declarationExample of a Promela modelInputs/outputs
  29. 29. INF6001 Chap 7 53Processes (1)A process type (proctype) consist of a name a list of formal parameters local variable declarations bodyproctype Sender(chan in; chan out) {bit sndB, rcvB;do:: out ! MSG, sndB ->in ? ACK, rcvB;if:: sndB == rcvB -> sndB = 1-sndB:: else -> skipfiod}namelocal variablesbodyformal parametersThe body consist of asequence of statements.Une sortie et puis ->
  30. 30. INF6001 Chap 7 54StatementsThe body of a process consists of a sequence ofstatements. A statement is either executable: the statement canbe executed immediately. blocked: the statement cannot be executed.An assignment is always executable.An expression is also a statement; it is executable if itevaluates to non-zero.2 < 3 always executablex < 27 only executable if value of x issmaller 273 + x executable if x is not equal to –3executable/blockeddepends on the globalstate of the system.
  31. 31. INF6001 Chap 7 55Statements (2)The skip statement is always executable. “does nothing”, only changes process’ process counterA run statement is only executable if a new processcan be created (remember: the number of processes isbounded).int x;proctype Aap(){int y=1;skip;run Noot();x=2;x>2 && y==1;skip;}Can only become executable if someother process makes x greater than 2.Executable if Noot can be created…Statements areseparated by asemi-colon: “;”.or by the equivalent “->”
  32. 32. INF6001 Chap 7 56Statements (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 checkwhether certain properties are always valid in a state.proctype monitor() {assert(n <= 3);}proctype receiver() {byte msg;...toReceiver ? msg;assert(msg != ERROR);...}
  33. 33. INF6001 Chap 7 57Interleaving SemanticsPromela processes execute concurrently.Non-deterministic scheduling of the processes.Processes are interleaved (statements of different processes do notoccur at the same time). exception: rendez-vous communication.All statements are atomic; each statement is executed withoutinterleaving with other processes.Each process may have several different possible actions enabled ateach point of execution. only one choice is made, non-deterministically.= randomly
  34. 34. INF6001 Chap 7 58Bit alterné en SPIN http://spinroot.com/spin/Man/Manual.html1 #define MAX523 mtype = { mesg, ack, nak, err };45 proctype sender(chan in, out)6 { byte o, s, r;78 o=MAX-1;9 do10 :: o = (o+1)%MAX; /* next msg */11 again: if12 :: out!mesg(o,s) /* send */13 :: out!err(0,0) /* distort */14 :: skip /* or lose */15 fi;16 if17 :: timeout -> goto again18 :: in?err(0,0) -> goto again19 :: in?nak(r,0) -> goto again20 :: in?ack(r,0) ->21 if22 :: (r == s) -> goto progress23 :: (r != s) -> goto again24 fi25 fi;26 progress: s = 1-s /* toggle seqno */27 od28 }2930 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 */3536 do37 :: in?mesg(i, s) ->38 if39 :: (s == es) ->40 assert(i == ei);41 progress: es = 1 - es;42 ei = (ei + 1)%MAX;43 if44 /* send, * :: out!ack(s,0)45 /* distort */ :: out!err(0,0)46 /* or lose :: skip47 fi48 :: (s != es) ->49 if50 /* send, */ :: out!nak(s,0)51 /* distort */ :: out!err(0,0)52 /* or lose */ :: skip53 fi54 fi55 :: in?err ->56 out!nak(s,0)57 od58 }5960 init {61 chan s_r = [1] of { mtype,byte,byte };62 chan r_s = [1] of { mtype,byte,byte };63 atomic {64 run sender(r_s, s_r);65 run receiver(s_r, r_s)66 }67 }We want to verify that data that is sent can only be delivered to the receiver without any deletions or reorderings,despite the possibility of arbitrary message loss. The assertion on line 40 verifies precisely that.Note that if it were ever possible for the protocol to fail to meet the above requirement, the assertion can be violated(autres détails intéressants dans le site)
  35. 35. INF6001 Chap 7 59Xspin in a nutshellXspin allows the user to edit Promela models (+ syntax check) simulate Promela models random interactive guided verify Promela models exhaustive bitstate hashing model additional features Xspin suggest abstractions to a Promela model (slicing) Xspin can draw automata for each process LTL property manager Help system (with verification/simulation guidelines)with dialog boxes to setvarious options and directivesto tune the verification process
  36. 36. INF6001 Chap 7 60Conclusions 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 desconcepts que nous avons vu: http://plan9.bell-labs.com/sys/doc/spin.html

×