300 likes | 381 Views
Computergest ützte Verifikation. 14.6.2002. 6. Abstraktion. C. r. A. Simulation. ist Simulationsrelation, wenn f ür alle c,a,c’ : Wenn c r a und c c’ in C, so ex. ein a’ mit c’ r a’ und a a’ in A. Simulation und Computation Tree. rot. Bremse. r. gelb. Gas. gr ün.
E N D
Computergestützte Verifikation 14.6.2002
C r A Simulation • ist Simulationsrelation, wenn für alle c,a,c’: Wenn c r a und c c’ in C, so ex. ein a’ mit c’ r a’ und a a’ in A
Simulation und Computation Tree rot Bremse r gelb Gas grün
Existential Abstraction • Sehr praktikabel: • Wähle abstrakte Zustandsmenge (nach Kriterien wie z.B. Bewahrung elementarer Eigenschaften) 2. Ergänze kanonisch eine Übergangsrelation rot Bremse r gelb Gas grün
Beispiele 1. Vorzeichenabstraktion 2. Logarithmische Abstraktion Nat {< 0 , 0 , > 0} Nat Nat; i lg i = log2(i+1) 3. Bit-Abstraktion I O I AND/ OR/NOT AND/ OR/NOT O R e g R e g
Bit-Abstraktion I O AND/ OR/NOT • T(x1...xn,x1’...xn’) = • i1...im R(x1..xn,i1...im,x1’...xn’) R e g I AND/ OR/NOT O • T(x1..xj,x1’...xj’) = • i1...im xj+1...xn xj+1’...xn’ R(x1...xn,i1...im,x1’...xn’) R e g
Bisimulation Wenn sowohl r als auch r-1 Simulationsrelationen sind, heißen C und A bisimilar, und r heißt Bisimulationsrelation “bisimilar” ist schärfer als “A simuliert C und C simuliert A”!
graphische Veranschaulichung Sei a a’. Daraus folgt für alle c: c r a, es existiert c’: c c’ und c’ r a’ (Bisimulation) es existiertc: c r a es existiert c’: c c’ und c’ r a’ (exist. Abstr.)
Beispiele für Bisimulationen • Symmetrien • Wenn [s] [s’], so gibt es ein s” in [s’] mit s s” 2. Regionen (mit “Selbstschleifentrick” wie bei Zonen)
Bisimulation und CTL(*) Satz 1: Wenn A und C bisimilar sind, so erfüllen sie die gleichen CTL*-Formeln Satz 2: Wenn A und C die gleichen CTL-Formeln erfüllen, so sind sie bisimilar Das heißt: Wenn es eine CTL*-Formel gibt, die A und C unterscheidet, so gibt es bereits eine CTL-Formel.
Konstruktion von Bisimulationen Nicht jede abstrakte Zustandsmenge kann zu einem bisimilaren Transitionssystem ergänzt werden rot Bremse r gelb Gas grün Konstruktion von bisimilaren Transitionssystemen aus abstrakter Zustandsmenge erfordert Abstraktionsverfeinerung
Schwache Bisimulation Erweitertes Spiel (aktionsbasiert): spezielle Aktion t: “unsichtbar” Spieler 1 macht einen Zug (ein Schritt) Spieler 2 darf einen Zug machen, der aus der von Spieler 1 gewählten Aktion, umrahmt von beliebig vielen t-Aktionen, besteht, und zu einem Zustand führt, der in Relation r zum Zustand von Spieler 1 steht • C simuliert A schwach • schwache Bisimulation ( r und r-1 ..., wie gehabt) ... bewahrt CTL*-X Partial order reduction für CTL* liefert schwach bisimilares reduziertes Transitionssystem
Zusammenfassung Abstraktion zentral: Simulation/Bisimulation Simulation ACTL* Bisimulation CTL* Jede Menge abstrakter Zustände kann zu Simulation fortgesetzt werden, aber nicht immer zu einer Bisimulation Die meisten Reduktionstechniken sind Abstraktionen
7. Abstraktionsverfeinerung 7.1 allgemeine Abstraktionsverfeinerung geg.: Abstraktion ges: aussagekräftigere Abstraktion 7.2 Gegenbeispielgesteuerte Verfeinerung geg.: Abstraktion, Scheingegenbeispiel ges.: Abstraktion, die Gegenbeispiel ausschließt
Spaltung abstrakter Zustände z.B. Zonen: Z1 := Z ci – cj < k Z2 := Z ci – cj k z.B. Bit-Abstraktion: weitere Variablen sichtbar machen
7.1 allgemeine Verfeinerung geg.: simulierende Abstraktionsrelation z.B. Zonengraph ges.: mögl. grobe Verfeinerung, die zus. Bedingungen erfüllt. z.B. Bisimulation oder Vererbung von ACTL* in die andere Richtung oder Bewahrung weiterer Elementaraussagen Mittel: Spaltung von abstrakten Zuständen
Bewahrung von ACTL* in die “andere” Richtung: “Core” gut genug: Core muss sich wie Bisimulation verhalten Wo spalten? Bisimulation: gut schlecht
Beispiel: Zonen Wie spalten? Welche Uhrenstellung in Z1 hat Nachfolger in Z2? • Schnitt mit Constraint • Nullstellen • Schnitt mit Invariante des diskreten Nachfolgers • Zeitverlauf • Schnitt mit Invariante Komplement nicht unbedingt konvex ggf. mehrere Zonen als Spaltprodukt • 1. Schnitt mit Null • 2. Öffnung “nach oben” • Schnitt mit Constraint • Schnitt mit Zone • lernen: brauchen Möglichkeit, abstrakten Vorgänger zu berechnen
Propagierung Spaltung eines abstrakten Zustandes kann weitere Spaltungen notwendig machen Propagation nach rückwärts... ... bis sich nix mehr ändert
Konsequenteste Umsetzung Beginne mit Entwickle Transitionssystem ausschliesslich per Verfeinerung • Splitting Tree: dokumentiert Spaltgeschichte = Datenstruktur für Zustandsmenge (Zustand = Pfad im Splitting Tree)
7.2 GegenbeispielgesteuerteVerfeinerung Algorithmus: • initiale Abstraktion • Verifikation von f (aus ACTL*) im abstrakten System • 3. f gilt f gilt auch im konkreten System • 4. f gilt nicht abstraktes Gegenbeispiel • 5. Prüfe, ob Gegenbeispiel im konkreten System • realisierbar ist • 6. ja f gilt nicht • 7. nein verfeinere Abstraktion derart, daß Gegenbeispiel • auch im abstrakten System unrealisierbar wird • 8. GOTO 2
Beispiel: Bit-Abstraktion I AND/ OR/NOT O • T(x1..xj,x1’...xj’) = • i1...im xj+1...xn xj+1’...xn’ R(x1...xn,i1...im,x1’...xn’) R e g initiale Abstraktion: möglichst wenige Variablen sichtbar z.B. die in der Formel vorkommenden Existential Abstraction (Abstraktion ist Funktion) Verifikation mit BDD- oder SAT-basiertem Model Checking
Abstraktes Gegenbeispiel einfachster Fall: Gegenbeispiel = endl. Pfad = Folge von Belegungen der sichtbaren Variablen c1(k) .. cj(k) Realisierbarkeit im konkreten System = Erfüllbarkeit von I(c1(0) ...cj(0),x(j+1)(0)...x(n)(0)) T(c1(0) ...cj(0),x(j+1)(0)...x(n)(0) ,c1(1) ...cj(1),x(j+1)(1)...x(n)(1))) .... SAT-Checker
erfüllbare Pfadformel nicht erfüllbare Pfadformel dead end state = erreichbar von einem konkreten Zustand im ersten abstrakten Zustand bad state = hat Nachfolger Scheingegenbeispiele Verfeinerung = trenne dead end und bad states
Verfeinerungsproblem Welche (möglichst wenige) Variablen sichtbar machen, damit bad und dead end states getrennt werden? Optimale Lösungen algorithmisch schwer Approximationen, Heuristiken, ....
Eine Separationsidee d1 = (0,1,0,1) d2 = (1,1,1,0) b1 = (1,1,1,1) b2 = (0,0,0,1) • ein paar konkrete Beispiele gewinnen • .... macht der SAT-Checker • 2. wenigstens die Beispiele trennen indem möglichst wenige Variable sichtbar werden, Si=14 vi = min die d1 von b1 v1 + v3 1, d1 von b2 v2 1 d2 von b1 v4 1 und d2 von b2 v1 + v2 + v3 + v4 1 trennen ganzzahliges Optimierungsproblem, NP=hart, (v1,v2,v4), (v2,v3,v4)
Andere Separationsideen • Mache signifikante Variablen in der Pfadformel • sichtbar • + Konfliktanalyse im SAT-Checker • + Fourieranalyse • + Lernansätze • + Analyse abhängiger Variablen
Übung 1 Verfeinere die gegebene Abstraktion zu einer Bisimulation (r = gleiche Strichart)!
Übung 2 Verfeinere die gegebene Abstraktion derart, daß der abstrakte Pfad A B C D nicht mehr realisierbar ist! 1,2,3 r A 4,5,6 r B 7,8 r C 9,10,11 r D 1 4 8 11 6 2 9 5 3 7 10