Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Symbolisches Model Checking mit Binary Decision Diagrams

Ähnliche Präsentationen


Präsentation zum Thema: "Symbolisches Model Checking mit Binary Decision Diagrams"—  Präsentation transkript:

1 Symbolisches Model Checking mit Binary Decision Diagrams
Im Rahmen des Seminars "Ausgewählte Kapitel des Software Engineering insb. Formale Spezifikation" Andreas Jacobs

2 Gliederung Motivation Model Checking Binary Decision Diagrams
Symbolisches Model Checking Fazit Am Anfang soll kurz erläutert werden, was unter Symbolischem Model Checking bzw. Model Checking im Allgemeinen zu verstehen ist und warum Model Checking ein wichtiger Ansatz in der Informatik ist. Kapitel 2 und 3 bilden die Grundlagen, um das Symbolische Model Checking vorstellen zu können. Der Vortrag endet mit einer kurzen Zusammenfassung und einem Ausblick auf die weitere Entwicklung der besprochenen Techniken.

3 Verifikation von Hardware- und Softwaresystemen
1. Motivation Verifikation von Hardware- und Softwaresystemen Testfälle Testen Simulation Beweis der Korrektheit Deduktive Verifikation Model Checking Also zur Einordnung von Model Checking. Unter Model Checking versteht man eine von vier Möglichkeiten zur Verifikation von Hardware- und Softwaresystemen. Es werden grundsätzlich vier Möglichkeiten unterschieden, um Systeme auf Korrektheit zu prüfen. Diese vier Möglichkeiten lassen sich weiter in zwei Gruppen unterteilen. Zum einen gibt es Testen und Simulation. Hier werden bestimmte Eingabemuster generiert und dann überprüft, ob die Ausgaben demjenigen entsprechen, was erwartet wurde. Zur Simulation muss ein Modell vorliegen. Tests können nur auf fertigen Systemen oder Prototypen durchgeführt werden. Zum anderen gibt es die deduktive Verifikation und das Model Checking. Beide ermöglichen den Beweis, dass das untersuchte System korrekt ist. Diese beiden Techniken unterscheiden sich zum einen in ihrer Mächtigkeit und zum anderen im Grad ihrer Automatisierung. Deduktive Verifikation kann nur halbautomatisch durchgeführt werden. Eingriff durch den Benutzer. Die Idee der Invariante kommt aus diesem Forschungszweig. Model Checking ist vollautomatisch und gibt sozusagen auf Knopfdruck, das Ergebnis, ob das System korrekt ist. Allerdings gibt es Grenzen bei der Berechenbarkeit. Es können nur Systeme mit endlichem Zustandsraum verifiziert werden. Model Checking ist „einfacher“ und wird immer benutzt, wenn dies möglich ist. - Unvollständigkeit + einfache Verfahren + große Erfahrung aufwendige Verfahren bei kleinen Systemen + Beweis der Korrektheit

4 Warum Verifikation von Hardware- und Softwaresystemen?
1. Motivation Warum Verifikation von Hardware- und Softwaresystemen? Hardware- und Softwaresysteme finden immer größere Verbreitung Eingebettete Systeme (Handys, Autos, usw.) Flächendeckende Verbreitung im betrieblichen Bereich Abhängigkeit von den Systemen Systeme werden immer komplexer Mooresches Gesetz Betriebssystementwicklung Fehler schwieriger zu finden Warum müssen Hardware- und Softwaresysteme auf Korrektheit geprüft werden? Größere Verbreitung Persönliche Bereiche (ESP, ABS) Betriebliche Bereiche Abhängigkeit und man muss sich darauf verlassen können Komplexität Hardware Software (SAP, Microsoft)

5 Fehler verursachen hohe Kosten
1. Motivation Fehler verursachen hohe Kosten Ariane 5 (1996) Pentium-Division (1994) 2 berühmte Beispiele Die Rakete brach 39 Sekunden nach dem Start infolge zu hohen Luftwiderstands auseinander und wurde gesprengt. Konvertierung einer 64-Fließkommazahl in eine 16-bit-Integerzahl => Überlauf => Ausnahme (redundante Systeme gleicher Fehler) Bei Vorgänger getestet, jedoch nicht in neuem System. 500 Milllionen bis 2 Mrd. $ Fließkommadivisionen sehr seltener (Fehler) Interne Tabelle zur Effizienzsteigerung Aus Effizienzgründen benutzt der Prozessor zur Division eine Tabelle mit 1066 Einträgen, von denen 5 falsche Werte enthielten 500 Millionen + Imageschaden 2 Millionen CPUs verkauft Je früher Fehler entdeckt werden, desto besser. (10er Potenz bei Entwicklungsstufen) Beispiel für Software und Hardware Versagen. Oder sogar Menschenleben: Herz-Lungen-Maschine; Auto (ESP) Quelle: Die neue "Ariane 5 ESC-A" auf der Startrampe. (Foto: ESA)

6 Gliederung 2. Model Checking Motivation Model Checking
2.1 Modellbildung 2.2 Spezifikation 2.3 Verifikation Binary Decision Diagrams Symbolisches Model Checking Fazit 2. Model Checking Nach der kurzen Einleitung jetzt zum Model Checking im Allgemeinen. Model Checking besteht aus drei Komponenten.

7 2. Model Checking + automatisch bei Fehlern Ausgabe eines Fehlerpfades
Wie in dieser Abbildung zu sehen, muss als erstes ein Modell des Systems erstellt werden. Als zweites muss eine formale Spezifikation des Systems erstellt werden. Und zuletzt muss ein Algorithmus angeben werden, der prüft ob das Modell der Spezifikation entspricht. EINBLENDUNG Vorteil: quasi auf Knopfdruck Nachteil: endlichem Zustandraum und das sog. state explosion problem. GENERELL bei Modellen: Wenn ausgegeben wird, dass das Modell der Spezifikation genügt, ist das reale System nicht zwangsläufig korrekt: Modell ODER Spezifikation kann nicht dem realen System entsprechen. + automatisch bei Fehlern Ausgabe eines Fehlerpfades kein Eingriff während des Algorithmus nötig - endlicher Zustandraum -state expolsion problem

8 2.1 Modellbildung Sei AP eine Menge atomarer Aussagen.
Als Kripke-Struktur wird ein Tripel M = (S, R, L) über AP bezeichnet mit S als endliche Menge von Systemzuständen, einer totalen Transitionsmenge R ⊆ S×S, so dass jeder Zustand s ∈ S einen Nachfolger t ∈ S in der Form hat, dass gilt R(s,t), einer Funktion L, die jedem Zustand s ∈ S eine Menge der in s wahren atomaren Aussagen zuweist.

9 2.1 Modellbildung Ein Pfad mit einem Startzustand s ist eine unendliche Folge von Zuständen π = s0,s1,s2,s3,… , so dass s0 = s und R(si, si+1) für alle i ≥ 0 gilt. Beispielsweise s1,s2,s2,s5,s6,….

10 state explosion problem
2.1 Modellbildung state explosion problem Variable mit n Bits hat 2n Zustände. Bei n parallelen, unabhängigen Prozessen gibt es n! unterschiedliche Ausführungsreihenfolgen. Lösungsansätze: größeres Verständnis des Systems voraussetzen und weniger auf syntaktischen Regeln basieren: Bei der Strukturanalyse wird das Gesamtproblem in geeignete Teilprobleme aufgespaltet, um den Modellumfang zu verringern. Komponenten eines Systems auszublenden, die sich durch andere Komponenten des Systems komplett beschreiben lassen, wird als Abstraktion bezeichnet. Bei Symmetriebetrachtungen versucht man Redundanzen im System zu vermeiden und Induktion ist ein Ansatz, bei dem versucht wird, die Gültigkeit von bestimmten Klassen des Modells auf andere Klassen des Modells zu übertragen. Symbolische Darstellung der Zustandsmenge Partial Order Reduction

11 2.2 Spezifikation Eine CTL Formel kann folgende Elemente enthalten:
Aussagevariablen (atomar): (vgl. Menge AP der Kripke-Struktur), Boolesche Operatoren: ∧,∨,…(16 Operatoren), Pfadquantoren: A (auf allen Pfaden gilt), E (auf mindestens einem Pfad gilt), temporale Operatoren: X (Nachfolger), F (zukünftig), G (immer), U (bis) und R (Komplement zu U). Auf einen Pfadquantor folgt immer ein temporaler Operator und alle 10 Kombinationen lassen sich durch EX, EG und EU ausdrücken.

12 2.2 Spezifikation CTL Formeln
Für die formale Spezifikation wird im Folgenden stets die Verzweigungslogik CTL verwendet. Auch LTL oder CTL* könnten verwendet werden. Da CTL auf Zuständen basiert ist, passt das gut zur Kripke-Struktur. Im vorherigen Vortrag gehört. Hier nochmals diejenigen Kombinationen von Pfadquantoren und temporalen Operatoren, die für das Model Checking ausreichen, da alle anderen Kombinationen auf diese zurückgeführt werden können.

13 2.3 Verifikation Model Checking 2.3 Verifikation
2.1 Modellbildung: Kripke-Struktur 2.2 Spezifikation: CTL Formel 2.3 Verifikation 2.3.1 Fixpunkte 2.3.2 kleinste/größte Fixpunkte 2.3.3 CTL Model Checking 2.3 Verifikation Es muss ein Algorithmus definiert werden, mit dem man in der Lage ist zu prüfen, ob eine Kripke-Struktur einer CTL Formel genügt.

14 ({s1,s2,s3}) bzgl. der Teilmengenrelation ⊆
2.3.1 Fixpunkte ({s1,s2,s3}) bzgl. der Teilmengenrelation ⊆

15 2.3.1 Fixpunkte Gegeben bei Kripke-Struktur
Stetig bezüglich Disjunktion Stetig bezüglich Konjunktion

16 2.3.2 Kleinste / größte Fixpunkte

17 2.3.2 Kleinste / größte Fixpunkte

18 2.3.3 CTL Model Checking function getExtremeFixpoint(τ: Funktional, Z{false,true}):Z; begin Z’ = τ(Z); while(Z’≠Z)do Z = Z’; end while; return(Z); end function.

19 2.3.3 CTL Model Checking: Beispiel 1
Z’= τ(true) Z’= τ(τ(τ(true))) Z’= τ(τ(true)) Z = true EG p s1 s2 s3 τ = Z = true; p p p,r Z’= τ(Z); while(Z’≠Z)do s4 s5 s6 Z = Z’; Z’ = τ(Z); Vorgehen: p suchen und dann ob Nachfolger in p end while; p r == return(Z); Z = {s1,s2,s3,s5} Z = {s1,s2,s3} Z = {s1,s2,s3,s4,s5,s6}

20 2.3.3 CTL Model Checking: Beispiel 2
E[p U r] = 1. Hallo 2. Hallo 3. Hallo 4. Hallo Vorgehen: erst r suchen Dann Weg über p zu r

21 3. Binary Decision Diagrams
Gliederung Motivation Model Checking Binary Decision Diagrams 3.1 Ordered Binary Decision Diagrams 3.2 Operationen auf OBDDs 3.3 Komplexitätsbetrachtungen Symbolisches Model Checking Fazit 3. Binary Decision Diagrams Das vorgestellte Verfahren ich recht effizient. Durch die explizite Darstellung der Zustände nur bei sehr kleinen Modellen anzuwenden. Jetzt werden die Binary Decision Diagrams vorgestellt, die als Datenstruktur besonders geeignet sind, um die Zustände und Übergänge einer Kripke-Struktur symbolisch darzustellen. Mit den Operationen auf BDDs lässt sich effizient prüfen, in welchen Zuständen einer Kripke-Struktur eine CTL Formeln gilt. Vorab die Anmerkung: Bis heute sind keine Datenstrukturen bekannt, die sowohl eine effiziente Darstellung als auch eine effiziente Manipulation von beliebigen Booleschen Funktionen ermöglichen. Akers [Ak78] Bryant [Br86] BDDs mit Verfeinerungen der bisher beste bekannte Ansatz

22 3.1 Ordered Binary Decision Diagrams
3.1.1 Definition Binary Decision Diagrams 3.1.2 Ordnung und Reduktion 3.1.3 Problem der Variablenordnung 3.2 Operationen auf OBDDs 3.3 Komplexitätsbetrachtungen 3.1 Ordered Binary Decision Diagrams

23 3.1.1 Definition Binary Decision Diagram
Ein Binary Decision Diagram (BDD) stellt eine Boolesche Funktion als einen gerichteten, azyklischen Graphen dar. BDD: S. B. Akers (78); Lee (59) gerichteter, azyklischer Graph stellt Boolesche Funktion dar. Alle Endknoten (Blätter) sind entweder mit 0 oder 1 markiert. Jeder andere Knoten ist mit einer binären Variablen gekennzeichnet und hat zwei direkte Nachfolger: lo bei 0 und hi bei 1 Gestrichelte Linie Wert 0 Durchgezogene Linie Wert 1 Weg links nach rechts => oben nach unten Exponentielles Wachstum: genau wie explizite Darstellung Alle Endknoten (Blätter) sind entweder mit 0 oder 1 markiert. Jeder andere Knoten k repräsentiert eine binäre Variable xi und hat genau zwei Nachfolger: lo(k), wenn xi=0 hi(k), wenn xi=1

24 3.1.2 Ordnung und Reduktion Ordered BDD (Randal E. Bryant 1986)
Effiziente Darstellung von (vielen) Booleschen Funktionen durch zwei Einschränkungen auf BDDs: Ordnung des BDD -> OBDD Reduktion des OBDD -> (Reduced) OBDD Bryant ist es durch 2 Einschränkungen effiziente Darstellung von vielen Booleschen Funktionen zu ermöglichen

25 3.1.2 Ordnung und Reduktion Ordnung
totale Ordnung auf die Menge der Variablen, so dass für jeden Knoten k mit dem Wert xi gilt: ∄ n ∈ {lo(k), hi(k)} mit xj, dass gilt: i,j ∈1..n und j≥i

26 Reduktion (zwei Regeln)
3.1.2 Ordnung und Reduktion Reduktion (zwei Regeln) verdeckung

27 3.1.2 Ordnung und Reduktion Beispiel: verdeckung verdeckung verdeckung

28 3.1.2 Ordnung und Reduktion OBDD
Ein Ordered Binary Decision Diagram (OBDD) stellt eine Boolesche Funktion als einen gerichteten, azyklischen Graphen dar, der sowohl geordnet als auch reduziert ist. Genau ein Blatt hat den Wert 0, das andere den Wert 1. Jeder andere Knoten k repräsentiert eine binäre Variable xi und hat genau zwei Nachfolger: lo(k), wenn xi=0 hi(k), wenn xi=1 Bryant ist es durch 2 Einschränkungen effiziente Darstellung von vielen Booleschen Funktionen zu ermöglichen Ein OBDD ist eine kanonische Darstellung einer Booleschen Funktion.

29 3.1.3 Problem der Variablenordnung
OBDDs zu derselben Funktion

30 3.1.3 Problem der Variablenordnung
Sifting-Algorithmus // Phase 1: Ermittlung der lokal besten Position von x2 // x2 steigt in Richtung der Blätter auf // x2 sinkt in Richtung des Startknotens ab // alle Positionen durchlaufen x1 x2 x3 x4 x1<x2<x3<x4 swap(x2, x3) swap(x2, x4) swap(x4, x2) swap(x3, x2) swap(x1, x2) // Phase 2: Aufsteigen zur besten Variablenordnung // beste Variablenordnung erreicht: x1<x3<x2<x4 swap(x2, x1)

31 3.2 Operationen auf OBDDs Binary Decision Diagrams
3.1 Ordered Binary Decision Diagrams 3.2 Operationen auf OBDDs 3.2.1 Negation 3.2.2 Apply 3.2.3 AndExists 3.3 Komplexitätsbetrachtungen 3.2 Operationen auf OBDDs

32 3.2.1 Negation

33 3.2.2 Apply Verknüpfung zweier Boolescher Funktionen mit einem
beliebigen zweistelligen Booleschen Operator: Aus zwei Eingabe OBDDs wird ein Ergebnis-OBDD produziert.

34 3.2.2 Apply Apply-Algorithmus:
Gleiche Variablenordnung, rekursiv durch Shannon-Entwicklung Fallunterscheidung beim Aufruf der OBDDs: F und G sind Blätter -> Rekursion beendet F und/oder G sind keine Blätter -> rekursiver Aufruf von Apply 2.1 Startknoten beider OBDD repräsentieren die gleiche Variable 2.2 Startknoten repräsentieren nicht die gleiche Variable Shannon: Linker Teilbaum, rechter Teilbaum

35 2.1: Beide Startknoten repräsentieren x1
3.2.2 Apply 2.1: Beide Startknoten repräsentieren x1 Ergebnis-Baum wird erzeugt. Knoten mit x1 wird erzeugt. Zwei rekursive Aufrufe von Apply.

36 2.2: F repräsentiert die „kleinere Variable“ x2
3.2.2 Apply 2.2: F repräsentiert die „kleinere Variable“ x2 Knoten mit x2 wird erzeugt. Zwei rekursive Aufrufe von Apply.

37 2.2: G repräsentiert die „kleinere Variable“ x3
3.2.2 Apply 2.2: G repräsentiert die „kleinere Variable“ x3 Knoten mit x3 wird erzeugt. Zwei rekursive Aufrufe von Apply.

38 3.2.2 Apply 1: F und G sind Blätter
Ein Blatt wird entsprechend dem Booleschen Operator erzeugt. Apply wird mehr rekursiv aufgerufen.

39 3.2.2 Apply 1: F und G sind Blätter
Ein Blatt wird entsprechend dem Booleschen Operator erzeugt. Apply wird mehr rekursiv aufgerufen.

40 2.1: Beide Startknoten repräsentieren x3
3.2.2 Apply 2.1: Beide Startknoten repräsentieren x3 Knoten mit x3 wird erzeugt. Zwei rekursive Aufrufe von Apply.

41 3.2.2 Apply 1: F und G sind Blätter
Es wird auf ein bereits berechnetes Ergebnis zurückgegriffen. Kein rekursiver Aufruf von Apply.

42 3.2.2 Apply 1: F und G sind Blätter
Ein Blatt wird entsprechend dem Booleschen Operator erzeugt. Kein rekursiver Aufruf von Apply.

43 2.2: F repräsentiert die „kleinere Variable“ x3
3.2.2 Apply 2.2: F repräsentiert die „kleinere Variable“ x3 Ein Blatt wird entsprechend dem Booleschen Operator erzeugt. Apply ist fertig. Das Ergebnis-OBDD ist nicht reduziert.

44 Komplexität von Apply: O(|F|*|G|)
Tricks: Frühzeitige Auswertung Hashtabelle zum Speichern der Berechnungen Polynominell, abhängig von der Ausgangsgröße der OBDDs Ausgangs-OBDD exponentiell -> schlecht

45 existentielle Quantifizierung von Variablen
3.2.3 AndExists existentielle Quantifizierung von Variablen Für eine Boolesche Funktion ist die existenzielle Quantifizierung bezüglich der Variablen x definiert durch Für einen Vektor gilt:

46 3.2.3 AndExists AndExists funktioniert wie Apply mit der Konjunktion (∧) als Booleschen Operator. Die einzige Änderung ist:

47 3.2.3 AndExists – Beispiel

48 3.2.3 AndExists – Beispiel

49 3.2.3 AndExists – Beispiel

50 3.2.3 AndExists – Beispiel

51 3.2.3 AndExists – Beispiel

52 Das Ergebnis von AndExists ist nicht reduziert.
3.2.3 AndExists – Beispiel Das Ergebnis von AndExists ist nicht reduziert.

53 3.2.3 AndExists – Beispiel

54 3.2.3 AndExists – Beispiel

55 3.3 Komplexitätsbetrachtungen
Binary Decision Diagrams 3.1 Ordered Binary Decision Diagrams 3.2 Operationen auf OBDDs 3.3 Komplexitätsbetrachtungen 3.3.1 Darstellung Boolescher Funktionen als OBDDs 3.3.2 Operationen auf OBDDs 3.3 Komplexitätsbetrachtungen

56 3.3.1 Darstellung Boolescher Funktionen als OBDDs
Funktionsklasse Komplexität bester Fall schlechtester Fall symmetrisch linear quadratisch Integer Addition exponentiell Integer Multiplikation

57 3.3.2 Operationen auf OBDDs Algorithmus Komplexität Reduktion von F
proportional zur Knotenanzahl: O(F) Variablenordnung mit Sifting O(n2) Vertauschungen zweier Variablen Negation konstant (Vertauschung der Blätter) Apply(F,G,*) quadratisch: O(|F|*|G|) AndExists((x1,…,xn),F,G) exponentiell: O(|F|*|G|*22n)

58 4. Symbolisches Model Checking
Gliederung Motivation Model Checking Binary Decision Diagrams Symbolisches Model Checking 4.1 Modellbildung 4.2 Spezifikation 4.3 Verifikation Fazit 4. Symbolisches Model Checking

59 4.1 Modellbildung Symbolische Darstellung der Kripke-Struktur

60 4.1 Modellbildung M = (S, S0, R, L)
Ein Zustand kann durch einen Vektor Boolescher Werte ausgedrückt werden: z.B. s1 ≙ (0,0) Eine Menge von Zuständen kann eindeutig durch ein Funktional dargestellt werden: Die Zustände sind binär kodiert. p - OBDD p enthält nur die Variablen x1,…,xn - p ist eine Menge von Booleschen Vektoren

61 4.1 Modellbildung M = (S, S0, R, L) Beispiel zur Menge von Zuständen:
Boolescher Vektor (x2, x1): s3 und s4: = p Die Zustände sind binär kodiert. (1) ≙ Menge der Zustände, in denen r∈AP gilt.

62 4.1 Modellbildung M = (S, S0, R, L)
Ein Zustandsübergang wird durch ein Paar von Zuständen ausgedrückt: z.B. (s1,s2)≙( (0,0), (0,1) ) Eine Menge von Zustandsübergängen kann eindeutig durch ein Funktional dargestellt werden: R - OBDD R enthält nur die Variablen x1,…, xn, x1´,…, xn´ - R ist eine Menge von Paaren Boolescher Vektoren

63 4.1 Modellbildung M = (S, S0, R, L) R R = ((s1,s2), (s2,s2),
Überlagerung R = ((s1,s2), (s2,s2), (s2,s3), (s3,s4))

64 4.1 Modellbildung M = (S, S0, R, L) L(p) =
Anhand einer atomaren Aussage wird ein OBDD mit denjenigen Zuständen zurückgegeben, in denen die Aussage gilt. L(p) =

65 4.2 Spezifikation Zur Erinnerung:

66 4.2 Spezifikation Gesucht: CTL-Operator EX auf symbolischer Kripke-Struktur Gegeben: EXp ≙ Nachfolger Übergang Lösung:

67 AndExists Algorithmus
4.2 Spezifikation AndExists Algorithmus

68 4.3 Verifikation Analyse der Formel AndExists kleinster Fixpunkt
größter Fixpunkt

69 4.3 Verifikation: Beispiel
EG p

70 4.3 Verifikation: Beispiel

71 4.3 Verifikation: Beispiel

72 4.3 Verifikation: Beispiel

73 4.3 Verifikation: Beispiel

74 4.3 Verifikation: Beispiel

75 4.3 Verifikation: Beispiel

76 Gliederung 5. Fazit Motivation Model Checking Binary Decision Diagrams
Symbolisches Model Checking Fazit 5. Fazit

77 5. Fazit Der vorgestellte Algorithmus zum Symbolischen Model Checking
ist ein effizientes Verfahren zur automatischen Verifikation. Grenzen des Model Checking: endlicher Zustandsraum state explosion problem Symbolic Model Verifier (SMV) System in der Praxis Cache-Protokoll im IEEE-Futurebus+ (1992) bisherige Erfolge vor allem im Hardwarebereich und bei Kommunikationsprotokollen

78 5. Fazit große Unternehmen aktiv im Bereich Model Checking
SLAM Projekt von Microsoft: Treiberverifikation bei Windows XP aktuelle Forschungsrichtung: Software Model Checking Verbesserungen notwendig einheitlicher Ansatz mit deduktiver Verifikation

79 Vielen Dank für die Aufmerksamkeit!


Herunterladen ppt "Symbolisches Model Checking mit Binary Decision Diagrams"

Ähnliche Präsentationen


Google-Anzeigen