1 / 49

Computergest ützte Verifikation

Computergest ützte Verifikation. 30.4.2002. Model Checking f ür finite state systems. Kapitel 3. explizit:. symbolisch:. Kapitel 4. 3.1: Tiefensuche. 4.1: BDD-basiertes CTL-Model Checking. 3.2: LTL-Model Checking. 3.3: CTL-Model Checking. 4.2: SAT-basiertes

kim
Download Presentation

Computergest ützte Verifikation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Computergestützte Verifikation 30.4.2002

  2. Model Checking für finite state systems Kapitel 3 explizit: symbolisch: Kapitel 4 3.1: Tiefensuche 4.1: BDD-basiertes CTL-Model Checking 3.2: LTL-Model Checking 3.3: CTL-Model Checking 4.2: SAT-basiertes Model Checking 3.4: Fairness 4.3: Tools 3.5: Reduktion durch Symmetrie 3.6: Partial Order Reduction 3.7: Tools

  3. Wie kann man Inklusion entscheiden? LTSw Lfw  LTSw Lfw =   LTSw L¬fw =  • Agenda: 1. Automaten, die LTSw und L¬fwakzeptieren • 2. Konstruktion eines Schnittautomaten • 3. Entscheidung, ob Automat die leere Sprache • akzeptiert Problem: Wir reden über unendliche Sequenzen!

  4. CTL(s,f) • IF L(s,f)  ? THEN RETURN END • CASE f • AP: berechne L(s,f) END yc: CTL(s,y) IF L(s,y) THEN CTL(s,c); L(s,f) = L(s,c); ELSE L(s,f) = F END ¬y, yc: analog AX y: FOR ALL s’: [s,s’]  E DO CTL(s’,y); IF L(s’,y) = F THEN L(s,f) = F; RETURN; END END L(s,f) = W EX y: analog /* Fortsetzung folgt */ Rahmenprozedur

  5. L(s’,A(y U c)) = W L(s’,c) = F L(s’,y) = F L(s’,A(y U c)) = F L(s’,c) = W L(s’,y) = W L(s’,c) = F L(s’,A(y U c)) = ? s CheckAU CheckAU(s,y,c): Suche Gegenbeispiel

  6. L(s,A/E(y U c))  ? |f| ( O(|S1|) + O( |S2|) + .... + O(|Sn|) ) Was hilft das? S S1 S2 Sn = O(|f|(|S1| +|S2|+...+ |Sn|)) .... = O((|f| |TS|) s0

  7. Verbesserung von CheckAU • Fall s  A (y U c) • alle s’ im Suchraum: s’  A (y U c) (sonst: s.....s’ + Gegenbeispiel bei s’ wäre Gegenbsp. bei s!) 2. Fall s  A (y U c)  Stack zum Abbruchzeitpunkt bildet Gegenbeispiel 2a) s’ auf dem Tiefensuchstack (“grau”)  Stack ab s’ ist immer noch Gegenbeispiel , also s’  A (y U c) 2b) s’ nicht mehr auf dem Tiefensuchstack (“schwarz”)  s’  A (y U c) (b.w.)

  8. 2. wissen: ex. Weg von s  s’ s** 3a. vor s*  Kreis  Ggbsp, wäre früher gefunden worden s* 3b. nach s*  Knoten ab s** wären schon bei Suche von s’ aus bearbeitet worden ( Wid!) Verbesserung von CheckAU • Ggbsp. ab s’ ohne graue • Knoten geht nicht, hätte ja bei • dfs(s’) gefunden werden müssen Ggbsp. schwarz grau 3. Ggbsp. ab s’ muß also graue Knoten enthalten weiss s’ s also: es kann kein Ggbsp. ab s’ geben  s’  A (y U c)

  9. CheckAU - Pseudocode weiss := V; grau := schwarz := ø; CheckAU(s,y,c) weiss := weiss \ {s}; grau := grau {s}; IF L(s,A(y U c)) = F THEN EXIT CheckAU; END; IF L(s,A(y U c)) = W THEN RETURN; END; CTL(s,c); IF L(s,c) = W THEN L(s,A(y U c)) := W; RETURN; END; L(s,A(y U c)) := F; CTL(s,y); IF L(s,y) = F THEN EXIT CheckAU; END; FOR ALL s’: [s,s’] E DO IF s’  weiss THEN CheckAU(s’,y,c); ELSIF s’  grau THEN EXIT CheckAU; END; END; END; grau := grau \{s}; schwarz := schwarz  {s};L(s,A(y U c)) = W;

  10. Verbesserung von CheckEU • Fall s  E (y U c) • alle s’ im Suchraum: s’  E (y U c) (sonst: s.....s’ + Zeuge bei s’ wäre Zeuge bei s!) 2. Fall s E (y U c)  Stack zum Abbruchzeitpunkt bildet Zeuge 2a) s’ auf dem Tiefensuchstack (“grau”)  Stack ab s’ ist immer noch Zeuge , also s’ E (y U c) 2b) s’ nicht mehr auf dem Tiefensuchstack (“schwarz”)  (b.w.)

  11. Verbesserung von CheckEU s’  E(y U c) s’’ (s’ in nicht beendeter SZK) s’ s’’  E(y U c) (s’’ in beendeter SZK) Argumentation analog zu CheckAU

  12. maxdfs = 0; weiss := V; T := emptystack; CheckEU(s,y,c) IF L(s,E(y Uc)) = W THEN EXIT CheckEU END; IF L(s,E(y Uc)) = F THEN L(s,E(y U c)) := F; RETURN END; CTL(s,c); IFL(s,c) = W THEN L(s,E(y U c)) = W; EXIT; END CTL(s,y); IF L(s,y) = F THEN L(s,E(y U c)) = F; RETURN; END L(s,E(y U c)) := W; s.dfs = maxdfs; maxdfs += 1; weiss := weiss \{s}; push(T,s); s.lowlink := s.dfs; FOR s’:[s,s’]  E DO IF s’  weiss THEN CheckEU(s’,y,c); s.lowlink := MIN(s.lowlink,s’.lowlink); ELSE IF s’  T THEN s.lowlink := MIN(s.lowlink,s’.dfs); END END; END CheckEU - Pseudocode IF s.lowlink = s.dfs THEN REPEAT s’ := pop(T); L(s’,E(y U c)) := F; UNTIL s = s’ END

  13. Beispiel:E(E(a U b) U A (a U b)) 6 FW??? b FF??? 5 WF??? a 4 3 WF??? a FF??? 2 WF??? a 1 WF??? 0 a • a • b • E(a U b) • A(a U b) • E(E(a U b) U A(a U b))

  14. Beispiel:E(E(a U b) U A (a U b)) 6 FW??? b CheckEU(0,E(a U b),A(a U b)) FF??? 5 WF??? a 4 3 WF??? a FF??? 2 WF??? a 1 WF??? 0 a • a • b • E(a U b) • A(a U b) • E(E(a U b) U A(a U b))

  15. Beispiel:E(E(a U b) U A (a U b)) 6 FW??? b CheckEU(0,E(a U b),A(a U b)) CheckAU(0,a,b) FF??? 5 WF??? a 4 3 WF??? a FF??? 2 WF??? a 1 WF??? 0 a • a • b • E(a U b) • A(a U b) • E(E(a U b) U A(a U b))

  16. Beispiel:E(E(a U b) U A (a U b)) 6 FW??? b CheckEU(0,E(a U b),A(a U b)) CheckAU(0,a,b) FF??? 5 WF??? a 4 3 WF??? a FF??? 2 WF??? a 1 WF?F? 0 a • a • b • E(a U b) • A(a U b) • E(E(a U b) U A(a U b))

  17. Beispiel:E(E(a U b) U A (a U b)) 6 FW??? b CheckEU(0,E(a U b),A(a U b)) CheckAU(0,a,b) FF??? 5 WF??? a 4 3 WF??? a FF?F? 2 WF??? a 1 WF?F? 0 a • a • b • E(a U b) • A(a U b) • E(E(a U b) U A(a U b))

  18. Beispiel:E(E(a U b) U A (a U b)) 6 FW??? b CheckEU(0,E(a U b),A(a U b)) CheckEU(0,a,b) FF??? 5 WF??? a 4 3 WF??? a FF?F? 2 WF??? a 1 WF?F? 0 a • a • b • E(a U b) • A(a U b) • E(E(a U b) U A(a U b))

  19. Beispiel:E(E(a U b) U A (a U b)) 6 FW??? b CheckEU(0,E(a U b),A(a U b)) CheckEU(0,a,b) FF??? 5 WF??? a 4 3 WF??? a FF?F? 2 WF??? a 1 WFWF? 0 a • a • b • E(a U b) • A(a U b) • E(E(a U b) U A(a U b))

  20. Beispiel:E(E(a U b) U A (a U b)) 6 FW??? b CheckEU(0,E(a U b),A(a U b)) CheckEU(0,a,b) FF??? 5 WF??? a 4 3 WF??? a FFFF? 2 WF??? a 1 WFWF? 0 a • a • b • E(a U b) • A(a U b) • E(E(a U b) U A(a U b))

  21. Beispiel:E(E(a U b) U A (a U b)) 6 FW??? b CheckEU(0,E(a U b),A(a U b)) CheckEU(0,a,b) FF??? 5 WF??? a 4 3 WF??? a FFFF? 2 WFW?? a 1 WFWF? 0 a • a • b • E(a U b) • A(a U b) • E(E(a U b) U A(a U b))

  22. Beispiel:E(E(a U b) U A (a U b)) 6 FW??? b CheckEU(0,E(a U b),A(a U b)) CheckEU(0,a,b) FF??? 5 WFW?? a 4 3 WFW?? a FFFF? 2 WFW?? a 1 WFWF? 0 a • a • b • E(a U b) • A(a U b) • E(E(a U b) U A(a U b))

  23. Beispiel:E(E(a U b) U A (a U b)) 6 FWW?? b CheckEU(0,E(a U b),A(a U b)) CheckEU(0,a,b) FF??? 5 WFW?? a 4 3 WFW?? a FFFF? 2 WFW?? a 1 WFWF? 0 a • a • b • E(a U b) • A(a U b) • E(E(a U b) U A(a U b))

  24. Beispiel:E(E(a U b) U A (a U b)) 6 FWW?? b CheckEU(0,E(a U b),A(a U b)) FF??? 5 WFW?? a 4 3 WFW?? a FFFF? 2 WFW?? a 1 WFWFW 0 a • a • b • E(a U b) • A(a U b) • E(E(a U b) U A(a U b))

  25. Beispiel:E(E(a U b) U A (a U b)) 6 FWW?? b CheckEU(0,E(a U b),A(a U b)) FF??? 5 WFW?? a 4 3 WFW?? a FFFFF 2 WFW?? a 1 WFWFW 0 a • a • b • E(a U b) • A(a U b) • E(E(a U b) U A(a U b))

  26. Beispiel:E(E(a U b) U A (a U b)) 6 FWW?? b CheckEU(0,E(a U b),A(a U b)) CheckAU(1,a,b) FF??? 5 WFW?? a 4 3 WFW?? a FFFFF 2 WFW?? a 1 WFWFW 0 a • a • b • E(a U b) • A(a U b) • E(E(a U b) U A(a U b))

  27. Beispiel:E(E(a U b) U A (a U b)) 6 FWW?? b CheckEU(0,E(a U b),A(a U b)) CheckAU(1,a,b) FF??? 5 WFW?? a 4 3 WFW?? a FFFFF 2 WFWF? a 1 WFWFW 0 a • a • b • E(a U b) • A(a U b) • E(E(a U b) U A(a U b))

  28. Beispiel:E(E(a U b) U A (a U b)) 6 FWW?? b CheckEU(0,E(a U b),A(a U b)) CheckAU(1,a,b) FF?F? 5 WFW?? a 4 3 WFWF? a FFFFF 2 WFWF? a 1 WFWFW 0 a • a • b • E(a U b) • A(a U b) • E(E(a U b) U A(a U b))

  29. Beispiel:E(E(a U b) U A (a U b)) 6 FWW?? b CheckEU(0,E(a U b),A(a U b)) FF?F? 5 WFW?? a 4 3 WFWF? a FFFFF 2 WFWFW a 1 WFWFW 0 a • a • b • E(a U b) • A(a U b) • E(E(a U b) U A(a U b))

  30. Beispiel:E(E(a U b) U A (a U b)) 6 FWW?? b CheckEU(0,E(a U b),A(a U b)) FF?F? 5 WFW?? a 4 3 WFWFW a FFFFF 2 WFWFW a 1 WFWFW 0 a • a • b • E(a U b) • A(a U b) • E(E(a U b) U A(a U b))

  31. Beispiel:E(E(a U b) U A (a U b)) 6 FWW?? b CheckEU(0,E(a U b),A(a U b)) CheckAU(5,a,b) FF?F? 5 WFW?? a 4 3 WFWFW a FFFFF 2 WFWFW a 1 WFWFW 0 a • a • b • E(a U b) • A(a U b) • E(E(a U b) U A(a U b))

  32. Beispiel:E(E(a U b) U A (a U b)) 6 FWWW? b CheckEU(0,E(a U b),A(a U b)) CheckAU(5,a,b) FF?F? 5 WFWW? a 4 3 WFWFW a FFFFF 2 WFWFW a 1 WFWFW 0 a • a • b • E(a U b) • A(a U b) • E(E(a U b) U A(a U b))

  33. Beispiel:E(E(a U b) U A (a U b)) 6 FWWW? b CheckEU(0,E(a U b),A(a U b)) FF?F? 5 WFWWW a 4 3 WFWFW a FFFFF 2 WFWFW a Zeugenpfad gefunden! fertig. 1 WFWFW 0 a • a • b • E(a U b) • A(a U b) • E(E(a U b) U A(a U b))

  34. CTL Model Checking - Abschluß Der Algorithmus ist Instanz der Technik Dynamisches Programmieren = mehrfach verwendete Zwischenresultate werden nur einmal berechnet, bei wiederholter Verwendung nur noch abgelesen.

  35. Nur so zur Info: CTL*-Model Checking = LTL-Model Checking, wobei jede mit einem Pfadquantor beginnende Teilformel als atomare Zustandsaussage angesehen wird. Wert von quantifizierten Teilformeln wird durch rekursiven Aufruf eines LTL-Model Checkers für die Pfadformel unterhalb des Quantors bestimmt • Soviele rekursive LTL-Model Checker, wie Pfadquantoren in der Formel

  36. 3.4. Fairness

  37. Bestandsaufnahme LTL Model Checking  Gegenbeispiel CTL Model Checking  Zeuge (CheckEU)  Gegenbeispiel (CheckAU) mit Fairness: Gegenbeispiel/Zeuge, der alle Fairnessannahmen erfüllt

  38. Bestandsaufnahme “unendliche” Gegenbsp. “endliche” Zeugen/Gegenbsp. LTL-Gegenbsp.: st. zus. akzeptierende Menge Zeuge in CheckEU: y c s’ CheckAU-Gegenbsp.: CheckAU-Gegenbsp.: st. zus. Menge innerhalb Suchraum (EG yc) yc yc s’ irgendeine faire Fortsetzung bei s’ Übersetzen Fairness in zusätzliche Bedingungen an die st. zus. Menge

  39. Bemerkung zu endlichen Pfaden aktionsbasiert: Jeder endliche Pfad kann immer zu einem fairen Pfad fortgesetzt werden Strategie: Von allen Aktionen, die enabled sind, folge der, deren letzte Benutzung am weitesten zurückliegt zustandsbasiert: möglicherweise gibt es keine faire Fortsetzung, aber in diesem Fall sind die Fairnessannahmen unangemessen

  40. Schwache Fairness und st. zus. Mengen Sei G F f schwache Fairnessannahme Pfad p erfüllt f gdw. die Menge der unendlich oft von p durchlaufenen Zustände einen f-Zustand enthält. Pfad p behandelt Aktion a schwach fair gdw. die Menge der unendlich oft von p durchlaufenen Zustände einen Zustand enthält, wo entweder a nicht enabled ist, oder ein a-Nachfolger ebenfalls in der Menge enthalten ist.

  41. Starke Fairness und st. zus. Mengen Sei G F f  G F y starke Fairnessannahme Pfad p erfüllt f gdw. die Menge der unendlich oft von p durchlaufenen Zustände keinen f-Zustand enthält oder einen y-Zustand enthält Pfad p behandelt Aktion a stark fair gdw. die Menge der unendlich oft von p durchlaufenen Zustände keinen Zustand enthält, wo a enabled ist, oder einen Zustand enthält, dessen a-Nachfolger ebenfalls in der Menge enthalten ist.

  42. Aktions- oder zustandsbasiert? • In ihrer SZM-Formulierung sind zustandsbasierte • und aktionsbasierte Annahmen im Prinzip identisch • wir behandeln nur zustandsbasierte Fairnessannahmen; • aktionsbasierte Algorithmen funktionieren analog

  43. Stark zusammenhängende Mengenund starke Fairness (0 1 2)*  (G F a)(G F b) 1 2 3 kein Pfad, der unendlich oft 3 durchläuft, erfüllt die Annahme a 0 • es reicht nicht, Komponenten zu betrachten; alle stark zusammenhängenden Mengen müssen untersucht werden immerhin: Jede SZM ist in einer SZK enthalten

  44. Algorithmus von Lichtenstein+Pnueli • Eingabe: eine SZK C, Mengen Fschw und Fst von • Fairnessannahmen • Ausgabe: eine SZM, die in C enthalten ist und alle • Fairnessannahmen erfüllt (bzw. ø, falls keine ex.) 0. Fall: C trivial  return ø 1. Fall: alle Fairnessannahmen erfüllt (Test ist leicht, siehe vorn) return C 2. Fall: eine schwache Annahme verletzt (also: kein f-Zst. in C)  return ø 3. Fall: eine starke Annahme (G F f) (G F y) ist verletzt (also: es gibt in C f-Zst., aber keine y-Zst.)  Streiche alle f-Zst. aus C, zerlege die entstehende Menge in SZK und rufe den Algorithmus rekursiv für alle Fragmente auf, bis ein Aufruf eine nichttriviale SZM liefert

  45. Komplexität Platz: kein zus. Platz notwendig, die Datenstrukturen der Top-Level-Tiefensuche können recycled werden Zeit: Jede starke Fairnessannahme kann potentiell eine Rekursionsebene verursachen, diese Annahme ist aber in allen tieferen Ebenen immer erfüllt (keine f-Zst. mehr!) Innerhalb einer Rekursionsebene sind alle Suchräume disjunkt  O( (|V| |E| |FST|) |FST| normalerweise klein. Der Algorithmus kann unmittelbar in den originalen Modelchecker integriert werden, egal ob CTL oder LTL

  46. Fazit 3.1 – 3.4 Explizites Model Checking basiert im wesentlichen auf Tiefensuche Die Algorithmen sind extrem leichtgewichtig, arbeiten aber auf riesigen Graphen • wichtigstes Mittel zur Leistungssteigerung ist Verkleinerung des Transitionssystems Dies ist Gegenstand der nächsten 2 Abschnitte

  47. Übung 1 Adaptiere die Prozeduren CheckEU und/oder CheckAU zu Prozeduren CheckEF und CheckAF!

  48. Übung 2 Konstruiere ein (kleines) Transitionssystem, das jede der folgenden Formeln erfüllt.... E( (EG a) U b) EX a EG (b  ¬a) ... und keine der folgenden Formeln erfüllt! AF ¬b EG a

  49. Übung 3 Gibt es im gegebenen Transitionssystem einen unendlichen Pfad, der alle der folgenden Fairnessannahmen erfüllt (der Initialzustand ist links unten)? G F a G F b (G F c)  (G F d) (G F e)  (G F d) d a e b c

More Related