1 computergestützte verifikation 30.4.2002. 2 model checking für finite state systems...
TRANSCRIPT
1
Computergestützte Verifikation
30.4.2002
2
Model Checking für finite state systems
explizit: symbolisch:
3.1: Tiefensuche
3.2: LTL-Model Checking
3.3: CTL-Model Checking
3.5: Reduktion durch Symmetrie3.6: Partial Order Reduction
3.7: Tools
4.1: BDD-basiertes CTL-Model Checking
4.2: SAT-basiertes Model Checking
4.3: Tools
3.4: Fairness
Kapitel 3 Kapitel 4
3
Wie kann man Inklusion entscheiden?
LTS L
LTS L
LTS L¬
Agenda: 1. Automaten, die LTSund L¬
akzeptieren 2. Konstruktion eines Schnittautomaten 3. Entscheidung, ob Automat die leere Sprache akzeptiert
Problem: Wir reden über unendliche Sequenzen!
4
RahmenprozedurCTL(s,)IF L(s,? THEN RETURN ENDCASE AP: berechne L(s,) END: CTL(s,) IF L(s,) THEN CTL(s,); L(s,) = L(s,); ELSE L(s,) = F END¬analogAX : FOR ALL s’: [s,s’] E DO
CTL(s’,); IF L(s’,) = F THEN L(s,) = F; RETURN; END END L(s,) = WEX : analog/* Fortsetzung folgt */
5
CheckAU
s
CheckAU(s,,): Suche Gegenbeispiel
L(s’,) = W
L(s’,) = F
L(s’,A( U )) = ?
L(s’,) = W
L(s’,) = FL(s’,) = F
L(s’,A( U ) = W
L(s’,A( U ) = F
6
Was hilft das?
s0
S
S1
S2 Sn
....
|| ( O(|S1|) +
.... + O(|Sn|))
O( |S2|) +
= O(||(|S1| +|S2|+...+ |Sn|))
= O((|| |TS|)
L(s,A/E( U )) ?
7
Verbesserung von CheckAU
1. Fall s A ( U ) alle s’ im Suchraum: s’ A ( U )(sonst: s.....s’ + Gegenbeispiel bei s’ wäre Gegenbsp. bei s!)
2. Fall s A ( U ) Stack zum Abbruchzeitpunkt bildet Gegenbeispiel
2a) s’ auf dem Tiefensuchstack (“grau”) Stack ab s’ ist immer noch Gegenbeispiel , also s’ A ( U
2b) s’ nicht mehr auf dem Tiefensuchstack (“schwarz”) s’ A ( U ) (b.w.)
8
Verbesserung von CheckAU
Ggbsp.
s
s’
1. Ggbsp. ab s’ ohne graue Knoten geht nicht, hätte ja beidfs(s’) gefunden werden müssenschwarzgrau
weiss
3. Ggbsp. ab s’ muß also graueKnoten enthalten
2. wissen: ex. Weg von s s’
s*
3a. vor s* Kreis Ggbsp,wäre früher gefunden worden
3b. nach s* Knoten ab s**wären schon bei Suche von s’aus bearbeitet worden ( Wid!)
s**
also: es kann kein Ggbsp. ab s’ geben s’ A ( U )
9
CheckAU - Pseudocodeweiss := V; grau := schwarz := ø; CheckAU(s,,)
weiss := weiss \ {s}; grau := grau {s}; IF L(s,A(U)) = F THEN EXIT CheckAU; END;IF L(s,A(U)) = W THEN RETURN; END;CTL(s,);IF L(s,) = W THEN L(s,A( U )) := W; RETURN; END;L(s,A( U )) := F;CTL(s,); IF L(s,) = F THEN EXIT CheckAU; END;FOR ALL s’: [s,s’] E DO
IF s’ weiss THENCheckAU(s’,,);
ELSIF s’ grau THEN EXIT CheckAU; END;END;
END;grau := grau \{s}; schwarz := schwarz {s};L(s,A( U )) = W;
10
Verbesserung von CheckEU
1. Fall s E ( U ) alle s’ im Suchraum: s’ E ( U )(sonst: s.....s’ + Zeuge bei s’ wäre Zeuge bei s!)
2. Fall s E ( U ) Stack zum Abbruchzeitpunkt bildet Zeuge
2a) s’ auf dem Tiefensuchstack (“grau”) Stack ab s’ ist immer noch Zeuge , also s’ E ( U
2b) s’ nicht mehr auf dem Tiefensuchstack (“schwarz”) (b.w.)
11
Verbesserung von CheckEU
s’
s’’ s’ E( U )
(s’ in nicht beendeter SZK)
s’’ E( U )
(s’’ in beendeter SZK)Argumentation analogzu CheckAU
12
CheckEU - Pseudocodemaxdfs = 0; weiss := V; T := emptystack;
CheckEU(s,,)
IF L(s,E( U) = W THEN EXIT CheckEU END;IF L(s,E( U) = F THEN
L(s,E( U )) := F; RETURN END;CTL(s,);IFL(s,) = W THEN L(s,E( U )) = W; EXIT; ENDCTL(s,);IF L(s,) = F THEN L(s,E( U )) = F; RETURN; ENDL(s,E( U )) := 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 THENCheckEU(s’,,);s.lowlink := MIN(s.lowlink,s’.lowlink);
ELSEIF s’ T THEN s.lowlink := MIN(s.lowlink,s’.dfs); END
END;END
IF s.lowlink = s.dfs THEN REPEAT
s’ := pop(T);L(s’,E( U )) := F;
UNTIL s = s’END
13
Beispiel:E(E(a U b) U A (a U b))
a
b
a
a
a
FW???
FF???
FF???
WF???
WF???
WF???
WF???1. a2. b3. E(a U b)4. A(a U b)5. E(E(a U b) U A(a U b))
0
1 2
3
4 5
6
14
Beispiel:E(E(a U b) U A (a U b))
a
b
a
a
a
FW???
FF???
FF???
WF???
WF???
WF???
WF???1. a2. b3. E(a U b)4. A(a U b)5. E(E(a U b) U A(a U b))
CheckEU(0,E(a U b),A(a U b))
0
1 2
3
4 5
6
15
Beispiel:E(E(a U b) U A (a U b))
a
b
a
a
a
FW???
FF???
FF???
WF???
WF???
WF???
WF???1. a2. b3. E(a U b)4. A(a U b)5. E(E(a U b) U A(a U b))
CheckEU(0,E(a U b),A(a U b))
0
1 2
3
4 5
6
CheckAU(0,a,b)
16
Beispiel:E(E(a U b) U A (a U b))
a
b
a
a
a
FW???
FF???
FF???
WF???
WF???
WF???
WF?F?1. a2. b3. E(a U b)4. A(a U b)5. E(E(a U b) U A(a U b))
CheckEU(0,E(a U b),A(a U b))
0
1 2
3
4 5
6
CheckAU(0,a,b)
17
Beispiel:E(E(a U b) U A (a U b))
a
b
a
a
a
FW???
FF???
FF?F?
WF???
WF???
WF???
WF?F?1. a2. b3. E(a U b)4. A(a U b)5. E(E(a U b) U A(a U b))
CheckEU(0,E(a U b),A(a U b))
0
1 2
3
4 5
6
CheckAU(0,a,b)
18
Beispiel:E(E(a U b) U A (a U b))
a
b
a
a
a
FW???
FF???
FF?F?
WF???
WF???
WF???
WF?F?1. a2. b3. E(a U b)4. A(a U b)5. E(E(a U b) U A(a U b))
CheckEU(0,E(a U b),A(a U b))
0
1 2
3
4 5
6
CheckEU(0,a,b)
19
Beispiel:E(E(a U b) U A (a U b))
a
b
a
a
a
FW???
FF???
FF?F?
WF???
WF???
WF???
WFWF?1. a2. b3. E(a U b)4. A(a U b)5. E(E(a U b) U A(a U b))
CheckEU(0,E(a U b),A(a U b))
0
1 2
3
4 5
6
CheckEU(0,a,b)
20
Beispiel:E(E(a U b) U A (a U b))
a
b
a
a
a
FW???
FF???
FFFF?
WF???
WF???
WF???
WFWF?1. a2. b3. E(a U b)4. A(a U b)5. E(E(a U b) U A(a U b))
CheckEU(0,E(a U b),A(a U b))
0
1 2
3
4 5
6
CheckEU(0,a,b)
21
Beispiel:E(E(a U b) U A (a U b))
a
b
a
a
a
FW???
FF???
FFFF?
WF???
WF???
WFW??
WFWF?1. a2. b3. E(a U b)4. A(a U b)5. E(E(a U b) U A(a U b))
CheckEU(0,E(a U b),A(a U b))
0
1 2
3
4 5
6
CheckEU(0,a,b)
22
Beispiel:E(E(a U b) U A (a U b))
a
b
a
a
a
FW???
FF???
FFFF?
WFW??
WFW??
WFW??
WFWF?1. a2. b3. E(a U b)4. A(a U b)5. E(E(a U b) U A(a U b))
CheckEU(0,E(a U b),A(a U b))
0
1 2
3
4 5
6
CheckEU(0,a,b)
23
Beispiel:E(E(a U b) U A (a U b))
a
b
a
a
a
FWW??
FF???
FFFF?
WFW??
WFW??
WFW??
WFWF?1. a2. b3. E(a U b)4. A(a U b)5. E(E(a U b) U A(a U b))
CheckEU(0,E(a U b),A(a U b))
0
1 2
3
4 5
6
CheckEU(0,a,b)
24
Beispiel:E(E(a U b) U A (a U b))
a
b
a
a
a
FWW??
FF???
FFFF?
WFW??
WFW??
WFW??
WFWFW1. a2. b3. E(a U b)4. A(a U b)5. E(E(a U b) U A(a U b))
CheckEU(0,E(a U b),A(a U b))
0
1 2
3
4 5
6
25
Beispiel:E(E(a U b) U A (a U b))
a
b
a
a
a
FWW??
FF???
FFFFF
WFW??
WFW??
WFW??
WFWFW1. a2. b3. E(a U b)4. A(a U b)5. E(E(a U b) U A(a U b))
CheckEU(0,E(a U b),A(a U b))
0
1 2
3
4 5
6
26
Beispiel:E(E(a U b) U A (a U b))
a
b
a
a
a
FWW??
FF???
FFFFF
WFW??
WFW??
WFW??
WFWFW1. a2. b3. E(a U b)4. A(a U b)5. E(E(a U b) U A(a U b))
CheckEU(0,E(a U b),A(a U b))
0
1 2
3
4 5
6
CheckAU(1,a,b)
27
Beispiel:E(E(a U b) U A (a U b))
a
b
a
a
a
FWW??
FF???
FFFFF
WFW??
WFW??
WFWF?
WFWFW1. a2. b3. E(a U b)4. A(a U b)5. E(E(a U b) U A(a U b))
CheckEU(0,E(a U b),A(a U b))
0
1 2
3
4 5
6
CheckAU(1,a,b)
28
Beispiel:E(E(a U b) U A (a U b))
a
b
a
a
a
FWW??
FF?F?
FFFFF
WFWF?
WFW??
WFWF?
WFWFW1. a2. b3. E(a U b)4. A(a U b)5. E(E(a U b) U A(a U b))
CheckEU(0,E(a U b),A(a U b))
0
1 2
3
4 5
6
CheckAU(1,a,b)
29
Beispiel:E(E(a U b) U A (a U b))
a
b
a
a
a
FWW??
FF?F?
FFFFF
WFWF?
WFW??
WFWFW
WFWFW1. a2. b3. E(a U b)4. A(a U b)5. E(E(a U b) U A(a U b))
CheckEU(0,E(a U b),A(a U b))
0
1 2
3
4 5
6
30
Beispiel:E(E(a U b) U A (a U b))
a
b
a
a
a
FWW??
FF?F?
FFFFF
WFWFW
WFW??
WFWFW
WFWFW1. a2. b3. E(a U b)4. A(a U b)5. E(E(a U b) U A(a U b))
CheckEU(0,E(a U b),A(a U b))
0
1 2
3
4 5
6
31
Beispiel:E(E(a U b) U A (a U b))
a
b
a
a
a
FWW??
FF?F?
FFFFF
WFWFW
WFW??
WFWFW
WFWFW1. a2. b3. E(a U b)4. A(a U b)5. E(E(a U b) U A(a U b))
CheckEU(0,E(a U b),A(a U b))
0
1 2
3
4 5
6
CheckAU(5,a,b)
32
Beispiel:E(E(a U b) U A (a U b))
a
b
a
a
a
FWWW?
FF?F?
FFFFF
WFWFW
WFWW?
WFWFW
WFWFW1. a2. b3. E(a U b)4. A(a U b)5. E(E(a U b) U A(a U b))
CheckEU(0,E(a U b),A(a U b))
0
1 2
3
4 5
6
CheckAU(5,a,b)
33
Beispiel:E(E(a U b) U A (a U b))
a
b
a
a
a
FWWW?
FF?F?
FFFFF
WFWFW
WFWWW
WFWFW
WFWFW1. a2. b3. E(a U b)4. A(a U b)5. E(E(a U b) U A(a U b))
CheckEU(0,E(a U b),A(a U b))
0
1 2
3
4 5
6
Zeugenpfadgefunden!
fertig.
34
CTL Model Checking - Abschluß
Der Algorithmus ist Instanz der TechnikDynamisches Programmieren
= mehrfach verwendete Zwischenresultate werden nureinmal berechnet, bei wiederholter Verwendung nurnoch 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 rekursivenAufruf eines LTL-Model Checkers für die Pfadformelunterhalb 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 alleFairnessannahmen erfüllt
38
Bestandsaufnahme“unendliche” Gegenbsp. “endliche” Zeugen/Gegenbsp.
LTL-Gegenbsp.:st. zus. akzeptierende Menge
CheckAU-Gegenbsp.:
st. zus. Menge innerhalb Suchraum (EG )
Zeuge in CheckEU:
CheckAU-Gegenbsp.:
irgendeine faire Fortsetzungbei s’
Übersetzen Fairness inzusätzliche Bedingungenan die st. zus. Menge
s’
s’
39
Bemerkung zu endlichen Pfaden
aktionsbasiert: Jeder endliche Pfad kann immer zu einemfairen 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 schwache Fairnessannahme
Pfad erfüllt gdw. die Menge der unendlich oft von durchlaufenen Zustände einen -Zustand enthält.
Pfad behandelt Aktion a schwach fair gdw. die Menge der unendlich oft von durchlaufenen Zustände einen Zustandenthält, wo entweder a nicht enabled ist, oder ein a-Nachfolgerebenfalls in der Menge enthalten ist.
41
Starke Fairness und st. zus. Mengen
Sei G F G F starke Fairnessannahme
Pfad erfüllt gdw. die Menge der unendlich oft von durchlaufenen Zustände keinen -Zustand enthält odereinen -Zustand enthält
Pfad behandelt Aktion a stark fair gdw. die Menge der unendlich oft von durchlaufenen Zustände keinen Zustandenthä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 zustandsbasierteund aktionsbasierte Annahmen im Prinzip identischwir behandeln nur zustandsbasierte Fairnessannahmen;aktionsbasierte Algorithmen funktionieren analog
43
Stark zusammenhängende Mengenund starke Fairness
a
0
123
(0 1 2)* (G F a)(G F b)
kein Pfad, der unendlich oft 3durchläuft, erfüllt die Annahme
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 C2. Fall: eine schwache Annahme verletzt (also: kein -Zst. in C) return ø3. Fall: eine starke Annahme (G F ) (G F ) ist verletzt (also: es gibt in C -Zst., aber keine -Zst.) Streiche alle -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 Datenstrukturender 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 -Zst. mehr!)
Innerhalb einer Rekursionsebene sind alleSuchräume disjunkt
O( (|V| |E| |FST|)
|FST| normalerweise klein.
Der Algorithmus kann unmittelbar in den originalen Modelcheckerintegriert 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, arbeitenaber 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 zuProzeduren CheckEF und CheckAF!
48
Übung 2
Konstruiere ein (kleines) Transitionssystem, das jede der folgenden Formeln erfüllt....
... und keine der folgenden Formeln erfüllt!
E( (EG a) U b)
EG a
EX a
AF ¬b
EG (b ¬a)
49
Übung 3
Gibt es im gegebenen Transitionssystem einen unendlichen Pfad, der alle der folgenden Fairnessannahmenerfüllt (der Initialzustand ist links unten)?G F a G F b (G F c) (G F d) (G F e) (G F d)
e
a
b
c
d