Präsentation herunterladen
1
Bounded Model Checking II
Julia Withauer Inhalt: Kurze Wiederholung Übersetzung in Aussagenlogik (Prüfung der Entscheidbarkeit) Bestimmung der Schranke (LTL)
2
Kripke-Modell: Quintupel M = (S, I, T, A, ℓ)
S endliche Menge der Zustände binäre Kodierung: s = ( s(0), s(1), ..., s(n-1) ) I S endliche Menge der Anfangszustände T SS endliche Menge von Transitionsrelationen (s, t) T := s t A Menge von atomaren Aussagen (z.B. p,q) ℓ: S P(A) Funktion zur Markierung der Zustände mit Elementen von A Ein Pfad = (so, s1, s2, ... ) ist eine Folge von Zuständen, es gilt: i = (si, si+1, ...) (i) = si
3
Temporale Operatoren (LTL):
Gf „globally” “zu jedem zukünftigen Zeitpunkt gilt f“ Xf „next time“ “zum nächsten Zeitpunkt gilt f” Ff „finally“ “zu irgendeinem zukünftigen Zeitpunkt gilt f“ fUg „until” “g wird gelten, bis dahin gilt f” fRg „release“ “f wird gelten, bis dahin gilt g oder g gilt immer”
4
Übersetzung in Aussagenlogik
M ⊨ Ef gdw. ∃k ℕ mit M ⊨k Ef Herleiten einer aussagenlogischen Formel φ ⇒ Entscheidbarkeitsproblem der Aussagenlogik (SAT) SAT φ gdw. M ⊨k f |[ M, f ]|k := |[ M ]|k ∧ |[ f ]|k
5
Überblick Wie gehen wir vor? ∃ ⊨k f ⇔ ∃ (so, s1, s2, …, sk) mit
(1) (so, s1, s2, …, sk) ist ein Pfad ohne Loop und (so, s1, s2, …, sk) ⊨ f als Pfad ohne Loop (2) (so, s1, s2, …, sk) ist ein Pfad mit k-Loop und (so, s1, s2, …, sk) ⊨ f als Pfad mit l Loop
6
ist ein Pfad in M, wenn Fragestellung:
Ist = (s0, s1, s2, ..., sk) ein Pfad in M? ist ein Pfad in M, wenn folgende Eigenschaften erfüllt sind: s0 ist Anfangszustand und (s0,s1), (s1,s2) … (sk-1,sk) sind Transitionen. k-1 |[ M ]|k := I(s0) ∧ ∧ T(si,si+1) i = 0
7
⇒ Finden von aussagenlogischen Formeln für das gegebene Modell
Dazu ein BEISPIEL: zi(0) zi = ( zi(0), zi(1) ) = zi(1) {z0, z2} I { (z0,z1), (z1,z2), (z2,z0), (z2,z3), (z3,z2), (z3,z3) } T
8
⇒ I(s0) = ( (¬s0(0)) ∧ (¬s0(1)) ) ∨ (s0(0) ∧ (¬s0(1)) )
zi(0) zi = ( zi(0), zi(1) ) = zi(1) ⇒ I(s0) = ( (¬s0(0)) ∧ (¬s0(1)) ) ∨ (s0(0) ∧ (¬s0(1)) ) T(s0,s1) = [ (¬s0(0) ∧ ¬s0(1) ) ∧ ( ¬s1(0) ∧ s1(1) ) ] (≙ z0 z1) ∨ [ ( s0(0) ∧ ¬s0(1) ) ∧ ( ¬s1(0) ∧ ¬s1(1) ) ] (≙ z2 z0) ∨ [ ( s0(0) ∧ ¬s0(1) ) ∧ ( s1(0) ∧ s1(1) ) ] (≙ z2 z3) T(s1,s2) = [ ( ¬s1(0) ∧ ¬s1(1) ) ∧ ( ¬s2(0) ∧ s2(1) ) ] (≙ z0 z1) ∨ [ ( ¬s1(0) ∧ s1(1) ) ∧ ( s2(0) ∧ ¬s2(1) ) ] (≙ z1 z2) ∨ [ ( s1(0) ∧ s1(1) ) ∧ ( s2(0) ∧ ¬s2(1) ) ] (≙ z3 z2) ∨ [ ( s1(0) ∧ s1(1) ) ∧ ( s2(0) ∧ s2(1) ) ] (≙ z3 z3)
9
|[ M ]|k := I(s0) ∧ T(s0,s1) ∧ T(s1,s2) =
[ ( (¬s0(0)) ∧ (¬s0(1)) ) ∨ (s0(0) ∧ (¬s0(1)) ) ] ∧ [ (¬s0(0) ∧ ¬s0(1) ) ∧ ( ¬s1(0) ∧ s1(1) ) ] ∨ [ ( s0(0) ∧ ¬s0(1) ) ∧ ( ¬s1(0) ∧ ¬s1(1) ) ] ∨ [ ( s0(0) ∧ ¬s0(1) ) ∧ ( s1(0) ∧ s1(1) ) ] [ ( ¬s1(0) ∧ ¬s1(1) ) ∧ ( ¬s2(0) ∧ s2(1) ) ] ∨ [ ( ¬s1(0) ∧ s1(1) ) ∧ ( s2(0) ∧ ¬s2(1) ) ] ∨ [ ( s1(0) ∧ s1(1) ) ∧ ( s2(0) ∧ ¬s2(1) ) ] ∨ [ ( s1(0) ∧ s1(1) ) ∧ ( s2(0) ∧ s2(1) ) ] Gegebene Pfade mit k = = (so, s1, s2) : Gültiger Pfad! 1.) |[ M ]|k := [ ( 0 ∧ 1) ∨ ( 1 ∧ 1 ) ] ∧ [ ( 0 ∧ 1 ∧ 1 ∧ 0 ) ∨ ( 1 ∧ 1 ∧ 1 ∧ 1 ) ∨ ( 1 ∧ 1 ∧ 0 ∧ 0 ) ] [ ( 1 ∧ 1 ∧ 1 ∧ 1 ) ∨ ( 1 ∧ 0 ∧ 1 ∧ 0 ) ∨ ( 0 ∧ 0 ∧ 0 ∧ 0 ) ∨ ( 0 ∧ 0 ∧ 0 ∧ 1 ) ] 1 1.) 1 1 1 z2 zo z1 1 2.) 1 1 1 1 z1 z2 z3
10
↯ |[ M ]|k := I(s0) ∧ T(s0,s1) ∧ T(s1,s2) =
[ ( (¬s0(0)) ∧ (¬s0(1)) ) ∨ (s0(0) ∧ (¬s0(1)) ) ] ∧ [ (¬s0(0) ∧ ¬s0(1) ) ∧ ( ¬s1(0) ∧ s1(1) ) ] ∨ [ ( s0(0) ∧ ¬s0(1) ) ∧ ( ¬s1(0) ∧ ¬s1(1) ) ] ∨ [ ( s0(0) ∧ ¬s0(1) ) ∧ ( s1(0) ∧ s1(1) ) ] [ ( ¬s1(0) ∧ ¬s1(1) ) ∧ ( ¬s2(0) ∧ s2(1) ) ] ∨ [ ( ¬s1(0) ∧ s1(1) ) ∧ ( s2(0) ∧ ¬s2(1) ) ] ∨ [ ( s1(0) ∧ s1(1) ) ∧ ( s2(0) ∧ ¬s2(1) ) ] ∨ [ ( s1(0) ∧ s1(1) ) ∧ ( s2(0) ∧ s2(1) ) ] Gegebene Pfade mit k = = (so, s1, s2) : Gültiger Pfad! 1.) 1 1 z2 zo z1 ↯ Kein gültiger Pfad! 2.) 1 1 |[ M ]|k := ( 1 ∧ 0) ∨ ( 0 ∧ 0 ) ] ∧ [ … ] ∧ [ … ] = 0 1 1 z1 z2 z3
11
Fragestellung: Wie übersetzt man die LTL-Formeln in aussagenlogische Formeln? Pfad ohne Schleife |[ p ]| ki := p(si) |[ ¬p ]| ki := ¬p(si) |[ f ∧ g ]| ki := |[ f ]| ki ∧ |[ g ]| ki |[ f ∨ g ]| ki := |[ f ]| ki ∨ |[ g ]| ki |[ Gf ]| ki := false (wir wissen nichts über k+1) ⇔ p ℓ(si)
12
|[M, f]|k := |[M]|k ∧ ( ¬Lk ∧ |[ f ]| k0 )
m = i |[ Ff ]| ki := |[ f ]| ki ∨ |[ f ]| ki+1 ∨ … ∨ |[ f ]| kk-1 ∨ |[ f ]| kk |[ Xf ]| ki := |[ f ]| ki+1 für i < k, sonst false (k+1 ?) |[ f U g ]| ki := |[ g ]| ki ∨ ( |[ g ]| ki+1 ∧ |[ f ]| ki ) ∨ (|[ g ]| ki+2 ∧ |[ f ]| ki ∧ |[ f ]| ki+1) ∨ … ∨ ( |[ g ]| kk ∧ |[ f ]| ki ∧ |[ f ]| ki+1 ∧ … ∧ |[ f ]| kk-1 ) |[ f R g ]| ki k m-1 := ∨ ( |[g]|km ∧ ∧ |[f]|kn ) m = i n = i k m := ∨ ( |[f]|km ∧ ∧ |[g]|kn ) m = i n = i ⇒ allgemeine Übersetzung ohne Loop |[M, f]|k := |[M]|k ∧ ( ¬Lk ∧ |[ f ]| k0 )
13
Pfad mit (k,l)-Schleife
i, l, k ℕ mit i, l ≤ k
14
l|[ p ]| ki := p(si) l|[ ¬p ]| ki := ¬p(si) l|[ f ∧ g ]| ki := l|[ f ]| ki ∧ l|[ g ]| ki l|[ f ∨ g ]| ki := l|[ f ]| ki ∨ l|[ g ]| ki l|[ Gf ]| ki l|[ Ff ]| ki l|[ Xf ]| ki := l|[ f ]| kl für i = k, l|[ f ]| ki+1 sonst k := ∧ l|[f]|km m = min(i,l) k := ∨ l|[f]|km m = min(i,l)
15
l|[ f U g ]| ki := l|[ g ]| ki ∨
( l|[ g ]| ki+1 ∧ l|[ f ]| ki ) ∨ ( l|[ g ]| ki+2 ∧ l|[ f ]| ki ∧ l|[ f ]| ki+1) ∨ … ∨ ( l|[ g ]| kk ∧ l|[ f ]| ki ∧ l|[ f ]| ki+1 ∧ … ∧ l|[ f ]| kk-1 ) ∨ ( l|[ g ]| kl ∧ l|[ f ]| ki ∧ l|[ f ]| ki+1 ∧ … ∧ l|[ f ]| kk ) ∨ ( l|[ g ]| kl+1 ∧ l|[ f ]| ki ∧ l|[ f ]| ki+1 ∧ … ∧ l|[ f ]| kl ) ∨ … ∨ ( l|[ g ]| ki-1 ∧ l|[ f ]| ki ∧ l|[ f ]| ki+1 ∧ … ∧ l|[ f ]| ki-2 ) l|[ f R g ]| ki k m i k m-1 := ∨ ( l|[g]|km ∧ ∧ l|[f]|kn ) ∨ ∨ ( l|[g]|km ∧ ∧ l|[f]|kn ∧ ∧ l|[f]|kn ) m = i n = i m = l n = i n = l k k m := ∧ l|[g]|km ∨ ∨ ( l|[f]|km ∧ ∧ l|[g]|kn ) m = min(i,l) m = i n = i i k m ∨ ∨ ( l|[f]|km ∧ ∧ l|[g]|kn ∧ ∧ l|[g]|kn ) m = l n = i n = l
16
⇒ allgemeine Übersetzung mit Loop
Fragestellung: Besitzt der Pfad eine Schleife (Loop)? Loop-Bedingung: k Lk := ∨ lLk mit lLk := T(sk,sl) l = 0 ⇒ allgemeine Übersetzung mit Loop k |[M, f]|k := |[M]|k ∧ ( ∨ ( lLk ∧ l|[ f ]| k0 ) ) l = 0
17
Allgemeine Übersetzung:
k |[ M, f ]|k := |[ M ]|k ∧ ( ( ¬Lk ∧ |[ f ]| k0 ) ∨ ∨ ( lLk ∧ l|[ f ]| k0 ) ) l = 0 |[ M, f ]|k erfüllbar ⇔ M ⊨k Ef ⇔ M ⊨ Ef
18
Bestimmung der Schranke k
k ≤ 2|f| |M| |M| - Anzahl der Zustände des Kripke-Modells M |f| - Länge der LTL-Formel f (Anzahl der Operatoren) Abschätzung durch Büchi-Automat: Konstruktion des Produktautomaten |Bf| |M| Betrachten des Pfades w = v0 v1ω (Loop!) |v1| ≤ |Bf| |M| mit |Bf| = 2O(|f|)
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.