Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
1
Computergestützte Verifikation
2
Probleme bei der Softwareverifikation
komplexe Datentypen und Expressions Pointer und dynamische Datenstrukturen Prozeduren und Rekursion 4. Bibliotheken
3
Idee von Abstract Interpretation
Rechnen im konkretem Verband Rechnen in einem “passenden” abstrakten Verband Beispiele für abstrakte Verbände: Zahlenintervalle [a,c][b,d] = [max(a,b),min(c,d)] [a,c][b,d] = [min(a,b),max(c,d)] Boolesche Funktionen mit , Zonen mit Schnitt und konvexer Hülle der Vereinigung Kreuzprodukte beliebiger Verbände (, komponentenweise)
4
“passend” = Galois-Verbindung
Konkret: [C,,] Abstrakt: [A,,] Abstraktionsfunktion a: C A Konkretisierungsfunktion g: A C (a,g) ist Galoisverbindung, wenn a(x) Y gdw. x g(Y) Insbesondere: z g(a(z)) (x := z, Y := a(z) ) a(g(Z)) Z (x := g(Z)), Y := Z ) a – “präziseste Abstraktion” g – “liberalste Interpretation”
5
Widening = Zwischenergebnis bei Fixpunktberechnung bewußt vergrößern
Vorteil: Terminierung in endlich vielen Schritten Nachteil: berechneter Fixpunkt ist nicht notwendigerweise der kleinste Beispiel: Widening: instabile Grenzen auf min(- 0,1)/max(0,1,) [64,70] [32,71] [1, ] [0, ] [64,70] [63,71] [1, ] [0, ] [-, ]
6
Narrowing = den durch Widening entstandenen Schaden begrenzen:
Def.: ist Narrowing falls x y x y x y und für keine monoton fallende Kette x0, x1, ..., ist die Folge y0 := x0, yi+1 := yi x i+1 stark monoton fallend.
7
8.3 Shape Analysis Ziel: Abstrakte Repräsentation von Invarianten
dynamischer Datenstrukturen Mittel: Abstrakte Interpretation auf geeigneter Domain meist: “summary nodes” Liste mit mind. 1 Element x sm
8
Beispiel für Shape-Analysis
Insert in Liste: x : nichtleere Liste x malloc(y) y x x y -> n = x y x y x = y Coarsening xy
9
Etwas schwieriger Delete aus Liste x: nichtleere Liste
Materialisierung aus begleitenden Invarianten dann einfach: y = x; x = x -> n; free(y);
10
Begleitende Invarianten
sm(v) Location v repr. evt. mehr als ein Objekt x(v) Variable x zeigt auf Objekt v n(v1,v2) v1.n zeigt auf v2 sh(v) mehr als ein Pointer zeigt auf v r(v) v ist von einer Variable erreichbar (kein Garbage) rx(v) v ist von x erreichbar c(v) v liegt auf einem Zyklus cf.b(v) v.f -> b = &v (Doppellink) ... alles interpretiert z.B. in 3-wertiger Logik (ja – vielleicht – nein)
11
8.4 Slicing Ziel: Alle Programmteile streichen, die keinen Einfluß auf
verifizierte Eigenschaft haben weniger Variablen (= kleinere Zustände) + weniger Übergänge statisch: geg: Kriterium = (Variable, PC) dynamisch: geg: Kriterium + Eingabe
12
Beispiel statisch 1 read(n); 2 i := 1; 3 sum := 0; 4 product := 1;
5 while i <= n do sum := sum + 1; product := product * i; i := i + 1; end 9 write(sum); 10 write(product); 1 read(n); 2 i := 1; 4 product := 1; 5 while i <= n do product := product * i; i := i + 1; end 10 write(product); (product,10)
13
Beispiel dynamisch 1 read(n); 1 read(n); 2 i := 1; 2 i := 1;
3 while i <= n do if i mod 2 = 0 then x := 17; else x := 18; i := i + 1; end 8 write(x); 1 read(n); 2 i := 1; 3 while i <= n do if i mod 2 = 0 then x := 17; else 7 i := i + 1; end 8 write(x); (8,x,n=2)
14
Kontrollflußgraph start read(n) sum:=0 product:=1 i<=n stop
write(product) write sum sum:=sum+1 product := product*i i:=i+1
15
Fluss-Abhängigkeit i j x := ... :=...x... x DEF(i) x DEF(k)
x REF(i) j ist flussabhängig von i
16
Post-Dominanz i ist post-dominiert von j falls jeder Kontrollpfad von i zu STOP durch j geht i if j
17
Kontrollabhängigkeit
j von i kontrollabhängig falls es gibt einen Pfad von i nach j, so daß jeder Knoten außer i von j post-dominiert ist - ist ist von j nicht post-dominiert i i while j j stop stop
18
Iterative Lösung von Datenflußgleichungen
R(i) – relevante Variablen in Knoten i S relevante Statements B - relevante Verzweigungen R(i) += V falls Kriterium = (V,i) R(i) += {v} falls und entweder v R(j), v DEF(i), oder v REF(i), DEF(i) R(j) i j x := v R(j) j i x R(j) x := ...v...
19
Iterative ... Startwert für S:
Alle Statements, die Variablen definieren, die bei einem direkten Nachfolger relevant sind v := v R(j)
20
Iterative.... Kriterium(v,5) Beispiel 1 R {} {v} Beispiel 2 R
1 x:= {} 2 y:= x {x} 3 v := x {x} 4 z := v+1; {v} 5 output(v) {v} 1 v := 0; 2 v := 1; 3 x := v + 1; 4 y := v + 2; 5 output(v) S: {1,3} S: {2}
21
Iterative.... B := Alle Branch-Statements, von denen ein relevantes
Statement kontrollabhängig ist dann: für alle b in B: R(b) += REF(b) S += B ... und alles von vorn
22
Beispiel Kriterium: (v,5) R(0) {} {v} R(1) {} {v} {v,x} 1 v := 0
3 if x < 7 then v := 1 5 output(v) S(0):{1,4} S(1):{1,2,3,4} B: {3}
23
Zusammenfassung Softwareverifikation
essentiell: geeignete Abstraktion, Abstraktionsverfeinerung Kombination Model Checking – Static Analysis - Alias-Analyse - Abstract Interpretation - Shape Analysis - Slicing Viele Probleme, viele offen, aber auch Hoffnung Unentscheidbarkeit setzt Grenzen
24
Tools BANDERA BEBOP, C2BP JPF
25
9. Sonstiges Ziel: In einigen weiteren Domains Tragfähigkeit der
gelernten Konzepte testen
26
9.1 Hybride Systeme hybrid = kontinuierliche + diskrete Variablen
Hybrider Automat: h>= max h’ [ -0.8,0.9] h’ [ -0.5,0.7] h <= min Auslaufen Einlaufen (Der hier ist ein linearer Automat: x’ [c1,c2])
27
Hybrid vs. Timed vs Stopwatch
Timed Automata sind hybride Automaten: c’ = 1 in allen Zuständen Stopwatch-Automata sind Hybride Automaten: c’ = 1 oder c’ = 0 in allen Zuständen Erreichbarkeit für hybride Automaten unentscheidbar
28
Verifikation linearer hybrider Automaten
geometrische Abstraktionen, z.B. Polyeder – analog Zonen Tool: HyTech (Berkeley) mehrere andere geometrische Formen, u.a. Ellipsen
29
Verifikation allg. hybrider Automaten
1 8 5 “Flowpipe” 3 9 6 4 3,6,7 2 4 7 10 numerische Verfahren Fehlerbetrachtung notwendig Tool: CheckMate (CMU)
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.