490 likes | 589 Views
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
E N D
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 Model Checking 3.4: Fairness 4.3: Tools 3.5: Reduktion durch Symmetrie 3.6: Partial Order Reduction 3.7: Tools
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!
CTL(s,f) • IF L(s,f) ? THEN RETURN END • CASE f • AP: berechne L(s,f) END yc: CTL(s,y) IF L(s,y) THEN CTL(s,c); L(s,f) = L(s,c); ELSE L(s,f) = F END ¬y, yc: 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
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
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
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.)
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)
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;
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.)
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
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
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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.
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
Bestandsaufnahme LTL Model Checking Gegenbeispiel CTL Model Checking Zeuge (CheckEU) Gegenbeispiel (CheckAU) mit Fairness: Gegenbeispiel/Zeuge, der alle Fairnessannahmen erfüllt
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 yc) yc yc s’ irgendeine faire Fortsetzung bei s’ Übersetzen Fairness in zusätzliche Bedingungen an die st. zus. Menge
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
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.
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.
Aktions- oder zustandsbasiert? • In ihrer SZM-Formulierung sind zustandsbasierte • und aktionsbasierte Annahmen im Prinzip identisch • wir behandeln nur zustandsbasierte Fairnessannahmen; • aktionsbasierte Algorithmen funktionieren analog
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
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
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
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
Übung 1 Adaptiere die Prozeduren CheckEU und/oder CheckAU zu Prozeduren CheckEF und CheckAF!
Ü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
Ü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