Modelchecking 1. Motivation Beispiel: Mengen als Formeln Formeln

Werbung
1. Motivation
University of Paderborn
Software Engineering Group
E. Kindler
Modelchecking
ƒ
ƒ
ƒ
ƒ
ƒ Die Anzahl der Zustände eines realistischen
Systems ist extrem groß; selbst unter
Vereinfachungen, bleibt die Anzahl riesig.
ƒ Deshalb wollen wir vermeiden, die Menge der
Zustände explizit zu repräsentieren.
Meist kurz nur
OBDDs oder
sogar nur BDDs
genannt!!!
VII. ROBDDs
University of Paderborn
Software Engineering Group
E. Kindler
ƒ Eine Möglichkeit, Mengen von Zuständen zu
repräsentieren, sind Formeln.
Motivation
Definition
Operationen
Quantifizierte boolesche Formeln (QBF)
Modelchecking: VII. ROBDDs
Beispiel: Mengen als Formeln
2
Formeln
University of Paderborn
Software Engineering Group
E. Kindler
University of Paderborn
Software Engineering Group
E. Kindler
ƒ Manche Operationen auf Mengen lassen sich mit
Formeln sehr effizient ausführen:
a=0
a=1
¬c
a
a⇔c
¬a∧c
c=0
c=1
ƒ
ƒ
ƒ
ƒ
Boolesche
Formeln
repräsentieren
Zustandsmengen
Vereinigung: p ∨ q
Durchschnitt: p ∧ q
Komplement: ¬ p
Mengendifferenz: p ∧ ¬ q
ƒ Allerdings gibt es verschiedene Formeln, die
dieselbe Menge repräsentieren!
ƒ Es ist extrem aufwendig (NP-vollständig),
herauszufinden, ob zwei Formeln dieselbe Menge
repräsentieren.
ƒ Deshalb sind Formeln für unsere Zwecke nicht
geeignet.
Die Überprüfung der Gleichheit zweier Mengen ist
beim Modelchecking eine sehr wichtige Operation!
Modelchecking: VII. ROBDDs
Formeln
3
Modelchecking: VII. ROBDDs
Binäre Entscheidungsbäume
University of Paderborn
Software Engineering Group
E. Kindler
ƒ Deshalb suchen wir eine Möglichkeit, Mengen
auf eine Weise zu repräsentieren, daß
a=b ∧ c=d
1
b
b
0
ƒ auf ihnen möglichst effizient durchführbar
sind.
1
c
c
c
c
0
Die Idee der Formeln geben wir dabei nicht
ganz auf! Wir stellen sie nur geschickter dar.
d
1
d
0
Wir gehen im folgenden davon aus, daß die
Menge aller Zustände durch eine Menge von
booleschen Variablen V repräsentiert ist.
University of Paderborn
Software Engineering Group
E. Kindler
a
0
ƒ die Mengenoperationen und
ƒ die Überprüfung der Gleichheit
Modelchecking: VII. ROBDDs
4
d
d
d
d
d
d
1
1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1
5
Modelchecking: VII. ROBDDs
6
1
Entscheidungsbäume
Gleiche Teilbäume
University of Paderborn
Software Engineering Group
E. Kindler
ƒ Für jeden Zustand gibt es im (vollständigen)
Entscheidungsbaum genau einen Pfad.
ƒ Am Ende des Pfades steht der Wert der
Formel in dem entsprechenden Zustand.
ƒ Die Reihenfolge der Variablen auf den Pfaden
wird zuvor festgelegt (Variablenordnung).
a=b ∧ c=d
d
d
d
d
University of Paderborn
Software Engineering Group
E. Kindler
b
c
d
d
0 0 0 0
d
1 0 0 1
Modelchecking: VII. ROBDDs
10
Löschen redundanter Knoten
University of Paderborn
Software Engineering Group
E. Kindler
a=b ∧ c=d
b
c
b
c
d
d
1 0 0 1
0
11
Modelchecking: VII. ROBDDs
University of Paderborn
Software Engineering Group
E. Kindler
a
b
d
d
a
1 0 0 1
c
d
8
d
a
0 0
d
Modelchecking: VII. ROBDDs
d
Gleiche Teilbäume
d
d
c
c
9
b
c
b
Modelchecking: VII. ROBDDs
a=b ∧ c=d
d
c
1 0 0 1 0 0 0 0
Modelchecking: VII. ROBDDs
d
b
c
d
c
a=b ∧ c=d
a
c
d
c
Gleiche Teilbäume
University of Paderborn
Software Engineering Group
E. Kindler
b
b
1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1
7
Gleiche Teilbäume
a
b
d
Problem:
ƒ Der Entscheidungsbaum ist extrem groß!
Modelchecking: VII. ROBDDs
a=b ∧ c=d
University of Paderborn
Software Engineering Group
E. Kindler
c
d
d
1 0 0 1
12
2
Löschen redundanter Knoten
a=b ∧ c=d
Löschen redundanter Knoten
University of Paderborn
Software Engineering Group
E. Kindler
a=b ∧ c=d
a
b
b
d
c
d
d
1 0 0 1
0
Modelchecking: VII. ROBDDs
Gleiche Teilbäume
Modelchecking: VII. ROBDDs
14
Gleiche Teilbäume
University of Paderborn
Software Engineering Group
E. Kindler
a=b ∧ c=d
a
b
University of Paderborn
Software Engineering Group
E. Kindler
a
b
b
c
d
0
c
d
a=b ∧ c=d
a
b
b
c
d
d
0
1
Modelchecking: VII. ROBDDs
d
0 0 1
Modelchecking: VII. ROBDDs
Endergebnis
d
1 0 0 1
0
13
b
b
c
d
a=b ∧ c=d
a
b
c
University of Paderborn
Software Engineering Group
E. Kindler
0
15
ƒ Wenn es keine gleichen Teilbäume
mehr gibt und keine redundante
Knoten, haben wir ein ROBDD
(Reduced Ordered Binary Decision
Diagram, Reduziertes
Entscheidungsdiagramm mit fester
Variablenordnung) erzeugt.
ƒ Ein ROBDD ist im allgemeinen
sehr viel kleiner als der
entsprechende
Entscheidungsbaum.
17
1
Modelchecking: VII. ROBDDs
2. Definition
University of Paderborn
Software Engineering Group
E. Kindler
d
16
University of Paderborn
Software Engineering Group
E. Kindler
ƒ Entscheidungsdiagramme und
boolesche Funktionen
ƒ Duplikate
ƒ Redundante Knoten
ƒ Variablenordnung
ƒ ROBDDs
Modelchecking: VII. ROBDDs
18
3
Streng genommen:
Entscheidungsdiagramme
binäres Entscheidungsdiagramm
Keine weiteren Einschränkungen
ƒ Ein Entscheidungsdiagramm ist ein azyklischer
Graph mit einem ausgezeichneten Wurzelknoten.
ƒ Wir unterscheiden
ƒ In einem Entscheidungsdiagramm ist die
Ordnung der Variablen auf dem Pfad noch
nicht festgelegt (dieselbe Variable darf sogar
mehrfach vorkommen).
ƒ Das Entscheidungsdiagramm muß kein Baum
sein (ein Knoten darf mehrere eingehende
Kanten besitzen).
ƒ Gleiche Teilbäume dürfen mehrfach
vorkommen (müssen aber nicht).
University of Paderborn
Software Engineering Group
E. Kindler
ƒ inneren Knoten, die jeweils mit einer
Variable aus V beschriftet sind und
ƒ Terminalknoten, die mit 0 oder 1
beschriftet sind.
b
c
1
0
ƒ Jeder innere Knoten besitzt genau eine
ausgehende Kante, die mit 0 beschriftet
ist, und eine ausgehende Kante, die
mit 1 beschriftet ist.
ƒ Terminalkonten besitzen keine ausgehende
Kante.
0
b
1
Modelchecking: VII. ROBDDs
19
Boolesche Funktion
Modelchecking: VII. ROBDDs
20
Duplikate
University of Paderborn
Software Engineering Group
E. Kindler
ƒ Ein Entscheidungsdiagramm repräsentiert
eindeutig eine boolesche Funktion bzw. eine
Menge von Zuständen.
(man verfolgt ausgehend vom Wurzelknoten
jeweils die Kante, die mit Werte der Variablen
im betrachteten Zustand beschriftet ist).
University of Paderborn
Software Engineering Group
E. Kindler
University of Paderborn
Software Engineering Group
E. Kindler
ƒ Zwei innere Knoten heißen Duplikate, wenn beide
Knoten mit derselben Variablen v beschriftet sind
und die beide ausgehenden Kanten, die mit 0
beschriftet sind, beim selben Knoten enden und die
beiden ausgehenden Kanten, die mit 1 beschriftet
sind, beim selben Knoten enden.
c
c
e
d
ƒ Zwei Terminalknoten heißen Duplikate, wenn beide
Knoten gleich beschriftet sind.
Modelchecking: VII. ROBDDs
21
Duplikate
ƒ Von zwei Duplikaten kann eines gelöscht werden;
die Kanten, die auf den gelöschten Knoten
verwiesen haben, werden auf das Duplikat
„umgebogen“.
a
b
c
c
⇒
Der Wert der
booleschen
Funktion
bleibt gleich!
Reduce
d
e
d
a
a
b
c
b
⇒
Reduce
e
d
Modelchecking: VII. ROBDDs
University of Paderborn
Software Engineering Group
E. Kindler
ƒ Ein innerer Knoten eines Entscheidungsdiagramms
heißt redundant, wenn beide ausgehenden Kanten
zum selben Knoten führen.
ƒ Redundante Knoten kann man löschen, indem man
alle Kanten, die auf den Knoten verweisen, auf
seinen (eindeutigen) Nachfolger „umbiegt“:
b
c
22
Redundante Knoten
University of Paderborn
Software Engineering Group
E. Kindler
a
Modelchecking: VII. ROBDDs
23
Modelchecking: VII. ROBDDs
Der Wert der
booleschen
Funktion
bleibt gleich!
d
24
4
Variablenordnung
ROBDDs
University of Paderborn
Software Engineering Group
E. Kindler
University of Paderborn
Software Engineering Group
E. Kindler
ƒ Sei eine totale Ordnung v1 < v2 < v3 < … < vn auf der
Menge der Variablen V definiert.
ƒ Ein Entscheidungsdiagramm respektiert die
Variablenordnung <, wenn für alle inneren Knoten
k und k´ mit einer Kante von k zu k´ gilt:
Wenn k mit v beschriftet ist und k´ mit v´ , dann gilt
v < v´.
ƒ Sei eine totale Ordnung v1 < v2 < v3 … < vn auf der
Menge der Variablen V gegeben.
ƒ Ein Entscheidungsdiagramm heißt ROBDD
(reduced ordered binary decision diagram,
reduziertes geordnetes binäres
Entscheidungsdiagramm) bezüglich <, wenn es
Modelchecking: VII. ROBDDs
Modelchecking: VII. ROBDDs
ROBDDs: Bemerkungen
25
ƒ die Variablenordnung < respektiert und wenn es
ƒ keine Duplikate und
ƒ keine redundanten Knoten enthält.
ROBDDs: Beobachtungen
University of Paderborn
Software Engineering Group
E. Kindler
ƒ Oft wird das R in ROBDDs weggelassen. Man
sagt dann OBDD anstelle von ROBDD.
ƒ Oft wird sogar nur von BDDs geredet, wenn
ROBDDs gemeint sind.
26
University of Paderborn
Software Engineering Group
E. Kindler
ƒ Für jede boolesche Funktion und jede
Variablenordnung gibt es ein ROBDD, das
diese Funktion repräsentiert!
ƒ Für jede boolesche Funktion und jede
Variablenordnung gibt es genau ein ROBDD,
das diese Funktion repräsentiert.
Æ Zwei durch ROBDDs repräsentierte boolesche
önnen wir einfach auf Gleichheit
überprüfen (Isomorphie der ROBDDs).
Modelchecking: VII. ROBDDs
ROBDDs: Beobachtungen
27
ROBDDs: Beobachtungen
University of Paderborn
Software Engineering Group
E. Kindler
ƒ Für viele praktisch relevante boolesche
Funktionen sind die zugehörigen ROBDDs
relativ klein!
ƒ Die Größe des ROBDDs einer booleschen
Funktion hängt stark von der gewählten
Variablenordnung ab.
Beispielsweise ist das ROBDD für die Funktion
a=b ∧ c=d mit Variablenordnung a < b < c < d
klein; mit Variablenordnung a < c < d < b wird es
größer.
Modelchecking: VII. ROBDDs
Modelchecking: VII. ROBDDs
29
28
University of Paderborn
Software Engineering Group
E. Kindler
ƒ Es gibt aber auch boolesche Funktionen, für die das
ROBDD für keine Variablenordnung klein ist
(Multiplikation).
ƒ Das Finden einer optimalen Variablenordnung ist
eine der größten Herausforderungen beim
symbolischen Modelchecking.
ƒ Leider gibt es dafür keine effizienten Verfahren
(komplexitätstheoretische Betrachtungen).
ƒ Aber es gibt Heuristiken:
ƒ Variablen, die „etwas miteinander“ zu tun haben, sollten
in der Ordnung nahe beieinander liegen.
ƒ Lokale Optimierung durch Vertauschen zweier Variablen
Modelchecking: VII. ROBDDs
30
5
2. Operationen auf ROBBDs
ƒ
ƒ
ƒ
ƒ
Negation
University of Paderborn
Software Engineering Group
E. Kindler
University of Paderborn
Software Engineering Group
E. Kindler
ƒ Wir überlegen uns nun, wie man verschiedene
boolesche Operationen auf durch ROBDDs
repräsentierten booleschen Funktionen
durchführen kann.
ƒ Einfaches Beispiel: Negation
In der Praxis wird
Negation
Restriktion und Shannonexpansion
Binäre Operationen
ROBDDs und Kripkestrukturen
a
b
b
31
Restriktion u. Shannonexpansion
d
d
d
0
1
1
0
Modelchecking: VII. ROBDDs
32
University of Paderborn
Software Engineering Group
E. Kindler
d
a
c
t
c
Aufwand:
O(|p|)
⇒
v
¬t
Restrict
e
d
e
Größe des
ROBDDs für p
ƒ Anschließend systematische Reduktion
des resultierenden EntscheidungsAufwand:
O(|p|⋅log (|p|))
diagramms zu einem ROBDD.
ƒ Es gilt (Shannonexpansion von ϕ):
p = (¬ v ∧ p|v ← 0 ) ∨ ( v ∧ p|v ← 1)
33
Modelchecking: VII. ROBDDs
34
Binäre boolesche Operationen
University of Paderborn
Software Engineering Group
E. Kindler
ƒ Ein wichtiger Spezialfall ist die Restriktion auf
die erste Variable v1 im ROBDD:
p|v1 ← 0 bzw. p|v1 ← 1
v1
Aufwand:
O(1)
Modelchecking: VII. ROBDDs
d
a
ƒ p|vi ← t nennen wir eine Restriktion von p.
p|v1 ← 0
Aufwand: O(1)
c
Negation
ƒ Für eine durch ein ROBDD repräsentierte boolesche
Funktion p können wir das ROBDD für die
Restriktion p|v ← t einfach erzeugen:
ƒ Für eine boolesche Funktion p über den
Variablen v1, … ,vn und einen booleschen
Wert t ∈ B ist die boolesche Funktion p|vi ← t
definiert durch
p|vi ← t(v1, … ,vn ) = p(v1 , … vi-1 , t ,vi+1 , … , vn )
Restriktion: Spezialfall
b
Restriktion auf ROBDDs
University of Paderborn
Software Engineering Group
E. Kindler
Modelchecking: VII. ROBDDs
b
⇒
c
Modelchecking: VII. ROBDDs
Negation aber
anders realisiert!
a
University of Paderborn
Software Engineering Group
E. Kindler
ƒ Alle binären booleschen Operationen können
wir mit Hilfe der Restriktion und der ShannonRekursion
expansion rekursiv formulieren:
ƒ p ∧ q = (¬ v ∧ (p|v ← 0
( v ∧ (p|v ← 1
ƒ p ∨ q = (¬ v ∧ (p|v ← 0
( v ∧ (p|v ← 1
∧ q|v ← 0 ) ) ∨
∧ q|v ← 1 ) )
∨ q|v ← 0 ) ) ∨
∨ q|v ← 1 ) )
Beliebiger
boolescher
Operator
ƒ p ♣ q = (¬ v ∧ (p|v ← 0 ♣ q|v ← 0 ) ) ∨
( v ∧ (p|v ← 1 ♣ q|v ← 1 ) )
p|v1 ← 1
35
Modelchecking: VII. ROBDDs
36
6
Binäre boolesche Operationen
Zusammenfassung
University of Paderborn
Software Engineering Group
E. Kindler
ROBDD für p ♣ q aus ROBDDs für p und q generieren:
ƒ Generiere ROBDDs für p|v ← 0 , q|v ← 0 , p|v ← 1 , und q|v ← 1
ƒ Konstruiere daraus rekursiv p|v ← 0 ♣ q|v ← 0 und p|v ← 1 ♣ q|v ← 1
ƒ Ein Entscheidungsdiagramm für p ♣ q ist dann
v
p|v ← 0 ♣ q|v ← 0
p|v ← 1 ♣ q|v ← 1
Gesamtaufwand
(bei geschickter
Implementierung):
O( |p|⋅ |q|)
ƒ Reduziere das Entscheidungsdiagramm systematisch zu
einem ROBDD.
Modelchecking: VII. ROBDDs
ROBDDs und Kripkestrukturen
37
University of Paderborn
Software Engineering Group
E. Kindler
University of Paderborn
Software Engineering Group
E. Kindler
ƒ Solange die Größe der beteiligten ROBDDs klein
bleibt, sind alle booleschen Operationen auf
ROBDDs und der Test auf Gleichheit zweier
ROBDDs relativ effizient ausführbar.
ƒ Es gibt inzwischen viele Programmbibliotheken für
ROBDDs und die zugehörigen Operationen (dort
sind insbesondere viele Heuristiken zur Optimierung
der Variablenordnung realisiert).
ƒ In der Praxis werden alle ROBDDs in einer einzigen
Datenstruktur verwaltet (mit mehreren Wurzeln).
Der Test auf Gleichheit ist dann nur ein
Pointervergleich (ist also extrem effizient)!
Modelchecking: VII. ROBDDs
4. Quantifizierte boolesche Formeln
38
University of Paderborn
Software Engineering Group
E. Kindler
ƒ Mit den booleschen Operationen können wir
Formeln in ROBDDs umwandeln. Wir werden
im folgenden oft nicht zwischen einer Formel
und dem zugehörigen ROBDD unterscheiden.
ƒ Eine Kripkestruktur können wir durch ein
ROBDD für die Anfangsbedingung S(ROBDD
0
(ROBDD über V ) und ein ROBDD für die
Übergangsrelation R (ROBDD über V ∪ V´ )
repräsentieren.
ƒ Später werden wir in booleschen Formeln
auch die Quantifikation von booleschen
Variablen v (QBF) benutzen: ∃ v . p
ƒ ∃ v . p ist eine Abkürzung für p|v ← 0 ∨ p|v ← 1
ƒ ∃ v . p ist eine Abkürzung für
∃ v1 . ( ∃ v2 . ( ... ( ∃ vn . p ) …) )
ƒ Entsprechend steht ∀ v . p abkürzend für
p|v ← 0 ∧ p|v ← 1
ƒ ∀ v . p steht abkürzend für
∀ v1 . (∀ v2 . ( ... ( ∀ vn . p ) …) )
Modelchecking: VII. ROBDDs
Modelchecking: VII. ROBDDs
Relationsprodukt
39
MCiE
University of Paderborn
Software Engineering Group
E. Kindler
40
University of Paderborn
Software Engineering Group
E. Kindler
ƒ Für eine Formel p(u,v) über U und V und eine Formel
q(v, w) über V und W nennen wir
∃ v . p(u,v) ∧ q(v, w) das Relationsprodukt von p(u,v)
und q(v, w).
ƒ Das ROBDD für das Relationsprodukt läßt sich mit
den vorangegangenen Abkürzungen mit Hilfe der
booleschen Operationen konstruieren; das ist aber
relativ aufwendig.
ƒ In der Praxis wird deshalb ein eigenes Verfahren für
das Relationsprodukt implementiert (das in der
Praxis effizient ist, im schlimmsten Falle aber
exponentielle Komplexität besitzt).
ƒ In ROBDD-Bibliotheken werden viele weitere
Optimierungen angewendet, um die Operationen
auf ROBDDs möglichst effizient durchzuführen
(z.B. Hash-Tabellen Æ Vergleich auf Gleichheit
zweier ROBDDs wird dann ein Pointervergleich).
Modelchecking: VII. ROBDDs
Modelchecking: VII. ROBDDs
41
ƒ Die Model-Checking-in-Education-Bibliothek (MCiE)
implementiert viele dieser Optimierungen.
ƒ Sehen Sie sich diese Bibliothek unbedingt an
(vgl. Übungen):
http://www.upb.de/cs/kindler/Lehre/MCiE
42
7
Herunterladen