Seminar über Software Model Checking Vortrag zum Thema Predicate Abstraction Robert Mattmüller Betreuer: Prof. Dr. Stefan Leue Wintersemester 2003/2004 1. Dezember 2003
1 Software Model Checking Predicate Abstraction 1. Dezember 2003 Überblick Einleitung Was bedeutet predicate abstraction? Konstruktion abstrakter Zustandsgraphen Definitionen Ein Abstraktionsschema Exploration des abstrakten Zustandsraumes Eine Implementierung Anwendungsbeispiel und Zusammenfassung
2 Software Model Checking Predicate Abstraction 1. Dezember 2003 Einleitung Was bedeutet predicate abstraction? Ziel: Verifikation von unendlichen (Software-)Systemen. Methoden: theorem proving und model checking. Schritt 1: automatische Erzeugung eines endlichen abstrakten Systems unter wesentlicher Verwendung von theorem proving. Schritt 2: Nachweis der gewünschten Eigenschaft im abstrakten System (model checking).
3 Software Model Checking Predicate Abstraction 1. Dezember 2003 Abstrakter Zustandsraum: Menge der Monome in konkreten Zustandsprädikaten ϕ 1,..., ϕ l. Abstrakte Transitionsrelation: Monom m kleinstes Monom m, das von allen Nachfolgern der von m repräsentierten konkreten Zustände erfüllt wird. Damit konstruierbar: abstrakter Zustandsgraph. Darin Ermittlung der Menge der erreichbaren abstrakten Zustände. Diese liefert obere Abschätzung der Menge der erreichbaren Zustände im konkreten System (Invariante).
4 Software Model Checking Predicate Abstraction 1. Dezember 2003 Überblick Einleitung Was bedeutet predicate abstraction? Konstruktion abstrakter Zustandsgraphen Definitionen Ein Abstraktionsschema Exploration des abstrakten Zustandsraumes Eine Implementierung Anwendungsbeispiel und Zusammenfassung
5 Software Model Checking Predicate Abstraction 1. Dezember 2003 Definitionen und Folgerungen post[r](ϕ) = q.r(q, q) ϕ(q ) beschreibt die Menge der Nachfolgerzustände von ϕ bzgl. R, pre[r](ϕ) = q.(r(q, q ) ϕ(q )) die Menge aller Zustände, die immer in Zustände übergehen, die ϕ erfüllen (Vorgänger von ϕ bzgl. R, schwächste Vorbedingung). Damit gilt: pre[τ i ](ϕ) gdw. (g i ( x) ϕ[ass i ( x)/ x]) post[r](ϕ) ϕ gdw. ϕ pre[r](ϕ ) ϕ ϕ ϕ... ϕ
6 Software Model Checking Predicate Abstraction 1. Dezember 2003 Definitionen S = (Q, R, I) ist der Zustandsgraph eines konkreten Systems, bestehend aus einer Menge von Variablenbelegungen (Zuständen) Q, einer partiellen Übergangsrelation R unter Berücksichtigung von guarded commands, und einer Menge von Startzuständen I. Seien Q A ein Verband abstrakter Zustände, α : P(Q) Q A eine Abstraktionsund γ : Q A P(Q) eine Konkretisierungsfunktion. Dann heißt S A = (Q A, τ A i, IA ) Abstraktion von S genau dann, wenn I γ(i A ) und i q A Q A. post[τ i ](γ(q A )) γ(τi A γ (qa )) τi A(qA ) γ(q A ) post[τ i ] γ q A τ A i
7 Software Model Checking Predicate Abstraction 1. Dezember 2003 Eigenschaften der Abstraktion Der abstrakte Anfangszustand repräsentiert mindestens alle konkreten Anfangszustände. Der Nachfolger eines abstrakten Zustandes repräsentiert mindestens alle Nachfolger von konkreten Zuständen, die von dem abstrakten Zustand repräsentiert werden. Also wird jede konkrete Übergangsabfolge von mindestens einer abstrakten dargestellt. Aus Effizienzgründen gilt i.a. nicht post[τ i ](γ(q A )) = γ(τ A i (qa )).
8 Software Model Checking Predicate Abstraction 1. Dezember 2003 Überblick Einleitung Was bedeutet predicate abstraction? Konstruktion abstrakter Zustandsgraphen Definitionen Ein Abstraktionsschema Exploration des abstrakten Zustandsraumes Eine Implementierung Anwendungsbeispiel und Zusammenfassung
9 Software Model Checking Predicate Abstraction 1. Dezember 2003 Ein spezielles Abstraktionsschema Verband der abstrakten Zustände: Monome in Booleschen Variablen B 1,..., B l. Konkretisierungsfunktion: γ(m( B)) = m[ ϕ/ B] Abstraktionsfunktion (obere Abschätzung): α (ϕ) = l {B i ϕ ϕ i } i=1 l { B i ϕ ϕ i } i=1
10 Software Model Checking Predicate Abstraction 1. Dezember 2003 Abstrakte Transitionen: für eine konkrete Transition τ i so definiert, dass das folgende Diagramm kommutiert: m γ γ(m) τ A i post[τ i ] α (post[τ i ](γ(m))) α post[τ i ](γ(m)) Genauer und unter Berücksichtigung von guarded assignments definiert man τ A i (m) := false l j=1 falls m[ ϕ/ B] g i B j falls post[τ i ](m[ ϕ/ B]) ϕ j B j falls post[τ i ](m[ ϕ/ B]) ϕ j true sonst sonst.
11 Software Model Checking Predicate Abstraction 1. Dezember 2003 Zur Erinnerung: pre[τ i ](ϕ) gdw. (g i ( x) ϕ[ass i ( x)/ x]) post[r](ϕ) ϕ gdw. ϕ pre[r](ϕ ) Damit lässt sich die Definition von τ A i τ A i (m) := false l j=1 (m) ohne -Quantoren darstellen: falls m[ ϕ/ B] g i B j falls (m[ ϕ/ B] g i ( x)) ϕ j [ass i ( x)/ x]) B j falls (m[ ϕ/ B] g i ( x)) ϕ j [ass i ( x)/ x]) true sonst sonst. Beweis der Implikationen in der Fallunterscheidung mit Hilfe von theorem proving.
12 Software Model Checking Predicate Abstraction 1. Dezember 2003 Mögliche Gründe für Nicht-Durchführbarkeit eines der Beweise: Zu schwache Beweisstrategie Nicht-Determinismus der abstrakten Übergangsrelation Zu große abstrakte Startzustandsmenge Zu grober abstrakter Zustandsraum Einschränkung auf Monome Wahl des abstrakten Startzustandes: I A := α (init)
13 Software Model Checking Predicate Abstraction 1. Dezember 2003 Überblick Einleitung Was bedeutet predicate abstraction? Konstruktion abstrakter Zustandsgraphen Definitionen Ein Abstraktionsschema Exploration des abstrakten Zustandsraumes Eine Implementierung Anwendungsbeispiel und Zusammenfassung
14 Software Model Checking Predicate Abstraction 1. Dezember 2003 Methoden zum Durchsuchen des abstrakten Zustandsraumes Erste Approximation der Menge der erreichbaren Zustände: alle berechneten Zustandsmengen seien durch Monome ausdrückbar. Vorbemerkung: Der Supremumsoperator ordnet je zwei Monomen m 1, m 2 das stärkste Monom zu, das höchstens so stark ist wie m 1 m 2. Beispiel: (B 1 B 2 ) (B 2 B 3 ) B 2. I 1 := j=0 X j, mit { X0 := I A X j+1 := p i=1 τ A i (X j) X X X 0 j l Die Berechnung benötigt höchstens l Iterationen. Bei K = 2pl + p Beweisen pro Iteration insgesamt l K Beweise.
15 Software Model Checking Predicate Abstraction 1. Dezember 2003 Zweite Approximation: beliebige Boolesche Ausdrücke in B, Anwendung von τi A auf einzelne abstrakte Zustände: nur I 2 := j=0 X j, mit { X0 := I A X j+1 := {τ A i (m) m X j, i = 1,..., p} X 0..................... Genauere Approximation, aber schlechtere worst case Laufzeit: pro Iteration müssen schlimmstenfalls die Nachfolger aller exponentiell vieler abstrakter Zustände berechnet werden.
16 Software Model Checking Predicate Abstraction 1. Dezember 2003 Relativierung der exponentiellen worst case Laufzeit: Mögliche Vermischung der beiden Approximationen. Nur eine kleine Teilmenge der abstrakten Zustände sollte überhaupt erreichbar sein. Manche abstrakten Zustände haben keine entsprechenden konkreten Zustände ( dependency predicates). Verbesserung der berechneten Invarianten: Rückwärtsanalyse, beginnend mit der ermittelten Invariante.
17 Software Model Checking Predicate Abstraction 1. Dezember 2003 Weitere Möglichkeiten Speicherung der abstrakten Übergangsrelation ( abstrakter Zustandsgraph ) Verifikation von Eigenschaften, die als temporallogische Formeln in B ohne -Quantifikation über Ausführungspfade repräsentiert werden können. Abstrakter Zustandsgraph globaler Kontrollgraph. Inkrementelle Verfeinerung des abstrakten Zustandsgraphen ohne Neuberechnung aller geführten Beweise.
18 Software Model Checking Predicate Abstraction 1. Dezember 2003 Überblick Einleitung Was bedeutet predicate abstraction? Konstruktion abstrakter Zustandsgraphen Definitionen Ein Abstraktionsschema Exploration des abstrakten Zustandsraumes Eine Implementierung Anwendungsbeispiel und Zusammenfassung
19 Software Model Checking Predicate Abstraction 1. Dezember 2003 Pvs als theorem prover. Eine Implementierung Einsatz von decision procedures, rewriting und Booleschen Vereinfachungen mit BDDs. Einführung eines dependency predicate. Berücksichtigung von Vorwissen über das System. Berechnung nur der Implikationen, die mit dependency predicate vereinbar sind und sich nicht aus dem bereits berechneten Graphen ableiten lassen.
20 Software Model Checking Predicate Abstraction 1. Dezember 2003 Eine Implementierung (Forts.) Wichtigste Eigenschaft des Verfahrens: keine Nutzereingriffe notwendig (Ausnahme: Wahl der Beweisstrategie, Wahl der Prädikate ϕ j ). In Frage kommende Prädikate: Vorbedingungen (guards) der Transitionen. Teilformeln der zu verifizierenden Invarianten.
21 Software Model Checking Predicate Abstraction 1. Dezember 2003 Überblick Einleitung Was bedeutet predicate abstraction? Konstruktion abstrakter Zustandsgraphen Definitionen Ein Abstraktionsschema Exploration des abstrakten Zustandsraumes Eine Implementierung Anwendungsbeispiel und Zusammenfassung
22 Software Model Checking Predicate Abstraction 1. Dezember 2003 Eine Anwendung: Bounded Retransmission Protocol Paketweise Datenübertragung Höchstens max viele Wiederholungen der Übertragung einer Nachricht Sender: OK, NOT OK, DONT KNOW Empfänger: FIRST, INCOMPLETE, OK, NOT OK Timers: T1, T2
23 Software Model Checking Predicate Abstraction 1. Dezember 2003 Bounded Retransmission Protocol (Forts.) Korrektheitskriterium: Konsistenz der Confirmations und Indications, Konsistenz von Folgen gesendeter und empfangener Nachrichten, etwa (IN = OUT IN = tail(out )) ϕ 1 := (IN = OUT), ϕ 2 := (IN = tail(out )). Verifikation des Protokolles: 19 Prädikate aus den guards. Abstrakter Zustandsgraph: 475 Zustände, 685 Transitionen, berechnet in drei Stunden auf einer Sparc 10.
24 Software Model Checking Predicate Abstraction 1. Dezember 2003 Zusammenfassung Endliches abstraktes System anstelle eines unendlichen konkreten. Repräsentation der Zustände durch Monome. Abstrakter Zustandsgraph, Menge der erreichbaren abstrakten Zustände. Keine Berechnung von Nachfolgern unerreichbarer Zustände. Berechnung von Invarianten (vollautomatisch). Inkrementelle Anwendbarkeit. Weitere Effizienzsteigerung möglich.
25 Software Model Checking Predicate Abstraction 1. Dezember 2003 Literatur [DDP99] Das, Satyaki, David L. Dill und Seungjoon Park: Experience with Predicate Abstraction. In: Computer Aided Verification, Seiten 160 171, 1999. [GS97] [SO01] Graf, Susanne und Hassen Saïdi: Construction of abstract state graphs with PVS. In: Proc. 9th International Conference on Computer Aided Verification 1997 (CAV 97), Band 1254 der Reihe Lecture Notes in Computer Science, Seiten 72 83. Springer Verlag, 1997. Shankar, N. und S. Owre: PVS Prover Guide. Computer Science Laboratory, SRI International, Menlo Park, CA, 2001.