Model Checking mit Büchi Automaten

Ähnliche Dokumente
Automaten, Spiele und Logik

Kapitel 2: Algorithmen für CTL und LTL

Software Engineering Ergänzung zur Vorlesung

Theorie der Informatik

FORMALE SYSTEME. 10. Vorlesung: Grenzen regulärer Sprachen / Probleme für Automaten. TU Dresden, 14. November 2016.

Theoretische Grundlagen der Informatik. Vorlesung am 02. November INSTITUT FÜR THEORETISCHE INFORMATIK

4) Automaten auf unendlichen Wörtern

MODEL CHECKING 2 - AUTOMATEN

Theorie der Informatik

Automaten und formale Sprachen Klausurvorbereitung

11.1 Kontextsensitive und allgemeine Grammatiken

Reguläre Sprachen. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer,

Abschlusseigenschaften. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Abschlusseigenschaften

12. Woche: Verifizierer, nicht-deterministische Turingmaschine, Klasse NP

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Theoretische Grundlagen der Informatik

Die mathematische Seite

5.2 Endliche Automaten

Zweizusammenhang und starker Zusammenhang

Automatentheorie und Logik

Polynomielle Verifizierer und NP

Grundlagen der Theoretischen Informatik, SoSe 2008

abgeschlossen unter,,,, R,

Graphenalgorithmen I

Breitensuche BFS (Breadth First Search)

1.8 Shift-And-Algorithmus

Sei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden kann.

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

Turing: prinzipielle Berechenbarkeit Abschnitt 4.2. Turingmaschinen: DTM Abschnitt 4.2. DTM: Akzeptieren und Entscheiden Abschnitt 4.

1 Σ endliches Terminalalphabet, 2 V endliche Menge von Variablen (mit V Σ = ), 3 P (V (Σ ΣV )) {(S, ε)} endliche Menge von Regeln,

2.2 Reguläre Sprachen Endliche Automaten

Worterkennung in Texten speziell im Compilerbau 20. April Frank Heitmann 2/64

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

Die Klassen P und NP. Formale Grundlagen der Informatik 1 Kapitel 11. Die Klassen P und NP. Die Klasse P

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2011

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

1 Σ endliches Terminalalphabet, 2 V endliche Menge von Variablen (mit V Σ = ), 3 P (V (Σ ΣV )) {(S, ε)} endliche Menge von Regeln,

Lösungen zur Vorlesung Berechenbarkeit und Komplexität

Satz von Kleene. (Stephen C. Kleene, ) Wiebke Petersen Einführung CL 2

Hauptklausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2011/2012

Suche nach einem solchen Kreis. Endlichkeitstest. Vereinigung und Durchschnitt. Abschlusseigenschaften

Definition 98 Eine Turingmaschine heißt linear beschränkt (kurz: LBA), falls für alle q Q gilt:

Algorithmen auf Sequenzen

Einführung in die Computerlinguistik Satz von Kleene

Klausur zur Vorlesung Informatik III Wintersemester 2007/2008

Transformation von regulärer Linearzeit- Temporallogik zu Paritätsautomaten

Klausur: Berechenbarkeit und Komplexität (Niedermeier/Chen/Froese/Sorge, Sommersemester 2016)

Formale Systeme. Büchi-Automaten. Prof. Dr. Bernhard Beckert WS 2009/2010 KIT INSTITUT FÜR THEORETISCHE INFORMATIK

Formale Methoden 1. Gerhard Jäger 9. Januar Uni Bielefeld, WS 2007/2008 1/23

Reguläre Sprachen und endliche Automaten

Spiele für den. Christian Dax. Betreuer: Dr. Martin Lange. Wiederholung Spiele für VAL und SAT ν-line Automaten Entscheidungsverfahren

FORMALE SYSTEME. 3. Vorlesung: Endliche Automaten. TU Dresden, 17. Oktober Markus Krötzsch

Theoretische Grundlagen der Informatik

Induktive Definition

Präsenzübung Berechenbarkeit und Komplexität

Das Heiratsproblem. Definition Matching

Aufgabe Mögliche Punkte Erreichte Punkte a b c d Σ a b c d Σ x1 13

THIA - Übungsblatt 2.

Definition (Reguläre Ausdrücke) Sei Σ ein Alphabet, dann gilt: (ii) ε ist ein regulärer Ausdruck über Σ.

EINFÜHRUNG IN DIE THEORETISCHE INFORMATIK

Formale Sprachen. Formale Grundlagen (WIN) 2008S, F. Binder. Vorlesung im 2008S

Automaten und Formale Sprachen ε-automaten und Minimierung

Endliche Automaten. Endliche Automaten J. Blömer 1/23

...imbeispiel: Die Konkatenation der Blätter des Ableitungsbaums t bezeichnen wir auch mit yield(t). liefert die Konkatenation: name int + int.

1. Welche der folgenden Aussagen zur Entscheidbarkeit beziehungsweise Unentscheidbarkeit

Theoretische Informatik 1

11. Woche: Turingmaschinen und Komplexität Rekursive Aufzählbarkeit, Entscheidbarkeit Laufzeit, Klassen DTIME und P

Beispiel: NTM. M = ({q 0,q 1,q 2 }, {0, 1}, {0, 1, #},δ, q 0, #, {q 2 }) q 2

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung.

Grundlagen der Theoretischen Informatik

10. Übungsblatt zu Algorithmen I im SS 2010

Satz 90 Sei A = (Q, Σ, δ, q 0, F ) ein DFA. Der Zeitaufwand des obigen Minimalisierungsalgorithmus ist O( Q 2 Σ ).

c) {abcde, abcfg, bcade, bcafg} d) {ade, afg, bcde, bcfg} c) {abcabc} d) {abcbc, abc, a} c) {aa, ab, ba, bb} d) {{aa}, {ab}, {ba}, {bb}}

Theoretische Grundlagen der Informatik

Potenzautomat. Gegeben: A = (Z, I, d, s 0, F ) P(A) = (P(Z), I, D, {s 0 }, F P ) P(Z) = {S S Z}: Potenzmenge von Z; D : P(Z) I P(Z) mit

Theoretische Informatik

Formale Grundlagen der Informatik 1 Kapitel 16 Normalformen und Hornformeln

Theorie der Informatik. Theorie der Informatik. 6.1 Einführung. 6.2 Alphabete und formale Sprachen. 6.3 Grammatiken. 6.4 Chomsky-Hierarchie

4. Alternative Temporallogiken

Formale Sprachen und endliche Automaten

1 Eine Menge M Σ heißt (rekursiv) aufzählbar genau. 2 Die Familie aller aufzählbaren Mengen wird mit RE

Algorithmen und Datenstrukturen 2-1. Seminar -

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

CTL Model Checking SE Systementwurf CTL Model Checking Alexander Grafe 1

Resolutionsalgorithmus

Einführung in die Theoretische Informatik

Diskrete Mathematik. Arne Dür Kurt Girstmair Simon Legner Georg Moser Harald Zankl

Kontextfreie Sprachen

Suchen in Texten. Naives Suchen Verfahren von Knuth-Morris-Pratt Verfahren von Boyer-Moore Ähnlichkeitssuchen Editierdistanz

Kontextfreie Sprachen

Operationen auf endlichen Automaten und Transduktoren

I.2. Endliche Automaten (ohne Ausgabe)

Berechenbarkeit und Komplexität: Rekursive Aufzählbarkeit und die Technik der Reduktion

Deterministische und nichtdeterministische Turing-Maschinen, Typ1- und Typ0-Sprachen

Turingautomaten Jörg Roth Turingautomaten

Laufzeit einer DTM, Klasse DTIME

Hoffmann (HAW Hamburg) Automatentheorie und formale Sprachen

Rekursive Aufzählbarkeit Die Reduktion

Übungsblatt 3. Vorlesung Theoretische Grundlagen der Informatik im WS 17/18

Theoretische Informatik. Reguläre Sprachen und Automaten

Transkript:

Ingo Weigelt Softwaretechnik 3 16.05.2007

Übersicht 1 Automaten über unendlichen Wörtern ω-automaten Büchi-Automaten 2 Model Checking mit Büchi Automaten Konstruktion von A Konstruktion von A S Leerheitstest 3 On-the-Fly Model Checking

ω-automaten Automaten über unendlichen Wörtern ω-automaten ω-automaten sind endliche Automaten, die unendlich lange Wörter akzeptieren. Unendliche Wörter repräsentieren nicht-terminierende Abläufe eines Systems. Endzustände werden durch andere Akzeptanzbedingungen ersezt. Beispiel: Büchi-Automaten.

Büchi-Automaten: Automaten über unendlichen Wörtern Büchi-Automaten Formelle Definition: Ein Büchi Automat ist ein 5-Tupel (Σ,Q,,Q 0,F) mit: Σ : endliches Alphabet Q : endliche Menge von Zuständen Q Σ Q : Transitionsrelation Q 0 : Startzustände F Q : Akteptierende Zustände Akzeptanzverhalten: Sei inf (ρ) die Menge der Zustände, die beim Lauf ρ unendlich oft besucht werden. Dann ist ρ akzeptierend gdw. inf (ρ) F.

Automaten über unendlichen Wörtern Büchi-Automaten verallgemeinerte Büchi-Automaten verallgemeinerter Büchi Automat Ein verallgemeinerter Büchi Automat ist ein Büchi-Automat bei dem F aus Mengen von Mengen von Zuständen besteht. Ein Lauf ρ ist akzeptierend gdw. inf (ρ) P i für alle P i F. Zu jedem verallgemeinerten Büchi-Automaten B existiert ein Büchi-Automat B mit L(B) = L(B ).

Beispiel Automaten über unendlichen Wörtern Büchi-Automaten Büchi Automat A: mit L(A) = (b a) ω a b q 0 q 1 a b

Bemerkungen Automaten über unendlichen Wörtern Büchi-Automaten Die von Büchi-Automaten erkannte Sprache heisst ω-reguläre Sprache. Nicht jede ω-reguläre Sprache wird auch von einem deterministischen Büchi-Automaten erkannt. z.b. L = {α {a,b,c} α enthält nur endlich viele b s} D.h. nicht jeder nicht-deterministische Büchi-Automat kann in einen deterministischen Büchi-Automaten umgewandelt werden.

Automaten über unendlichen Wörtern Abschlusseigenschaften Büchi-Automaten deterministische Büchi-Automaten sind abgeschlossen unter Vereinigung und Schnitt. nichtdeterministische Büchi-Automaten sind zusätzlich abgeschlossen unter Komplement.

Leerheitsproblem Automaten über unendlichen Wörtern Büchi-Automaten Entscheidbarkeit des Leerheitsproblems: Es ist entscheidbar, ob ein Büchi-Automat die leere Sprache akzeptiert. Bestimme die SCCs des Automaten. Die akzeptierte Sprache ist nicht Leer genau dann, wenn es eine SCC gibt, die von einem Startzustand erreichbar ist und einen akzeptierenden Zustand enthält.

SCC - Strongly Connected Components Für die Labelfunktion EG ψ müssen zuerst alle SCCs bestimmt werden Wiederholung: Eine starke Zusammenhangskomponente ist ein Teilgraph in dem jeder Knoten von jedem anderen Knoten über einen Pfad innerhalb des Graphen erreichbar ist. Beispiel:

Model Checking mit Büchi Automaten Model Checking Problem: Gegeben: Kripke Struktur M und Spezifikation S Gesucht: Gilt M = S? Wenn nicht ist ein Gegenbeispiel gesucht Idee: konstruiere Automat A zu M konstruiere Automat S der L(S) erkennt Das Model A erfüllt die Spezifikation S gdw. L(A) L(S) oder L(A) L(S) =

Model Checking mit Büchi Automaten Model Checking Algorithmus: konstruiere Automat A zu M konstruiere Automat S der L(S) erkennt Bilde den Durchschnitt von A und S Prüfe, ob der Automat A S leer ist. Falls A S : Gegenbeispiel ausgeben

Konstruktion von A Konstruktion von A Zustände der Kripke Struktur sind Zustände des Automaten Label der Zustände werden zu Label der Transitionen daher neuer Startzustand i alle Zustände sind akzeptierend {p, q} i {p} {p, q} s 0 s 1 {p} s 0 s 1 {p, q} {p} s 2 {q} {p, q} s 2

Model Checking Algorithmus: konstruiere Automat A zu M konstruiere Automat S der L(S) erkennt Bilde den Durchschnitt von A und S Prüfe, ob der Automat A S leer ist. Falls A S : Gegenbeispiel ausgeben

Gesucht ist ein Büchi Automat S der L(S) erkennt. S kann direkt angegeben werden (SPIN) Es gibt ω-automaten, bei denen das Komplement leicht berechnet werden kann. S wird aus einer Sprache wie LTL abgeleitet: S = ϕ bilde S zu ϕ

Algorithmus: Eingabe: Eigentschaft ϕ als LTL-Formel in negierter Normalform D.h. nur Operatoren U,R, und erlaubt Fψ true U ψ Gψ false R ψ usw. und Negation nur vor Propositionen: (µuη) = ( µ)r( η) (µrη) = ( µ)u( η) Xµ = X µ Ausgabe: verallgemeinerter Büchi Automat B zu ϕ

Datenstruktur des Algorithmus: node =[, incoming,,, ] : Id des Knotens incoming: Liste von s von Knoten mit Kante zu diesem Knoten,, : Listen von Formeln (Teilformeln von ϕ) die Teilformeln in wurden bereits berechnet die Teilformeln in werden im aktuellen Schritt berechnet die Teilformeln in müssen danach noch berechnet werden

Initialisierung: node 0 := [ id(), incoming {init},, {ϕ}, ]; Nodes := expand(node 0, );

Die Funktion expand() ersetzt den Knoten q mit ϕ (q) rekursiv durch neue Knoten q, so dass (q ) Teilformeln von ϕ enthält: ϕ = µ ψ q wird ersetzt durch zwei neue Knoten q 1, q 2 : (q) := (q) \ {ϕ} q 1 := [ id(), incoming incoming(q), (q) {ϕ}, (q) {µ}, (q)] q 2 := [ id(), incoming incoming(q), (q) {ϕ}, (q) {ψ}, (q)]

ϕ = µ ψ q wird ersetzt durch einen neuen Knoten q : (q) := (q) \ {ϕ} q := [ id(), incoming incoming(q), (q) {ϕ}, (q) {µ,ψ}, (q)]

ϕ = µuψ ϕ (µ X(µUψ)) ψ q wird ersetzt durch zwei neue Knoten q 1, q 2 : (q) := (q) \ {ϕ} q 1 := [ id(), incoming incoming(q), (q) {ϕ}, (q) {µ}, (q) {µuψ}] q 2 := [ id(), incoming incoming(q), (q) {ϕ}, (q) {ψ}, (q)]

ϕ = µrψ ϕ ψ (µ X(µRψ)) (ψ µ) (ψ X(µRψ)) q wird ersetzt durch zwei neue Knoten q 1, q 2 : (q) := (q) \ {ϕ} q 1 := [ id(), incoming incoming(q), (q) {ϕ}, (q) {ψ,µ}, (q)] q 2 := [ id(), incoming incoming(q), (q) {ϕ}, (q) {ψ}, (q) {µrψ}]

ϕ = Xµ q wird ersetzt durch einen neuen Knoten q : (q) := (q) \ {ϕ} q := [ id(), incoming incoming(q), (q) {ϕ}, (q), (q) {µ}]

Falls ϕ (negierte) Proposition oder true ist: q wird ersetzt durch einen neuen Knoten q : (q) := (q) \ {ϕ} q := [ id(), incoming {()}, (q) {ϕ}, (q), (q)]

Algorithmus: expand (q, Nodes) { if (q) sei η (q); if η (q) /* η wurde schon berechnet */ (q) := (q) \ {η}; expand(q, Nodes); if η (q) η = False /* Widerspruch */ return Nodes; else erzeuge Knoten q bzw. q 1 und q 2 wie beschrieben; expand(q,nodes); bzw. expand(q 2,expand(q 1,Nodes));

Algorithmus: } else /* (q) = */ if r Nodes: (r) = (q) (r) = (q) { incoming(r) := incoming(r) incoming(q); return Nodes; else /* neuen Knoten einfügen */ expand([ id(), incoming {(q)},, (q), ], Nodes {q});

Beispiel: ϕ = aub : n1 : aub : n2 : {a} : n3 : {b}

Beispiel: ϕ = aub : n2 : {a} : n3 : {b} : n4 : {aub, a}

Beispiel: ϕ = aub : n4 : {aub, a} : n3 : {b} : n5

Beispiel: ϕ = aub : n4 : {aub, a} : n3 : {b} : n5 : n6 : {a} : n7 : {b}

Beispiel: ϕ = aub : n4 : {aub, a} : n3 : {b} : n6 : {a} : n7 : {b}

Beispiel: ϕ = aub : n4 : {aub, a} : n3 : {b} : n6 : {a} : n7 : {b} : n8 : {aub, a}

Beispiel: ϕ = aub : n4 : {aub, a} : n3 : {b} : n8 : {aub, a} : n7 : {b}

Beispiel: ϕ = aub : n4 : {aub, a} : n3 : {b} : n8 : {aub, a} : n7 : {b}

Beispiel: ϕ = aub : n4 : {aub, a} : n3 : {b} : n7 : {b}

Beispiel: ϕ = aub : n4 : {aub, a} : n3 : {b} : n7 : {b} : n9 : {aub, b}

Beispiel: ϕ = aub : n4 : {aub, a} : n3 : {b} : n9 : {aub, b} : n10

Beispiel: ϕ = aub : n4 : {aub, a} : n3 : {b} : n9 : {aub, b} : n10

Beispiel: ϕ = aub : n4 : {aub, a} : n3 : {b} : n9 : {aub, b} : n11 : {aub, b} : n10

Beispiel: ϕ = aub : n4 : {aub, a} : n11 : {aub, b} : n9 : {aub, b} : n10

Beispiel: ϕ = aub : n4 : {aub, a} : n11 : {aub, b} : n9 : {aub, b} : n10

Beispiel: ϕ = aub : n4 : {aub, a} : n9 : {aub, b} Rekursion beendet : n10

Konstruktion des verallgemeinerten Büchi Automaten: Σ = Menge der Propositionen Q = Menge der Knoten in Nodes Q 0 = init = Menge aller Tripel (r,α,r ) mit: r incoming(r ) und α erfüllt alle nicht-/negierten Propositionen in (r ) Akzeptanz: Für jede Teilformel der Form µuψ gibt es eine Akzeptanzmenge E i mit: E i = {r ψ (r) oder µuψ / (r)}

Beispiel: ϕ = aub Nodes: : n4 : {aub, a} B(Nodes): a init b : n9 : {aub, b} a n4 b n9 true

Konstruktion von A S B 1 B 2 Modelchecking Algorithmus: konstruiere Automat A zu gegebener Kripke Struktur konstruiere Automat S der L(S) erkennt Bilde den Durchschnitt von A und S Prüfe, ob der Automat A S leer ist. Falls A S : Gegenbeispiel ausgeben

Konstruktion von A S B 1 B 2 Schnitt zweier Büchi Automaten: B 1 = Σ,Q 1, 1,Q 0 1,F 1, B 2 = Σ,Q 2, 2,Q 0 2,F 2 B 1 B 2 akzeptiert gdw. akzeptierende Zustände von B 1 und B 2 unendlich oft durchlaufen werden. B 1 B 2 = Σ, Q 1 Q 2 {0,1,2},, Q 0 1 Q0 2 {0}, Q 1 Q 2 {2} ( r i,q j,x,a, r m,q n,y ) gdw. (r i,a,r m ) 1 und (q j,a,q n ) 2 Für x und y gilt: x = 0 r m F 1 y = 1 x = 1 q m F 2 y = 2 x = 2 y = 0 sonst y = x

B 1 B 2 - Beispiel Model Checking mit Büchi Automaten Konstruktion von A S B 1 : a b r 1 r 2 a b B 2 : b a q 1 q 2 b a B 1 B 2 : r 1,q 1,0 a b r 1,q 2,1 a r 2,q 1,0 a b b a b r 2,q 1,2 a r 1,q 2,0 b

Leerheitstest Model Checking mit Büchi Automaten Leerheitstest Model Checking Algorithmus: konstruiere Automat A zu M konstruiere Automat S der L(S) erkennt Bilde den Durchschnitt von A und S Prüfe, ob der Automat A S leer ist. Falls A S : Gegenbeispiel ausgeben

Leerheitstest Model Checking mit Büchi Automaten Leerheitstest Idee des Algorithmus: Sei ρ ein akzeptierender Lauf über B dann enthält ρ unendlich viele Akzeptanzzustände. Da die Menge der Zustände endlich ist, muss ρ von der Form ρ 1 ρ 2 ω sein. Der Algorithmus sucht einen Pfad ρ 1 zu einem akzeptierenden Zustand q e und von da einen Pfad ρ 2 zurück zu einem Knoten in ρ 1. Der Pfad ρ 1 ρ 2 besitzt dann einen zyklischen Suffix über q a und ist das gewünschte Gegenbeispiel.

Leerheitstest Model Checking mit Büchi Automaten Leerheitstest double depth-first-search Algorithmus: dfs1(q) { hash(q); for all Nachfolger q von q do if q / hashtable dfs1(q ); if accept(q) dfs2(q); } dfs2(q) { flag(q); for all Nachfolger q von q do if q dfs1 stack terminate(true); else if q not flagged dfs2(q ); } q 0 q 1 q e q e q 3 Zyklus gefunden

Leerheitstest Model Checking mit Büchi Automaten Leerheitstest double DFS Algorithmus: emptiness() { for all q 0 Q 0 do dfs1(q 0 ); terminate(false); } Der Algorithmus terminiert mit TRUE wenn ein akzeptierender Pfad gefunden wurde. Der Stack von dfs1 enthält den Pfad ρ 1. Der Stack von dfs2 enthält den Pfad ρ 2. Worst-Case-Laufzeit: O( Q + )

Leerheitstest Model Checking mit Büchi Automaten Zusammenfassung: Konstruktion von A: nahezu kein Aufwand, falls die Kripke Struktur schon berechnet ist : exponentiell zu ϕ Konstruktion von A und S: O( A S ) Leerheitstest: O( Q + ) im Worst-Case

On-the-Fly Model Checking On-the-Fly Model Checking Idee: Zuerst S erstellen Zustände von S A so berechnen, wie sie der double-dfs-algorithmus benötigt. Dabei werden immer nur die nötigen Zustände aus A berechnet. Vorteil: viele Zustände aus A werden nie erzeugt. während der Schnittberechnung werden Zyklen erkannt.

Verfahren: On-the-Fly Model Checking Sei s der aktuelle Zustand, in dem sich der Suchalgorithmus befindet s = r,q r Q A ;q Q S Transition ex. gdw. L(r, r ) = L(q, q ) Nachfolger von q sind schon berechnet s = r,q r wird on-the-fly-berechnet Falls L(r,r ) L(q,q ) wird abgebrochen, und die Nachfolger von r werden nicht berechnet. Wird vor dem Backtracking zu s ein Zyklus gefunden wird abgebrochen, und die Nachfolger von s werden nicht berechnet.