4. OBDDs und Modellüberprüfung OBDD – “Ordered Binary Decision Diagrams” “Geordnete binäre Entscheidungsdiagramme” Binäres Entscheidungsdiagramm: in der einfachsten Form ein binärer Entscheidungsbaum, in dem bei jedem (inneren) Knoten eine binäre Entscheidung bezüglich eines aussagenlogischen Symbols x (einer “Variablen”) getroffen wird, d.h. verzweigt mit “x wahr” bzw. “x falsch”. Geordnet: die aussagenlogischen Symbole sind (total) geordnet bezgl. der Reihenfolge, in der sie entlang jedes Pfades von Wurzel zu Blatt auftreten. • OBDD-Verfahren zum schnellen Entscheiden der Gültigkeit von aussagenlogischen Formeln • ursprünglich im Kontext der Hardware-Verifikation entwickelt • In diesem Anwendungsbereich sehr effizient (z.B. als Methoden zum Nachweis der Äquivalenz von aussagenlogischen Ausdrücken); oft um mehrere Größenordnungen schneller als andere Verfahren. • Grundlage der Implementierung vieler Systeme zur Modellüberprüfung v.Henke: Computergestützte Modellierung und Verifikation SS2007 3–1 OBDDs: Grundidee - Logische Formel wird umgeformt in eine äquivalente Formel in bedingter Normalform: alle logischen Verknüpfungen werden durch (Kombinationen von) if then else ersetzt. Bem.: Bedingte Normalformen allein sind nicht eindeutig. - Bei der Umformung werden die zu testenden Symbole in eine vorgegebene Reihenfolge gebracht. Dadurch wird eine kanonische, eindeutige bedingte Normalform erreicht. Der Test, ob zwei aussagenlogische Formeln äquivalent sind, wird dadurch reduziert auf den Test, ob ihre kanonischen Normalformen identisch sind. - Die Umformung in bedingte Normalform kann zu exponentiellem Wachstum der Größe führen. Durch Anwendung verschiedener Codierungstechniken kann die Effizienz enorm gesteigert werden. v.Henke: Computergestützte Modellierung und Verifikation SS2007 3–2 OBDDs: Umformung in bedingte Form mit if (A, B , C ) als Kurzform für if A then B else C logisch äquivalent zu A ∧ B ∨ ¬A ∧ C Transformationen (A, B , C sind beliebige Terme): A∧B A∨B ¬A A⇒B A⇔B A⊕B → → → → → → if (A, B , F) if (A, W, B ) if (A, F, W) if (A, B , W) if (A, B , if (B , F, W)) if (A, if (B , F, W), B ) v.Henke: Computergestützte Modellierung und Verifikation SS2007 (“exkl. Oder”) 3–3 OBDDs: Umformung in bedingte Form (2) x steht für eine Variable A[W/x ] bezeichnet die Formel, die sich ergibt, wenn jedes Vorkommen von x in Formel A durch W ersetzt wird; analog A[F/x ] (1) (2) (3) (4) (5) (6) if (W, A, B ) if (F, A, B ) if (A, B , B ) if (if (A, B , C ), D, E ) if (x , A, B ) x → → → → → → A B B if (A, if (B , D, E ), if (C , D, E )) if (x , A[W/x ], B [F/x ]) if (x , W, F) für Variable (Symbol) x als Blatt v.Henke: Computergestützte Modellierung und Verifikation SS2007 3–4 OBDDs: Bedingte Normalformen • Die Konstanten W oder F, oder • ein Term der Form if (x , A, B ), in dem - x ein Symbol ungleich einer der Konstanten W oder F ist (Regeln (1), (2), (4)); - A und B - ungleich (Regel (3)) und - in bedingter Normalform sind (rekursiver Prozeß bzw. Regel (6) im letzten Schritt) und - kein Vorkommen von x enthalten (Regel (5)). v.Henke: Computergestützte Modellierung und Verifikation SS2007 3–5 OBDDs: Beispiel einer Normalisierung if (if (a, c, b), if (a, b, W), W) = if (a, if (c, if (a, b, W), W), if (b, if (a, b, W), W)) = if (a, if (c, if (W, b, W), W), if (b, if (F, b, W), W)) = if (a, if (c, b, W), if (b, W, W)) = if (a, if (c, b, W), W) = if (a, if (c, if (b, W, F), W), W) v.Henke: Computergestützte Modellierung und Verifikation SS2007 (4) (5) (1), (2) (3) (6) 3–6 OBDDs: Kanonische (bedingte) Normalform Kanonische (bedingte) Normalform: Bedingte Normalform, in der die Folge von Symbolen in Testpositionen entlang eines jeden Pfads von der “Wurzel” zu einem “Blatt” einer vorgegebenen Ordnung auf der Menge der Symbole genügt. Jeder aussagenlogische Ausdruck kann in eine solche kanonische Normalform gebracht werden durch “Liften” des kleinsten Symbols x aus dem Ausdruck A, d.h. durch eine Transformation A → if (x , A[W/x ], A[F/x ]) und anschließender weiterer Reduktion und Kanonisierung. Beispiel: (x ⊕ z ) ⊕ y Alphabetische Ordnung der Symbole ergibt kanonische bedingte Normalform: if (x , if (y, if (z , W, F), if (z , F, W)), if (y, if (z , F, W), if (z , W, F))) v.Henke: Computergestützte Modellierung und Verifikation SS2007 3–7 Reduziertes BDD x y 1 y 0 x x y 0 0 gestrichelte Linie: 0 (= F) durchgezogene Linie: 1 y y 0 1 0 1 (= W) 1. Schritt: Verschmelzung gleicher Blattknoten 2. Schritt: Eliminierung von Knoten ohne Entscheidung v.Henke: Computergestützte Modellierung und Verifikation SS2007 3–8 Reduktion von OBDDs: reduce Systematisches Vorgehen zur Reduktion: Markierung der Knoten des OBDD (z.B. mit natürlichen Zahlen in Folge) • Markiere die Blattknoten (z.B. mit 0 und 1); Blattknoten mit gleichem Wert erhalten dieselbe Marke. • Ausgehend von den Blättern werden schichtenweise die inneren Knoten markiert. • Ein Knoten n, dessen 0- und 1-Nachfolger dieselbe Marke tragen, wird auch mit dieser Marke markiert. • Wenn es einen weiteren Knoten m mit derselben Variablen gibt, so dass die Marken der 0- bzw. 1-Nachfolger von n und m jeweils übereinstimmen, erhält Knoten n die Marke von m. • Andernfalls erhält n eine neue Marke. Nach Abschluß der Markierung werden alle gleich-markierten Knoten verschmolzen und Kanten entsprechend modifiziert. v.Henke: Computergestützte Modellierung und Verifikation SS2007 3–9 reduce – Beispiel #4 #3 #4 x1 #2 x2 #3 x2 x1 x2 Reduce =⇒ #2 #0 0 #2 x3 #1 1 #2 #0 0 #1 x3 x3 1 v.Henke: Computergestützte Modellierung und Verifikation SS2007 #0 0 #1 1 3 – 10 Effekt der Variablenordnung OBBD für die Formel (x1 + x2) · (x3 + x4) · (x5 + x6) mit Variablenordnung: (a) (x1, x2, x3, x4, x5, x6), (b) (x1, x3, x5, x2, x4, x6) x1 x1 x3 x2 x3 x4 x3 x5 x2 x5 x2 x5 x2 x5 x5 x2 x4 x4 x6 x6 0 1 0 v.Henke: Computergestützte Modellierung und Verifikation SS2007 1 3 – 11 Operationen auf OBDDs Im folgenden werden abkürzende Schreibweisen verwendet: 0, 1 stehen für F und W; · und + stehen für ∧ bzw. ∨ x steht für ¬x Bf bezeichnet das OBDD für die boolsche Formel f usw. op ist eine boolsche Operation Benötigte Hilfsoperationen: apply, restrict, exists v.Henke: Computergestützte Modellierung und Verifikation SS2007 3 – 12 OBDD-Operationen: apply apply(op, Bf , Bg ) – berechnet das reduzierte OBDD für die Formel f op g op eine logische Verknüpfung Bf , Bg als OBDDs für f bzw. g bereits vorhanden Vorgehen beruht auf Shannon-Expansion (vgl. oben): f ⇔ x · f [1/x ] + x · f [0/x ] Für apply: f op g ⇔ x · (f [1/x ] op g[1/x ]) + x · (f [0/x ] op g[0/x ]) v.Henke: Computergestützte Modellierung und Verifikation SS2007 3 – 13 OBDD-Operationen: apply (2) Fallunterscheidung je nach den Markierungen vf bzw. vg der Wurzelknoten von Bf und Bg : (a) vf = vg : Bfopg = if (vf , apply(op, tA, tB ), apply(op, fA, fB )) (b) vf < vg : Bfopg = if (vf , apply(op, tf , Bg ), apply(op, ff , Bg )) Wegen Ordnung kann vA in B nicht auftreten; es reicht, die Teilausdrücke zu kanonisieren. (c) vg < vf : symmetrisch zu (b) Das Ergebnis muss im allgemeinen anschließend reduziert werden. v.Henke: Computergestützte Modellierung und Verifikation SS2007 3 – 14 apply – Beispiel R1 R2 S1 x1 x1 x2 x3 R3 x3 S2 + R4 S3 x4 R5 R6 0 1 v.Henke: Computergestützte Modellierung und Verifikation SS2007 x4 S4 S5 0 1 3 – 15 (R1 , S1 ) x1 (R2 , S3 ) x2 (R4 , S3 ) x4 (R5 , S4 ) (R3 , S2 ) x3 (R3 , S3 ) x3 (R4 , S3 ) x4 (R6 , S5 ) (R6 , S5 ) (R4 , S3 )(R6 , S3 )(R5 , S4 )(R6 , S5 ) x4 x4 (R5 , S4 ) (R6 , S5 ) (R6 , S4 ) (R6 , S5 ) v.Henke: Computergestützte Modellierung und Verifikation SS2007 3 – 16 x1 x2 x3 x4 0 v.Henke: Computergestützte Modellierung und Verifikation SS2007 1 3 – 17 OBDD-Operationen: restrict restrict(b, x , Bf ) – berechnet reduziertes OBDD für f [b/x ] mit derselben Variablenordnung wie Bf (b ∈ {0, 1}) Vorgehen: Für jeden mit x markierten Knoten werden hereinkommende Kanten zum entsprechenden Nachfolger-Knoten umgeleitet; der Knoten selbst wird entfernt. Der sich ergebende BDD muss anschließend reduziert werden. v.Henke: Computergestützte Modellierung und Verifikation SS2007 3 – 18 restrict – Beispiel f := x1 · y1 + x2 · y2 + x3 · y3 und Restriktionen bezgl. x3 x1 x1 x1 y1 y1 y1 x2 x2 x2 y2 y2 y2 x3 y3 0 y3 1 0 v.Henke: Computergestützte Modellierung und Verifikation SS2007 1 0 1 3 – 19 OBDD-Operationen: exists exists(x , Bf ) – berechnet reduziertes OBDD für die existentiell quantifizierte Formel ∃ x .f ∃ x .f := f [0/x ] + f [1/x ] Entsprechend kann exists implementiert werden als exists(x , Bf ) = apply(+, restrict(0, x , Bf ), restrict(1, x , Bf )) Effizienteres Vorgehen: OBDD bleibt oberhalb des Auftretens von x unverändert. Daher: Für jedes Auftreten von x , berechne + der beiden Unter-BDDs, setze das Ergebnis für Knoten ein. v.Henke: Computergestützte Modellierung und Verifikation SS2007 3 – 20 exists – Beispiel f wie vorher; B1 = restrict(0, x3, Bf ), B2 = restrict(1, x3, Bf )), apply(+, B1, B2) x1 x1 x1 y1 y1 y1 x2 x2 x2 y2 y2 y2 y3 0 1 0 v.Henke: Computergestützte Modellierung und Verifikation SS2007 y3 1 0 1 3 – 21 exists – Beispiel (2) f wie vorher, ∃ x3.f , ∃ x2. ∃ x3.f x1 x1 x1 y1 y1 y1 x2 x2 y2 y2 y2 x3 0 y3 y3 y3 1 0 v.Henke: Computergestützte Modellierung und Verifikation SS2007 1 0 1 3 – 22