Computergestützte Verifikation 19.4.2002
Inhalt Kapitel 1: Systeme Simulation Gegenbeispiel Fehler- beseitigung Verfeinerung Abstraktion System Modell - Model Checker + Präzisierung Formalisierung Spezifikation log. Formel Überlauf
Zusammenfassung Kapitel 1 Als Modell wird dem Model Checker eine implizite Systembeschreibung übergeben Es gibt viele Beschreibungssprachen Hinter jeder impliziten Beschreibung steckt ein Transitionssystem Konstruktion des Transitionssystems ist Aufgabe des Model Checkers
Kapitel 2 Temporale Logik
Inhalt Kapitel 1: Systeme Kapitel 2: Temporale Logik Simulation Gegenbeispiel Fehler- beseitigung Verfeinerung Abstraktion System Modell - Model Checker + Präzisierung Formalisierung Spezifikation log. Formel Überlauf
Warum nicht einfach PK 1? Beispiel: Wenn Prozess A eine Nachricht an B sendet, so wird (irgendwann spaeter) Prozess B eine Bestätigung zurückschicken. t (send(A,B,t) t’ (send(B,A,t’))) Viel zu kompliziert Rechnen zu schwer
Was ist Temporale Logik? Real Time Logik Es geht nicht um Zeit Es geht um Eigenschaften von Zuständen und deren Änderung in Systemabläufen Es ist (bei uns) eine Erweiterung der Aussagenlogik
Die Temporale Logik CTL* (Computation Tree Logic) Ausgangspunkt: Eigenschaften von Zuständen Sei AP eine Menge von atomaren Aussagen. Jedes Element von AP ist eine Zustandsformel in CTL* Jeder Zustand liefert eine Belegung der atomaren Aussagen mit Wahrheitswerten: s(p) {W,F} Ein Zustand s erfüllt p AP gdw. s(p) = W. s ~ p a,c ~ c ~ b
Zustandseigenschaften “bin bei Anweisung k” “Mailbox ist leer” “nil dereferenziert” “x[17] > 35” k,q,n q,n q x,k Annahme: s(p) mit vernachlässigbarem Aufwand berechenbar aus Repräsentation von s im Rechner
Pfade in Transitionssystemen ... s5 s6 s4 ... Wir betrachten nur unendliche Pfade (ggf. unendliche Wiederholung des Endzustandes)
CTL* -Triviale Pfadformeln a,q b c c,d ..... a Jede Zustandsformel ist eine Pfadformel Ein Pfad erfüllt eine Zustandsformel gdw. sein erster Zustand sie erfüllt. p ~ a p ~ c p ~ true
CTL* - Der NACHFOLGER-Operator a,q b c c,d ..... a,q b c c,d ..... a,q b c c,d ..... X b X b c c,d ..... Wenn f eine Pfadformel ist, so auch X f Ein Pfad (s0 s1 s2 s3 ... ) erfüllt X f gdw. (s1 s2 s3 s4 ... ) erfüllt f. p ~ X a p ~ X X X b X Tautologien: X f w X f X (f ) w X f X
CTL* - Der IRGENDWANN-Operator ...... p: a a,q b c c,d ..... b c c,d ..... Falls f eine Pfadformel ist, so auch F f Ein Pfad (s0 s1 s2 s3 ... ) erfüllt F f gdw. (s[i] s[i+1] s[i+2] s[i+3] ... ) erfüllt f, für ein im0. p ~ F b p ~ X a - F( b . X c) Tautologien: f u F f X f u F f F f w F F f X F f w F X f F (f y) u F f F y F f w f X F f F (f y) w F f F y
CTL* - Der IMMER-Operator ...... p: a a,q b,q a,c q,c q q ..... Wenn f eine Pfadformel ist, so auch G f Ein Pfad (s0 s1 s2 s3 ... ) erfüllt G f gdw. (s[i] s[i+1] s[i+2] s[i+3] ... ) erfüllt f, für alle im0. p ~ G (a - q) Tautologien: G f u f G f u X f G f u F f G f w G G f G f w F f G f G y u G (f y) G f G y w G (f y) G f w f X G f
Kombinationen von F and G G F f = f gilt unendlich oft ....... F G f = f stabilisiert .......... G ( f u F y) = f führt zu y .......... Tautologien: F G F f w G F f G F G f w F G f
CTL* - Der BIS-Operator a,d a,q c,q a,c q,c q q ..... Wenn f und y Pfadformeln sind, so auch f U y Ein Pfad (s0 s1 s2 s3 ... ) erfüllt f U y gdw. (s[i] s[i+1] s[i+2] s[i+3] ... ) erfüllt y, für ein im0, und (s[j] s[j+1] s[j+2] ... ) erfüllt f, für alle j < i. p ~ a U c Tautologien: y u f U y F f w true U f f U y . y u f f U y w y (f . X (f U y))
Temporale Operatoren auf Pfaden – Zusammenfassung Symbol engl. Name Vergangenheitsversion nextstep X / ; P / ; (previous) O / ( F / ( eventually (once) G / 1 always (always been) B / 1 U until S (since) 14444444244444444444443 + atomare Aussagen + Boolesche Operatoren = Linear Time Temporal Logic (LTL)
Sicherheit und Lebendigkeit Eine Pfadeigenschaft kann aufgefaßt werden als die Menge derjenigen Pfade, die die Eigenschaft erfüllen S ist eine Sicherheitseigenschaft, wenn zu jedem p S ein (endl.) Anfangsstück p’ existiert, so daß jede unendliche Fortsetzung von p’ ebenfalls S ist. Also: Verletzung einer Sicherheitseigenschaft kann nach endlicher Zeit festgestellt werden und ist permanent. Beispiele: G f X f
Sicherheit und Lebendigkeit L ist eine Lebendigkeitseigenschaft, wenn zu jedem endlichen Pfad p eine Fortsetzung p’ L existiert. Also: Für keinen Pfad kann ich mir nach endlicher Zeit sicher sein, daß er die Eigenschaft verletzt. Beispiele: F f GF f FG f Satz: Jede Pfadeigenschaft ist äquivalent zu einer Konjunktion aus einer Sicherheits- und einer Lebendigkeitseigenschaft.
Sicherheit und Lebendigkeit in der Praxis: Unterteilung in Sicherheit und Lebendigkeit sehr natürlich Sicherheit = nichts Schlimmes kann jemals passieren Lebendigkeit = Etwas Erwünschtes wird irgendwann passieren
Der Berechnungsbaum s1 s1 s5 s6 s4 s2 s1 s4 s5 s3 s2 s6 s5 s3 s2 s4 s6
Der Berechnungsbaum ist unendlich in jedem Zweig a,b c a,b q q a,q q c ist unendlich in jedem Zweig a,q Zu jedem (Anfangs-)zustand gibt es genau einen Berechnungsbaum Berechnungsbaum hat die gleichen Pfade wie zugrundeliegendes Transitionssystem (beim gleichen Anfangszustand) a,b a,q q q c
CTL* -Pfadquantoren Wenn f eine Pfadformel ist, so ist E f eine Zustandsformel s s erfüllt E f gdw. es einen Pfad p gibt, der bei s beginnt und p ~ f Wenn f eine Pfadformel ist, so ist A f eine Zustandsformel a,b a,d s erfüllt A f gdw. für alle Pfade p, die bei s beginnen, gilt: p ~ f c Tautologien: A f w E f A f u E f s ~ E F c s ~ A X a
CTL* - Komplexe Formeln CTL* = Atomare Zustandsaussagen + Boolesche Operatoren + Temporale (Pfad-) Operatoren + Pfadquantoren a G E F a 123 Zustandsformel 1423 Pfadformel
CTL* - Zusammenfassung sehr ausdrucksstark Keine effizienten Algorithmen bekannt Es gibt effiziente Algorithmen für Fragmente von CTL* CTL* LTL CTL nur Pfad- formeln Nur Zust.- formeln
Computation Tree Logic (CTL) CTL = atomare Zustandsaussagen + Boolesche Operatoren + Paare [ Pfadquantor , Temporaloperator ] AG (invariant) AF (irgendwann) AX (in allen Nachf.) A( . U . ) (bis) EG (mgl.weise immer) EF (möglich) EX (in einem Nachf.) E( . U . ) (bis)
CTL –AG und EF s ~ EF grün s s ~ AG blau Tautologien: AG f w EF f AG AG f w AG f EF EF f w EF f f u EF f AG f u f AG EF AG EF f w AG EF f EF AG EF AG f w EF AG f
CTL –EG und AF s ~ AF grün s s ~ EG blau Tautologienb: EG f w AF f EG EG f w EG f AF AF f w AF f f u AF f EG f u f
CTL –AX und EX s ~ EX grün s s ~ AX blau Tautologien: AX f w EX f AX f u EX f
CTL –AU und EU s s ~ E(grün U gelb) s ~ A(blau U rot) Tautologien: EF f w E(true U f) AF f w A(true U f) A(f U y) w EG y - E( y U ( f . y))
Einige relevante CTL-Eigenschaften AG sicher - nichts Schlimmes passiert jemals AG eine Aktion enabled - Verklemmungsfrei EF Menüpunkt - man kann sich zu ihm durchklicken AF Ziel - Irgendwann wird man es schaffen AG(req u AF ack) -Auf jeden Req folgt ein Ack AG AF verfügbar - ...es macht Sinn zu warten AG EF exit - man kann immer sauber beenden
Gegenbeispiele Simulation Gegenbeispiel Fehler- Verfeinerung beseitigung Verfeinerung Abstraktion System Modell - Model Checker + Präzisierung Formalisierung Spezifikation log. Formel Überlauf
Gegenbeispiele für A-Formeln Gegenbeispiel für... = Zeugenpfad für... AG f EF f AF f EG f (AX f) (EX f) A(f U y) EG y oder E( y U ( f . y)) 123
Basen für die Temporaloperatoren CTL: (E/A)X und EU und AU AX f EX f sonst analog LTL oder (E/A)X und EU und EG A(f U y) (EG y E( y U (fy))) LTL : X und U F f true U f G f F f
Gültigkeit in Transitionssystemen Ein Transitionssystem erfüllt eine CTL*-Formel f, falls zu jedem Anfangszustand der zugehörige Berechnungsbaum f erfüllt. Ein Transitionssystem erfüllt eine LTL-Formel f, falls jeder bei einem Anfangszustand beginnende Pfad f erfüllt. Ein Transitionssystem erfüllt eine CTL-Formel f, falls jeder Anfangszustand f erfüllt. Tautologie: f A f
Interessante Probleme Erfüllbarkeit: Geg.: Formel f Frage: Gibt es ein Transitionssystem, in dem f gilt? Axiomatisierbarkeit: Frage: Gibt es eine endl. Menge von Formeln und Regeln, aus denen sich alle Tautologien ableiten lassen? 3. Model Checking: Geg.: Formel f und Transitionssystem TS Frage: Erfüllt TS f? CTL*: O(2|f| |TS|) LTL: O(2|f| |TS|) LTL: O(|f| |TS|)
Übung 1 Gegeben ist folgender Pfad. Die Notation ( ... ) * soll bedeuten, daß sich die eingeklammerte Sequenz bis ins Unendliche wiederholt. Welche Pfadeigenschaften sind erfüllt? a a,b d a,d b c a,c ( a,c b,c c )* G ((a d) X X G c) G (a F b) (F b) U c G ( a X b ) ( c) U b
Übung 2 Welche der folgenden Formeln sind Tautologien? F y F ( f U y) G ( f U y) G F y f U (y U c) (f y) U c f U y f U X y
Übung 3 Formalisiere folgende Spezifikationen in CTL* (wähle dazu geeignete atomare Aussagen)! Eine im Bahnhof stehende S-Bahn schließt die Türen, bevor sie abfährt Es ist nie möglich, vom 2. Gang in den 4. Gang zu schalten, ohne zwischendurch in den 3. Gang geschaltet zu haben Zwei parallele Prozesse schreiben nie gleichzeitig auf die geteilte Variable x. Jede Variable ist initialisiert, bevor sie das erste Mal benutzt wird. Hinweis: Man braucht wirklich keine Vergangenheitsoperatoren!