Bounded Model Checking als SAT Problem_J_Pieper

Werbung
Bounded Model Checking
als SAT-Problem
6/21/2012
Seminar: Aktuelle Themen aus der Wissensverarbeitung[WV-BS]
Joanna Pieper
Inhaltsverzeichnis:
Bounded Model Checking – Basisidee……………………...…………………2
Lineare temporale Logik…………………………………………………………...2
Kripke-Struktur………………………………………………………………………...3
Begrenzte Semantik…………...……………………………………………………..5
Aussagenlogische Kodierung……………………………………………………..6
Klassische Kodierung……….……………………………………………………….8
1
1. Bounded Model Checking
Symbolisches Bounded Model Checking ist eine Methode zur Nachprüfung von
temporalen Logikbedingungen in endlichen Zustandsräumen. Die Zustandsräume sind
mit einer Schranke k begrenzt. Bounded Model Checking überprüft eine
aussagenlogische Formel g mit dem SAT-Solver auf die Erfüllbarkeit. Die Formel g
kodiert eine Kripke-Struktur K und eine LTL-Formel f, die mit einer Konjunktion
miteinander verbunden sind. Diese sind in der Aussagenlogik kodiert. Wenn die Formel
g erfüllbar ist, dann kann die erfüllende Belegung von dem SAT-Solver in ein konkretes
Beispiel übersetzt werden. Das Beispiel zeigt das die Eigenschaft gilt. Wenn wir aber
keine erfüllende Belegung finden, dann wird die Schrankte k um eins erhöht und der
Prozess wiederholt. Die kompletten Erweiterungen von Bounded Model Checking
erlauben uns, den Prozess zu stoppen mit dem Fazit, dass die Eigenschaften nicht
verletzt werden können. Man muss nur hoffen, dass es, bevor die verfügbare Mittel
verbraucht werden, passiert.
2. Lineare temporale Logik
Die Syntax der linearen temporalen Logik LTL enthält die aussagenlogischen
Variablen V, die temporalen Operatoren und die aussagenlogischen Operatoren: die
Negation ¬, die Konjunktion ∧, die Disjunktion ∨ und die Implikation →. Die typischen
temporalen Operatoren sind der "next time"-Operator X, der "finally"-Operator F, und
der "globally"-Operator G.
Die temporalen Operatoren als Beispiele:
Eine Formel a → Xb mit Variablen a, b ∈
a=1
b=0
gilt in folgender Kripke-Struktur.
a=0
b=1
Die Bedeutung der Formel:
Ausgehend vom aktuellen Zustand wird die Eigenschaft im nächsten Zustand entlang
des Pfades erfüllt.
2
Eine Formel a → b mit Variablen a, b ∈
gilt in folgender Kripke-Struktur.
a=1
a=0
a=0
a=1
a=0
a=1
b=1
b=1
b=1
b=1
b=1
b=1
Die Bedeutung der Formel:
Ausgehend vom aktuellen Zustand trifft eine Eigenschaft in jedem Zustand entlang des
Pfades zu.
Eine Formel a → Fb mit Variablen a, b ∈
gilt in folgender Kripke-Struktur.
a=1
a=0
a=0
a=1
a=0
a=1
b=0
b=0
b=0
b=0
b=1
b=0
Die Bedeutung der Formel:
Ausgehend vom aktuellen Zustand wird eine Eigenschaft in mindestens einem Zustand
entlang des Pfades erfüllt.
3. Kripke-Struktur
Die Kripke-Struktur besteht aus einer Menge von Zuständen S, einer Menge von
Anfangszuständen
⊆ ,
einer
Abbildung
: →ℙ( )
und
einer
Zustandsübergangsrelation % ⊆ × . Die Interpretationen von aussagenlogischen
Variablen können sich im Laufe der Zeit ändern. Sie sind aber eindeutig durch den
aktuellen Zustand des Modells bestimmt. Diese Zuordnung ist über eine
MarkierungsfunktionL:S→P(V)erfasst.EineaussagenlogischeVariablepistineinem
SystemZustandswahrgenaudann,wennp∈L(s)ist.
Es wird angenommen, dass die Übergangsfunktion T total sein muss, und die
Menge der Anfangszuständen I darf nicht leer bleiben. Die Übergangsfunktion T wird
symbolisch dargestellt, z.B. als eine Formel. T(s,s') gilt genau dann, wenn es ein
Übergang von s nach s′ gibt. Man kann es auch so schreiben: s→s'. s ist einfach ein
Vektor,deralleaussagenlogischeVariablenVimaktuellenZustandrepräsentiertunds′
einVektorvonderenGrundkopienimNachfolgezustand.
3
DieSemantikvonLTListentlangdesPfadesdesModellsdefiniert.EinPfadπist
eine unendliche Folge von Zuständen π = (s₀,s₁,s₂,...), mit sᵢ → sᵢ₊₁. Er ist initialisiert
wennderersteZustand,π(0)=s₀einAnfangszustandist.EinSuffixeinesPfadeswird
alsπⁱ=(sᵢ,sᵢ₊₁,...)definiert.EineLTL-FormelfhältentlangeinesPfadesπ,geschrieben
π⊨f,genaudann,wenn:
Q ⊨ Rgdw.R ∈ (Q(0))
Q ⊨ ¬Rgdw.R ∉ (Q(0))
Q ⊨ U ∨ ℎgdw.Q ⊨ UXYQ ⊨ ℎ
Q ⊨ U ∧ ℎgdw.Q ⊨ U[\]Q ⊨ ℎ
Q ⊨ ^Ugdw.∃` ∈ ℕ: Q b ⊨ U
Q ⊨ cUgdw.∀` ∈ ℕ: Q b ⊨ U
Q ⊨ eUgdw.Qf ⊨ U
Wir gehen davon aus das die Formel in der Negationsnormalform (NNF) ist, d.h. die
Negationen werden mit der Hilfe der folgenden Axiome der LTL bis auf die Variablen
geschoben:
¬(U ∧ ℎ) ≡ (¬U) ∨ (¬ℎ)
¬^U ≡ c¬U
¬cU ≡ ^¬U
¬eU ≡ e¬U
Schließlich hält eine Formel f in einer Kripke-Struktur K, geschrieben K ⊨ f, genau dann,
wenn π ⊨ f, für alle Pfade π, die von K initialisiert sind. Das Model Checking Problem
muss bestimmen, ob K ⊨ f gilt. Eine Formel f hat einen Zeugen in K genau dann, wenn es
einen initialisierten Pfad π mit π ⊨ f gibt. Klar: K ⊨ f gilt genau dann, wenn ¬f keinen
Zeugen in K besitzt. Daher können wir das Model Checking Problem auf die Suche nach
Zeugen mit Benutzung von Negation und Umwandung in NNF reduzieren.
4
4. Begrenzte Semantik
hi hf
j
k
(k,l)-Lasso mit k=5 und l=2
Wir können unendliche Pfade durch einen endlichen Präfix mit einer Schleife
darstellen. Wenn die Kripke-Struktur K so darstellbar ist, dann kann unsere Suche nach
Zeugen sich nur auf die (k,l)-Lassos beschränken. Ein unendlicher Pfad π ist ein (k,l)Lasso genau dann, wenn π (k +1 + j) = π (l + j) für alle j ∈ N gilt. Wir vereinbaren einen
festen Pfad π und arbeiten mit πⁱ - einem Suffix von π.
Die Semantik für die Kripke-Struktur mit einen Suffix:
Q l ⊨ Rgdw.R ∈ (Q(m))
Q l ⊨ ¬Rgdw.R ∉ (Q(m))
Q l ⊨ U ∨ ℎgdw.Q l ⊨ UXYQ l ⊨ ℎ
Q l ⊨ U ∧ ℎgdw.Q l ⊨ U[\]Q l ⊨ ℎ
Q l ⊨ ^Ugdw.∃` ∈ ℕ: Q lnb ⊨ U
Q l ⊨ cUgdw.∀` ∈ ℕ: Q lnb ⊨ U
Q l ⊨ eUgdw.Q lnf ⊨ U
Um die "begrenzte Semantik" zu erhalten, betrachten wir nur die ersten o + 1 Zustände
und lassen m im Bereich von0biso laufen. Wenn Q ein (o, r) − Lasso ist, dann erhalten
wir die folgende "begrenzte Semantik", die für die Lassos gilt:
Q l ⊨ ^Ugdw.∃j ∈ {min(i, l), … , k}:πᶨ ⊨ g
Q l ⊨ cUgdw.∀` ∈ {min(i, l), … , k}:πᶨ ⊨ g
πⁱ⁺¹ ⊨ gwenni < k
Q l ⊨ eUgdw. y
πᶩ ⊨ gwenni = k
5
Wenn cU auf Pfad Qⁱ gilt, muss U an der aktuellen Position m und an allen größeren
Positionen `, mit m ≤ ` ≤ o halten. Wenn jedoch die aktuelle Position m in einer Schleife
ist, dann muss auch U von Start bis zum m-ten Element der Schleife halten. Das Minimum
über die aktuelle Position m und den Schleifenstart r deckt die beide Fälle ab, und es ist
egal, ob wir in der Schleife oder noch in der Wurzel von Q sind. Ein ähnliches Argument
gilt auch für ^U.
Es sei nun angenommen, dass Q kein (o, r) − Lasso für alle r ist. Dann kann der
Suffix Qᵏ⁺¹ eine beliebige Form haben. Wenn man nur die ersten o + 1 Zustände von Q
betrachtet, ist es im Allgemeinem nicht genug, um festzustellen, ob eine Formel auf dem
Pfad Q hält. Die folgenden Bedingungen halten immer noch:
Q l ⊨ ^U€•\\∃` ∈ ‚m … oƒ: Q l ⊨ U
Q l ⊨ eU€•\\Q lnf ⊨ U„\]m < o
Wenn Q kein (k,l)-Lasso ist und wir den Suffix, der die Grenze k überschreitet,
nicht untersuchen wollen, dann kommen wir zu keinem Ergebnis über:
Qᵏ ⊨ eU
und
Qⁱ ⊨ cU für jedes m < o.
5. Aussagenlogische Kodierung
Die begrenzte Approximation der LTL-Semantik betrachtet nur die ersten k+1
Zustände von Pfad π. Das ist der Schlüssel, um die aussagenlogische Kodierung des LTLZeugenproblems in SAT zu erhalten.
Wir kodieren die Kripke-Struktur K als eine aussagenlogische Formel. Das
bedeuted, wir wandeln die Anfangszustände, die Übergangsrelation, das (k,l)-Lasso und
die atMostOne-Funktion in die Aussagenlogik um. Die atMostOne-Funktion gibt uns
maximal ein existierendes Lasso an. Es kann auch passieren, dass es kein Lasso gibt. Die
ganze Kodierung des Zeugenproblems ist in den gegebenen allgemeinen
Modellbedingungen erhalten:
(hi ) ∧ %(hi , hf ) ∧ … ∧ %(h…†f , h… )
Die Bedingungen für die Schleifenausführung r ∈ {0, … , o} sind auch hinzugefügt:
‡ˆ ↔ %(h… , hˆ )
Wir nehmen an, dass höchstens ein ‡ˆ hält. Was wir mit der atMostOne-Funktion
kodieren.
6
Diese Annahmen gelten immer. Insbesondere, wenn die aussagenlogische
Kodierung erfüllbar ist. Dann kann die erfüllende Belegung als ein Präfix eines
initialisierten Pfades π von K interpretiert werden. Wenn ‡ˆ mit True belegt ist, dann ist
π ein (k,l)-Lasso. Was noch zu kodieren bleibt ist die Semantik von LTL. Wir müssen
dafür sorgen, dass der Pfad π, der aus einer erfüllenden Belegung entstanden ist,
tatsächlich ein Zeuge ist.
Ein Beispiel:
Die aussagenlogische Kodierung für das gegebene Beispiel:
(hi ) ∧ %(hi , hf ) ∧ %(hf , hŠ ) ∧ %(hŠ , h‹ )
mit (hi ) = ŒY„•
und
%(h, h • ) = (([ ⇔ •) ⇔ (¬[• )) ∧ ((¬[ ∧ •) ⇔ (¬• • ))
hi
a=0
b=0
hf
a=0
b=1
hŠ
a=1
b=0
Kripke-Struktur mit (3,1)-Lasso
Die atMostOne-Funktion für k=3:
[Œ•XhŒ‘\• = (¬‡i ∧ ¬‡f ∧ ¬‡Š ) ∨ (¬‡i ∧ ¬‡f ∧ ¬‡‹ )
∨ (¬‡i ∧ ¬‡Š ∧ ¬‡‹ ) ∨ (¬‡f ∧ ¬‡Š ∧ ¬‡‹ )
7
h‹
a=1
b=1
Die ganze Kodierung des Modells:
%(hi , hf ) ∧ %(hf , hŠ ) ∧ %(hŠ , h‹ ) ∧ ‡i ∧ ‡f ∧ ‡Š ∧ ‡‹ ∧ [Œ•XhŒ‘\•(‡i , ‡f , ‡Š , ‡‹ )
= ((([i ⇔ •i ) ⇔ (¬[f )) ∧ ’(¬[i ∧ •i ) ⇔ (¬•f )“)
∧ ((([f ⇔ •f ) ⇔ (¬[Š )) ∧ ((¬[f ∧ •f ) ⇔ (¬•Š )))
∧ ((([Š ⇔ •Š ) ⇔ (¬[‹ )) ∧ ((¬[Š ∧ •Š ) ⇔ (¬•‹ )))
∧ (‡i ⇒ ((([‹ ⇔ •‹ ) ⇔ (¬[i )) ∧ ’(¬[‹ ∧ •‹ ) ⇔ (¬•i )“))
∧ (‡f ⇒ ((([‹ ⇔ •‹ ) ⇔ (¬[f )) ∧ ’(¬[‹ ∧ •‹ ) ⇔ (¬•f )“))
∧ (‡Š ⇒ ((([‹ ⇔ •‹ ) ⇔ (¬[Š )) ∧ ’(¬[‹ ∧ •‹ ) ⇔ (¬•Š )“))
∧ (‡‹ ⇒ ((([‹ ⇔ •‹ ) ⇔ (¬[‹ )) ∧ ’(¬[‹ ∧ •‹ ) ⇔ (¬•‹ )“))
∧ [Œ•XhŒ‘\•(‡i , ‡f , ‡Š , ‡‹ )
Jetzt muss noch die Formel f die zu überprüfen ist kodiert werden.
6. Klassische Kodierung
Die klassische Kodierung, die das Zeugenproblem von LTL in SAT umwandelt, ist
eine eindeutige Kodierung der begrenzten Semantik. Man kann es als ein rekursives
Verfahren interpretieren, das die Parameter: LTL-Formel f, festgelegte Grenze k,
Schleifenstart l und die Position i annimmt. Die letzten zwei Parameter variieren
zwischen 0 und k. Wir bezeichnen mit l‚Rƒl… die resultierende aussagenlogische Formel,
die wir beim Kodieren von f mit den gegebenen Parametern erhalten.
Die Semantik für die klassiche Kodierung mit einem (k,l)-Lasso:
ı‚Rƒl… ≡pᵢ
ı‚¬Rƒl… ≡¬pᵢ
ı‚g ∨ hƒl… ≡ı‚Uƒl… ∨ ı‚ℎƒl…
ı‚g ∧ hƒl… ≡ı‚Uƒl… ∧ ı‚ℎƒl…
b
ı‚–gƒl… ≡⋁…b˜™š›(ˆ,l) ı‚Uƒ… b
…
l
ı‚ gƒ… ≡⋀b˜™š›(ˆ,l) ı‚Uƒ… b
l
ı‚eUƒ… ≡ı‚Uƒ… •mŒ` = m + 1mžm < ohX\hŒ` = r
8
Die Kodierung von Zeugen ohne (k,l)-Lasso sieht ähnlich aus. Wir bezeichnen als
das Ergebnis der Zeugenkodierung ohne die Annahme, dass ein (k,l)-Lasso für
beliebiges l existiert:
‚žƒl…
‚–gƒl… ≡⋁…b˜l ‚Uƒ…b l
‚ gƒ… ≡⊥
‚Uƒlnf
… mžm < o
‚eUƒl… ≡
⊥ mžm = o
Die anderen Fälle sind identisch mit dem (k,l)-Lasso Fall. Die ganze Kodierung sieht
dann so aus:
‚žƒ… ≡ ‚žƒi… ∨ ⋁…ˆ˜i ‡¡ ∧ ¡‚žƒi…
Der zweite Teil behandelt (k,l)-Lassos, solange der erster Teil keine Voraussetzungen
über die Existenz von solchen Lassos macht.
Für ein festes k von ¡‚žƒl… existieren Ω(|ž| ∗ o Š ) mögliche verschiedene
Parameter. Die gesamte Komplexität ist dann am Ende kubisch in k und linear in der
Größe der LTL-Formeln |f|. Für große k ist das nicht akzeptabel.
Wir kodieren jetzt eine LTL-Formel žf = [ ∧ ^¬• und überprüfen sie mit der oben
gegebenen Modellkodierung unseres Beispiels. Zur Vereinfachung nehmen wir an, dass
genau ein (k,l)-Lasso existiert. In dem Beispiel ist es ein (3,1)-Lasso.
Die Kodierung:
‚žf ƒ… ≡ ⋁…ˆ˜i ı‚žf ƒi… = ⋁‹ˆ˜i ˆ‚žf ƒi‹
= i‚žf ƒi‹ ∨ f‚žf ƒi‹ ∨ Š‚žf ƒi‹ ∨ ‹‚žf ƒi‹
= i‚[ ∧ ^¬•ƒi‹ ∨ f‚[ ∧ ^¬•ƒi‹ ∨ Š‚[ ∧ ^¬•ƒi‹ ∨ ‹‚[ ∧ ^¬•ƒi‹
= i‚[ƒi‹ ∧ i‚^¬•ƒi‹ ∨ f‚[ƒi‹ ∧ f‚^¬•ƒi‹ ∨ Š‚[ƒi‹ ∧ Š‚^¬•ƒi‹ ∨ ‹‚[ƒi‹ ∧ ‹‚^¬•ƒi‹
b
b
b
b
= [i ∧ ⋁‹b˜i i‚¬•ƒ‹ ∨ [i ∧ ⋁‹b˜i f‚¬•ƒ‹ ∨ [i ∧ ⋁‹b˜i Š‚¬•ƒ‹ ∨ [i ∧ ⋁‹b˜i ‹‚¬•ƒ‹
= ([i ∧ ( i‚¬•ƒi‹ ∨ i‚¬•ƒf‹ ∨ i‚¬•ƒŠ‹ ∨ i‚¬•ƒ‹‹ ))
∨ ([i ∧ ( f‚¬•ƒi‹ ∨ f‚¬•ƒf‹ ∨ f‚¬•ƒŠ‹ ∨ f‚¬•ƒ‹‹ ))
∨ ([i ∧ ( Š‚¬•ƒi‹ ∨ Š‚¬•ƒf‹ ∨ Š‚¬•ƒŠ‹ ∨ Š‚¬•ƒ‹‹ ))
∨ ([i ∧ ( ‹‚¬•ƒi‹ ∨ ‹‚¬•ƒf‹ ∨ ‹‚¬•ƒŠ‹ ∨ ‹‚¬•ƒ‹‹ ))
9
= ([i ∧ (¬•i ∨ ¬•f ∨ ¬•Š ∨ ¬•‹ ))
∨ ([i ∧ (¬•i ∨ ¬•f ∨ ¬•Š ∨ ¬•‹ ))
∨ ([i ∧ (¬•i ∨ ¬•f ∨ ¬•Š ∨ ¬•‹ ))
∨ ([i ∧ (¬•i ∨ ¬•f ∨ ¬•Š ∨ ¬•‹ ))
Da in unserem Modell nur ein (k,l)-Lasso existieren kann, bekommen wir als Ergebnis
die folgende aussagenlogische Formel:
([i ∧ (¬•i ∨ ¬•f ∨ ¬•Š ∨ ¬•‹ ))
Wir konjungieren sie dann mit der oben gegebenen aussagenlogischen Modellkodierung
und überprüfen mit dem SAT-Solver auf die Erfüllbarkeit. Die entstandene Formel ist
erfüllbar, d.h. es gibt in K einen initialen Pfad Q, für den gilt: Q⊨žf . Daraus folgt, dass für
unsere Kripke-Struktur K mit einen (3,1)-Lasso Model Checking mit Hilfe von SATSolver entscheidbar ist.
DieBelegungderaussagenlogischenVariableninunseremModellfürdieFormelžf :
[i = 1 , •i = 1
[f = 0 , •f = 1
[Š = 1 , •Š = 0
[‹ = 1 , •‹ = 1
Der Präfix fängt bei dem Zustand an, der die Belegung [ = 1 , • = 1 hat.
Andere Beispiele:
Die in der Aussagenlogik kodierte LTL-FormelžŠ = [ ∧ e¬• :
([i ∧ ¬•f )
Wenn wir die Formel ([i ∧ ¬•f ) mit der aussagenlogisch kodierten Kripke-Struktur K
konjungieren und dann auf Erfüllbarkeit mit dem SAT-Löser überprüfen, bekommen wir
einen Widerspruch als Ergebnis. Das bedeutet, dass die gegebene LTL-Formel žŠ keinen
initialen Pfad QindemModellbesitzt, für den Q⊨žŠ gilt.
10
DieklassischkodierteFormelvonž‹ = [ ∧ ^¬• :
([i ∧ ¬•i ∧ •f )
Nach der Überprüfung mit dem SAT-Solver erhalten wir eine erfüllende Belegung. Das
bedeutet,die Formel ž‹ hat in unserem Modell einen Pfad Q, für den Q⊨ž‹ gilt.
DieBelegungderaussagenlogischenVariablenfürdieFormelž‹ :
[i = 1 , •i = 0
[f = 1 , •f = 1
[Š = 0 , •Š = 1
[‹ = 1 , •‹ = 0
Der Präfix fängt beim Zustand an, der die Belegung [ = 1 , • = 0 hat.
Die aussagenlogische Kodierung der letzten LTL-Formel ž¥ = [ ∧ c•:
([i ∧ (•i ∧ •f ∧ •Š ∧ •‹ ))
Nach der Erfüllbarkeitsüberprüfung stellt sich heraus, dass die resultierende Formel, die
aus der kodierten LTL-Formel ž¥ und der kodierten Kripke-Struktur K besteht, ein
Widerspruch ist. Das heißt, die Formel ž¥ hat keinen initialen Pfad Q, für den Q⊨ž¥ gilt.
Quellen:
Armin Biere, Marijn Heule, Hans van Maaren, Toby Walsh: Handbook of Satisfiability :
Bounded Model Checking, IOS Press, 2009
11
Herunterladen