Symbolisches Model Checking mit Binary Decision Diagrams

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen für das Erfüllbarkeitsproblem SAT
Advertisements

Temporale Logiken: LTL und CTL
Randomisierte Algorithmen Präfix Suche und Konsistentes Hashing
Daniel Neumann Seminar Systementwurf Wintersemester 2006/07 Zustandsautomaten/ Kripke-Strukturen Daniel Neumann
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Claudio Moraga; Gisbert Dittrich
Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt.
Eingebettete Systeme Qualität und Produktivität
Bounded Model Checking II
B-Bäume.
7. Natürliche Binärbäume
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Default Logiken Zhao Li
8. Formale Sprachen und Grammatiken
Hauptseminar Modellüberprüfung Kathrin Ott
Seminar Modellüberprüfung
Verifizieren versus Berechnen
Algorithmen und Komplexität
Terminierung und Deadlocks Enkhbat Daginaa Betreuerin Prof. Heike Wehrheim Totale Korrektheit.
1 Computergestützte Verifikation Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:
Computergestützte Verifikation
Computergestützte Verifikation (Halbkurs) Karsten Schmidt Di 9-11 R Fr R
1 Computergestützte Verifikation SAT-basiertes Model Checking Ansatz: Übersetze das Model Checking Problem in ein aussagenlogisches Erfüllbarkeitsproblem.
1 Computergestützte Verifikation Symbolisches Model Checking 4.1 CTL Model Checking mit Binary Decision Diagrams (1. Systeme 2. Spezifikationen.
Computergestützte Verifikation
1 Computergestützte Verifikation Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:
Algorithmentheorie 04 –Hashing
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (06 – Reduktion endlicher Automaten) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
Kapitel 5 Stetigkeit.
Rechneraufbau & Rechnerstrukturen, Folie 2.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 2.
Rechneraufbau & Rechnerstrukturen, Folie 1.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 1.
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 4.1.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Das Symbolic Model Verifier (SMV) System Präsentation im Rahmen.
Modelchecker – RED Tool: Region-Encoding Diagram Stefan Neumann.
Christian Schindelhauer
Christian Schindelhauer
Theorie und Praxis geometrischer Algorithmen
Ralf KüstersDagstuhl 2008/11/30 2 Ralf KüstersDagstuhl 2008/11/30 3.
Isabelle/HOL ( Kripke Structures & Model Checking ) Ying Wang, Nelli Bärsch, Bartosz Rynarzewski,
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Diskrete Mathematik II
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/ /23.1.
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt WS 06/
Polynome und schnelle Fourier-Transformation
Was ist eine Funktion? Eine Zuordnung,
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Formale Sprachen Reguläre Sprachen Rudolf FREUND, Marian KOGLER.
Christian Schindelhauer Wintersemester 2006/07 3. Vorlesung
Christian Schindelhauer Wintersemester 2006/07 2. Vorlesung
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
1 Computergestützte Verifikation Binary Decision Diagrams (BDD) Inhalt: Die Datenstruktur BDD Operationen auf BDD CTL Model.
Analyse der Laufzeit von Algorithmen
Qualitätssicherung von Software Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin und Fraunhofer FIRST.
7. Formale Sprachen und Grammatiken
Modellbasierte Software- Entwicklung eingebetteter Systeme Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität und Fraunhofer.
Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen
Algorithmen und Datenstrukturen 1 SS 2002
1 Computergestützte Verifikation Übung 1 Konstruiere den Regionengraph für folgendes System (Anfang: k = 0) ! Identifiziere in diesem Graph.
 Präsentation transkript:

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

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.

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

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)

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: http://www.cpu-museum.de/?m=Intel&f=Pentium+P5 Die neue "Ariane 5 ESC-A" auf der Startrampe. (Foto: ESA)

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.

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

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.

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,….

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

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.

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.

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.

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

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

2.3.2 Kleinste / größte Fixpunkte

2.3.2 Kleinste / größte Fixpunkte

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.

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}

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

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

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

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

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

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

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

3.1.2 Ordnung und Reduktion Beispiel: verdeckung verdeckung verdeckung

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.

3.1.3 Problem der Variablenordnung OBDDs zu derselben Funktion

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)

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

3.2.1 Negation

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

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

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.

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.

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.

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

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

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.

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.

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

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.

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

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:

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

3.2.3 AndExists – Beispiel

3.2.3 AndExists – Beispiel

3.2.3 AndExists – Beispiel

3.2.3 AndExists – Beispiel

3.2.3 AndExists – Beispiel

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

3.2.3 AndExists – Beispiel

3.2.3 AndExists – Beispiel

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

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

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)

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

4.1 Modellbildung Symbolische Darstellung der Kripke-Struktur

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

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.

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

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

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) =

4.2 Spezifikation Zur Erinnerung:

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

AndExists Algorithmus 4.2 Spezifikation AndExists Algorithmus

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

4.3 Verifikation: Beispiel EG p

4.3 Verifikation: Beispiel

4.3 Verifikation: Beispiel

4.3 Verifikation: Beispiel

4.3 Verifikation: Beispiel

4.3 Verifikation: Beispiel

4.3 Verifikation: Beispiel

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

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

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

Vielen Dank für die Aufmerksamkeit!