190 likes | 281 Views
Computergest ützte Verifikation. 21.5.2002. (1. Systeme 2. Spezifikationen 3. explizites Model Checking). 4. Symbolisches Model Checking. 4.1 CTL Model Checking mit Binary Decision Diagrams. (4.2 SAT-basiertes Model Checking). Binary Decision Diagrams (BDD).
E N D
Computergestützte Verifikation 21.5.2002
(1. Systeme 2. Spezifikationen 3. explizites Model Checking) 4. Symbolisches Model Checking 4.1 CTL Model Checking mit Binary Decision Diagrams (4.2 SAT-basiertes Model Checking)
Binary Decision Diagrams (BDD) Ausgangspunkt: Boolesche Funktionen = Mengen von Bit-Vektoren: M fM fM(x1,....,xn) = W gdw. [x1,....,xn] M Inhalt: 4.1.1 Die Datenstruktur BDD 4.1.2 Operationen auf BDD 4.1.3 CTL Model Checking mit BDD 4.1.4 Fairness
x4=? x4=? x3=? x4=? x3=? x4=? x4=? x4=? x4=? x3=? x3=? x2=? x2=? x1=? x4=? Binary Decision Tree 0 1 1 0 0 0 1 0 1 0 Y N N Y N N N N N N N N Y N N Y 0011 c M 1000 v M
x4=? x1=? x2=? x2=? x3=? x4=? x4=? x4=? x3=? Reduktion des Baums 0 1 Y N N Y N N N N
x1=? x2=? x2=? x3=? x4=? x4=? x4=? x3=? Reduktion des Baums 0 1 Y N
x1=? x2=? x2=? x3=? x4=? x4=? Ordered Binary Decision Diagram 0 1 1 0 0 Variablen auf jedem Pfad in gleicher Reihenfolge 1 0 (00) keine äquivalenten Teilbäume 1 Y N Keine redundanten Knoten 0011 c M 1000 v M
x1=? x3=? x3=? x2=? x2=? x2=? x2=? x4=? x4=? N Y Verschiedene Variablenordnungen x1=? x2=? x2=? x3=? x4=? x4=? Y N
Abhängigkeit von Variablenordnung Manche Funktionen haben kleine (polynomiell große) BDD, unabhängig von der Variablenordnung Manche Funktionen haben (exponentiell) große BDD, unabhängig von der Variablenordnung Für viele Funktionen kann die Größe des BDD zwischen poly und exp schwanken, abhängig von Variablenordnung Optimale Variablenordnungen sind nicht effizient berechenbar Viele, viele Heuristiken Reordering (statisch oder dynamisch) hilft bei Speicherproblemen
Normalform Bei gegebener Variablenordnung ist das entstehende BDD eindeutig bestimmt! • Mengengleichheit, Emptiness können effizient entschieden werden
Mengen größe N Y BDD Größe Mengengröße vs. BDD-Größe N N Y Y N Y 0 4 8 12 16 Elemente in Menge
4.1.2 Operationen auf BDD Eingabe: 1-2 (reduzierte!) BDD Ausgabe: neues (auch reduziertes!) BDD einfaches RESTRICT: f n-stellig b in {0,1} RESTRICT(f,b) (n-1)-stellig f’(x2,.....,xn) := f(b,x2,....,xn) Implementation: root := root.child[b]
Operationen auf BDD APPLY(op,f1,f2) f1,f2 n-stellig f(x1,....,xn) := f1(x1,.....,xn) op f2(x1,.......,xn) “Shannon-Expansion” f(x1,....,xn) ( x1 f(1,x2,....,xn) ) ( ¬x1 f(0,x2,....,xn) ) x1 ( f1(1,x2,....,xn) op f2(1,x2,...,xn) ) ¬x1 ( f1(0,x2,....,xn) op f2(0,x2,....,xn) )
C B A Y N Y N A dY Y YN Y Y A B bg ch NN N eN A B A C eN eN Ni dY bg B NY Y NN YN NN NY Ni A a Implementation von APPLY f c g b h = i d e Y N N Y af ch A af C O ( |BDD1| |BDD2| )
RESTRICT geg: f n-stellig b in {0,1} i in {1,...,n} f’(x1,......,xn) := f(x1,....xi-1,b,xi+1,.....,xn) Implementation ähnlich zu APPLY O( |BDD| )
Abgeleitete Operationen f(x1,...,0,....,xn) f(x1,....,1,...,xn) xi . f(x1,...,xi,...,xn) (= 2 x RESTRICT, 1 x APPLY) Substitution: h(x1,...,xn) := f(x1,....g(x1,....,xn),....,xn = g f(x1,...,1,...xn) ¬g f(x1,....,0.,....,xn) ( = 2 x RESTRICT, 3 x APPLY) • Mengenoperationen: • = APPLY( ,) Komplement = tausche Y und N = APPLY( ,) Relation = Menge von Paaren = BDD der Länge 2n R1 o R2: y1 ... yn f1(x1,...,xn,y1,...,yn) f1(y1,...,yn,z1,...,zn)
Übung 1 Konstruiere ein reduziertes BDD zu folgender Funktion • x1 x2 x3 f(x1,x2,x3) • 0 0 0 1 • 0 0 1 0 • 0 1 0 0 • 0 1 1 1 • 0 0 0 • 1 0 1 1 • 1 0 1 • 1 1 1 0
Übung 2 Welche Funktion repräsentiert dieses BDD? x1=? 0 1 x2=? x2=? x3=? x4=? Y N
Übung 3 Wieviele Anwendungen von APPLY und RESTRICT sind notwendig, um zu gegebenen BDDs für Mengen M,N und K ein BDD für (M \ N) (N \K) zu konstruieren?