Computergestützte Verifikation 14.6.2002 1 6. Abstraktion 2 Simulation ist Simulationsrelation, wenn für alle c,a,c’: Wenn c a und c c’ in C, so ex. ein a’ mit c’ a’ und a a’ in A C A 3 Simulation und Computation Tree rot gelb Bremse Gas grün 4 Existential Abstraction Sehr praktikabel: 1. Wähle abstrakte Zustandsmenge (nach Kriterien wie z.B. Bewahrung elementarer Eigenschaften) 2. Ergänze kanonisch eine Übergangsrelation rot gelb Bremse Gas grün 5 Beispiele 1. Vorzeichenabstraktion Nat {< 0 , 0 , > 0} 2. Logarithmische Abstraktion Nat Nat; i lg i = log2(i+1) 3. Bit-Abstraktion I AND/ OR/NOT R e g O I AND/ OR/NOT R e g O 6 Bit-Abstraktion I AND/ OR/NOT O T(x1...xn,x1’...xn’) = i1...im R(x1..xn,i1...im,x1’...xn’) R e g I AND/ OR/NOT R e g O T(x1..xj,x1’...xj’) = i1...im xj+1...xn xj+1’...xn’ R(x1...xn,i1...im,x1’...xn’) 7 Bisimulation Wenn sowohl als auch -1 Simulationsrelationen sind, heißen C und A bisimilar, und heißt Bisimulationsrelation “bisimilar” ist schärfer als “A simuliert C und C simuliert A”! 8 graphische Veranschaulichung Sei a a’. Daraus folgt für alle c: c a, es existiert c’: c c’ und c’ a’ (Bisimulation) es existiert c: c a es existiert c’: c c’ und c’ a’ (exist. Abstr.) 9 Beispiele für Bisimulationen 1. Symmetrien Wenn [s] [s’], so gibt es ein s” in [s’] mit s s” 2. Regionen (mit “Selbstschleifentrick” wie bei Zonen) 10 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. 11 Konstruktion von Bisimulationen Nicht jede abstrakte Zustandsmenge kann zu einem bisimilaren Transitionssystem ergänzt werden rot gelb Bremse Gas grün Konstruktion von bisimilaren Transitionssystemen aus abstrakter Zustandsmenge erfordert Abstraktionsverfeinerung 12 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 zum Zustand von Spieler 1 steht C simuliert A schwach schwache Bisimulation ( und -1 ..., wie gehabt) ... bewahrt CTL*-X Partial order reduction für CTL* liefert schwach bisimilares 13 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 14 7. Abstraktionsverfeinerung 7.1 allgemeine Abstraktionsverfeinerung geg.: Abstraktion ges: aussagekräftigere Abstraktion 7.2 Gegenbeispielgesteuerte Verfeinerung geg.: Abstraktion, Scheingegenbeispiel 15 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 16 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 17 Wo spalten? Bisimulation: gut schlecht Bewahrung von ACTL* in die “andere” Richtung: gut genug: “Core” Core muss sich wie Bisimulation verhalten 18 Beispiel: Zonen Wie spalten? Welche Uhrenstellung in Z1 hat Nachfolger in Z2? 1. 2. 3. 4. 5. 1. 2. 3. 4. Schnitt mit Constraint Nullstellen Schnitt mit Invariante des diskreten Nachfolgers Zeitverlauf Schnitt mit Invariante Schnitt mit Null Öffnung “nach oben” Schnitt mit Constraint Schnitt mit Zone Komplement nicht unbedingt konvex ggf. mehrere Zonen als Spaltprodukt lernen: brauchen Möglichkeit, abstrakten Vorgänger zu berechnen 19 Propagierung Spaltung eines abstrakten Zustandes kann weitere Spaltungen notwendig machen Propagation nach rückwärts... ... bis sich nix mehr ändert 20 Konsequenteste Umsetzung Beginne mit Entwickle Transitionssystem ausschliesslich per Verfeinerung Splitting Tree: dokumentiert Spaltgeschichte = Datenstruktur für Zustandsmenge (Zustand = Pfad im Splitting Tree) 21 7.2 Gegenbeispielgesteuerte Verfeinerung Algorithmus: 1. 2. 3. 4. 5. initiale Abstraktion Verifikation von f (aus ACTL*) im abstrakten System f gilt f gilt auch im konkreten System f gilt nicht abstraktes Gegenbeispiel 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 22 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 23 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 24 Scheingegenbeispiele erfüllbare Pfadformel nicht erfüllbare Pfadformel dead end state = erreichbar von einem konkreten Zustand im ersten abstrakten Zustand bad state = hat Nachfolger Verfeinerung = trenne dead end und bad states 25 Verfeinerungsproblem Welche (möglichst wenige) Variablen sichtbar machen, damit bad und dead end states getrennt werden? Optimale Lösungen algorithmisch schwer Approximationen, Heuristiken, .... 26 Eine Separationsidee d1 = (0,1,0,1) d2 = (1,1,1,0) b1 = (1,1,1,1) b2 = (0,0,0,1) 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 trenne 27 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 28 Übung 1 Verfeinere die gegebene Abstraktion zu einer Bisimulation ( = gleiche Strichart)! 29 Übung 2 Verfeinere die gegebene Abstraktion derart, daß der abstrakte Pfad A B C D nicht mehr realisierbar ist! 1,2,3 A 1 4,5,6 B 7,8 C 4 8 11 6 2 9 5 3 9,10,11 D 7 10 30