Download presentation
Presentation is loading. Please wait.
Published byMyles Jacobs Modified over 9 years ago
1
Program Analysis and Verification Spring 2015 Program Analysis and Verification Lecture 9: Abstract Interpretation I Roman Manevich Ben-Gurion University
2
Tentative syllabus Semantics Natural Semantics Structural semantics Axiomatic Verification Static Analysis Automating Hoare Logic Control Flow Graphs Equation Systems Collecting Semantics Abstract Interpretation fundamentals LatticesFixed-Points Chaotic Iteration Galois Connections Domain constructors Widening/ Narrowing Analysis Techniques Numerical Domains Alias analysis Interprocedural Analysis Shape Analysis CEGAR Crafting your own Soot From proofs to abstractions Systematically developing transformers 2
3
Collecting semantics in equational form A vector of variables R[0, …, k] one per input/output of a node – R[0] is for entry For node n with multiple predecessors add equation R[n] = {R[k] | k is a predecessor of n} For an atomic operation node R[m] S R[n] add equation R[n] = S R[m] Transform if b then S 1 else S 2 to ( assume b; S 1 ) or ( assume b; S 2 ) 3 if x > 0 x := x-1 entry exit R[0] R[1] R[2] R[4] R[3]
4
Agenda Semantic domains – Preorders – Partial orders (posets) – Pointed posets – Ascending/descending chains – The height of a poset – Join and Meet operators – Complete lattices – Constructing new lattices from old 4 Appendix A.
5
5 By Rama (Own work) [CC-BY-SA-2.0-fr (http://creativecommons.org/licenses/by-sa/2.0/fr/deed.en)], via Wikimedia Commons Abstract interpretation Theory [1977]
6
Abstract Interpretation [CC77] A very general mathematical framework for approximating semantics – Generalizes Hoare Logic – Generalizes weakest precondition calculus Allows designing sound static analysis algorithms – Usually compute by iterating to a fixed-point – Not specific to any programming language style Results of an abstract interpretation are (loop) invariants – Can be interpreted as axiomatic verification assertions and used for verification 6
7
Annotating programs Annotate(P, S) = case S is x:=aexpr return {P} x:=aexpr {F * [x:=aexpr] P} case S is S 1 ; S 2 let Annotate(P, S 1 ) be {P} A 1 {Q 1 } let Annotate(Q 1, S 2 ) be {Q 1 } A 2 {Q 2 } return {P} A 1 ; {Q 1 } A 2 {Q 2 } case S is if bexpr then S 1 else S 2 let P t = F[ assume bexpr] P let P f = F[ assume bexpr] P let Annotate(P t, S 1 ) be {P t } A 1 {Q 1 } let Annotate(P f, S 2 ) be {P f } A 2 {Q 2 } return {P} if bexpr then {P t } A 1 {Q 1 } else {P f } A 2 {Q 2 } {Q 1 Q 2 } case S is while bexpr do S N := N c := P // Initialize repeat let P t = F[ assume bexpr] N c let Annotate(P t, S) be {N c } A body {N} N c := N c N until N = Nc return {P} INV= {N} while bexpr do {P t } A body {F[ assume bexpr](N)} 7 Approximates concrete semantics sp(x:=aexpr, P) F * [x:=aexpr] Approximates disjunction { P’ } S { Q’ } { P } S { Q } [cons p ] if P P’ and Q’ Q
8
The big picture Use semantic domains to define both concrete semantics and abstract semantics Relate semantics in a sound way Interpret program over abstract semantics 8 set of states collecting semantics statement S set of states abstract representation of sets of states abstract semantics statement S abstract representation of sets of states meaning abstraction meaning abstraction
9
A theory of semantic domains 9 By Brett Jordan David Macdonald [CC-BY-2.0 (http://creativecommons.org/licenses/by/2.0)], via Wikimedia Commons 1. Approximating elements 2. Approximating sets of elements
10
Overall idea A semantic domain can be used to define properties (representations of predicates) – Also called abstract states Common representations – Logical formulas – Automata – Specialized graphs 10
11
A taxonomy of semantic domain types 11 Complete Lattice (D, , , , , ) Lattice (D, , , , , ) Join semilattice (D, , , ) Meet semilattice (D, , , ) Complete partial order (CPO) (D, , ) Partial order (poset) (D, ) Preorder (D, )
12
preorders 12
13
Preorder Let D be a set of elements We say that a binary order relation over D is a preorder if the following conditions hold for every d, d’, d’’ D – Reflexive: d d – Transitive: d d’ and d’ d’’ implies d d’’ There may exist d, d’ such that d d’ and d’ d yet d d’ 13
14
Preorder examples SAV-predicates – SAV-factoids = { x = y | x, y Var } { x = y + z | x, y, z Var } – SAV-predicates = 2 – Order relation 1: P 1 set P 2 iff P 1 P 2 – Order relation 2: P 1 imp P 2 iff P 1 P 2 – Which order relation is stronger (contains more pairs)? – Which order relation is easier to check? – What if both P 1 and P 2 are in the image of reduce? 14
15
SAV preorder 1: P 1 set P 2 iff P 1 P 2 15 {x=y}{x=x+x}{y=y+y} {} {y=x}{y=x+y}{y=y+x}{x=x+y}{x=y+x} {x=y, y=x}{x=y, x=x+x}{x=x+y, x=y+x} … {x=y, x=x+x, x=x+y} … {x=y, y=x, x=x+x, y=y+y, y=x+y, y=y+x, x=x+y, x=y+x} Var = {x, y}
16
SAV preorder 2: P 1 imp P 2 iff P 1 P 2 16 {x=y}{x=x+x}{y=y+y} {} {y=x}{y=x+y}{y=y+x}{x=x+y}{x=y+x} {x=y, y=x}{x=x+y, x=y+x} … {x=y, x=x+x, x=x+y} … {x=y, y=x, x=x+x, y=y+y, y=x+y, y=y+x, x=x+y, x=y+x} {x=y, x=x+x} Var = {x, y} …
17
Preorder examples CP-predicates – CP-factoids = { x = c | x Var, c Z } – CP-predicates = 2 – Order relation 1: P 1 set P 2 iff P 1 P 2 – Order relation 2: P 1 imp P 2 iff P 1 P 2 – Is there a difference? {x=5, x=7, x=9} {x=5, x=7} {x=5, x=7, x=9} {x=5, x=7} {x=5, x=7} {x=5, x=7, x=9} 17
18
CP preorder example 18 {x=-3}{x=-1}{x=0} {} {x=-2}{x=1}{x=2}{x=3} …… Var = {x}
19
CP preorder example 19 {x=-3}{x=3}{y=-5} {} {x=0}{y=0}{y=36} …… {x=-3, y=-5}{x=0, y=0}{x=3, y=36} … Var = {x, y}
20
The problem with preorders Equivalent elements have different representations – {x=y, x=a+b} S {Q} – {x=y, y=a+b} S {Q’} Leads to unpredictability Which result should our static analysis give? 20
21
The problem with preorders Equivalent elements have different representations – {x=y, x=a+b} assume y a+b {x=y, x=a+b} – {x=y, y=a+b} assume y a+b {false} Leads to unpredictability Which result should our static analysis give? 21
22
The problem with preorders Equivalent elements have different representations – {x=y, x=a+b} assume x a+b {false} – {x=y, y=a+b} assume x a+b {x=y, x=a+b} Leads to unpredictability Which result should our static analysis give? May turn a terminating analysis into a non- terminating one 22 In practice many static analyses still use preorders (taking extreme care to ensure termination)
23
Partial orders 23
24
Partially ordered sets (partial orders) A partially ordered set (Poset for short) is a pair (D, ) D is a set of elements – a semantic domain is a partial order between pairs of elements from D. That is : D D with the following properties, for all d, d’, d’’ in D – Reflexive: d d – Transitive: d d’ and d’ d’’ implies d d’’ – Anti-symmetric: d d’ and d’ d implies d = d’ If d d’ and d d’ we write d d’ 24 Makes it easier to choose the best element
25
Partially ordered sets (partial orders) A partially ordered set (Poset for short) is a pair (D, ) D is a set of elements – a semantic domain is a partial order between pairs of elements from D. That is : D D with the following properties, for all d, d’, d’’ in D – Reflexive: d d – Transitive: d d’ and d’ d’’ implies d d’’ – Anti-symmetric: d d’ and d’ d implies d = d’ If d d’ and d d’ we write d d’ 25
26
SAV partial order SAV-predicates – SAV-factoids = { x = y | x, y Var } { x = y + z | x, y, z Var } – SAV-predicates = 2 Order relation 1: P 1 set P 2 iff P 1 P 2 Is this a partial order? Order relation 2: P 1 imp P 2 iff P 1 P 2 that is models(P 1 ) models(P 2 ) Is this a partial order? Order relation 3: P 1 set* P 2 iff reduce(P 1 ) set reduce(P 2 ) Is this a partial order? 26
27
CP partial order CP-predicates – CP-factoids = { x = c | x Var, c Z } – CP-predicates = 2 Order relation 1: P 1 set P 2 iff P 1 P 2 Is it a partial order? Order relation 2: P 1 imp P 2 iff P 1 P 2 Is it a partial order? 27 Can we define a more precise partial order?
28
CP partial order CP-predicates – CP-factoids false = { x = c | x Var, c Z } – CP-predicates = 2 {false} – Define reduce : 2 2 reduce(P) = if exists {x=c 1, x=c 2 } P then {false} else P – false = { P 2 | P=reduce(P) } {false} Order relation: P 1 P 2 if P 1 P 2 or P 1 ={false} 28
29
Pointed poset A poset (D, ) with a least element is called a pointed poset – For all d D we have that d The pointed poset is denoted by (D, , ) We can always transform a poset (D, ) into a pointed poset by adding a special bottom element (D { }, { d | d D}, ) Example: false = { P 2 | P=reduce(P) } {false} 29
30
chains 30
31
Chains If d d’ and d d’ we write d d’ Similarly define d d’ Let (D, ) be a poset An ascending chain is a sequence x 1 x 2 … x k … A descending chain is a sequence x 1 x 2 … x k … The height of a poset is the length of the maximal ascending chain – What is the height of the SAV poset? – What is the height of the CP poset? 31
32
Ascending chain example 32 true false x=0 x0x0 x<0 x>0 x0x0
33
33 By Viviana Pastor (originally posted to Flickr as Harbour Bridge 1) [CC-BY-2.0 (http://creativecommons.org/licenses/by/2.0)], via Wikimedia Commons Joining elements
34
Bounds Let (D, ) be a poset Let X D be a set of elements from D An element d D is an upper bound (ub) of X iff for every x D we have that x d An element d D is a lower bound (lb) of X iff for every x D we have that d x An element d D is the least upper bound (lub) of X iff d is the minimal of all upper bounds of X An element d D is the greatest lower bound (glb) of X iff d is the maximal of all lower bounds of X 34
35
Bounds example 35 true false x=0 x0x0 x<0x>0 x0x0 the signs lattice (for variable x )
36
x 0 and true are upper bounds 36 true false x=0 x0x0 x<0 x>0 x0x0
37
x 0 is the least upper bound 37 true false x=0 x0x0 x<0 x>0 x0x0
38
Join (confluence) operator Assume a poset (D, ) Let X D be a subset of D (finite/infinite) The join of X is defined as – X = the least upper bound (LUB) of all elements in X if it exists – X = min { b | forall x X we have that x b} – The supremum of the elements in X – A kind of abstract union (disjunction) operator Properties of a join operator – Commutative: x y = y x – Associative: (x y) z = x (y z) – Idempotent: x x = x x y = y iff x y 38
39
Properties of join Can be used to define partial order x y = y iff x y Monotone: if y z then (x y) (x z) x = x x = 39
40
Meet operator Assume a poset (D, ) Let X D be a subset of D (finite/infinite) The meet of X is defined as – X = the greatest lower bound (GLB) of all elements in X if it exists – X = max { b | forall x X we have that b x} – The infimum of the elements in X – A kind of abstract intersection (conjunction) operator Properties of a join operator – Commutative: x y = y x – Associative: (x y) z = x (y z) – Idempotent: x x = x 40
41
Complete partial orders 41
42
Complete partial order (CPO) A CPO is a partial order where each ascending chain has a supremum 42
43
lattices 43
44
Complete lattice A complete lattice (D, , , , , ) is A set of elements D A partial order x y A join operator A meet operator 44
45
Join semilattice A complete lattice (D, , , ) is A set of elements D with A partial order x y A join operator 45
46
Meet semilattice A complete lattice (D, , , ) is A set of elements D with A partial order x y A meet operator 46
47
Powerset lattices For a set of elements X we define the powerset lattice for X as (2 X, , , , , X) – Notice it is a complete lattice For a set of program states State, we define the collecting lattice (2 State, , , , , State) 47
48
Composing lattices 48
49
One lattice per variable 49 true false x=0 x0x0 x<0x>0 x0x0 true false y=0 y0y0 y<0y>0 y0y0 How can we compose them?
50
Cartesian product 50
51
Cartesian product of complete lattices For two complete lattices L 1 = (D 1, 1, 1, 1, 1, 1 ) L 2 = (D 2, 2, 2, 2, 2, 2 ) Define the poset L cart = (D 1 D 2, cart, cart, cart, cart, cart ) as follows: – (x 1, x 2 ) cart (y 1, y 2 ) iff x 1 1 y 1 and x 2 2 y 2 – cart = ? cart = ? cart = ? cart = ? Lemma: L is a complete lattice Define the Cartesian constructor L cart = Cart(L 1, L 2 ) 51
52
Cartesian product example 52 true false x<0,y<0x<0,y=0x 0x=0,y<0x=0,y=0x=0,y>0x>0,y<0x>0,y=0x>0,y>0 x 0,y< 0 x 0,y< 0 x 0,y= 0 x 0,y= 0 x 0,y> 0 x 0,y> 0 x>0,y 0 … … x 0,y 0 x 0,y 0 x 0,y 0 x 0,y 0 x 0, truex 0, truetrue, y 0true, y 0 … ( false, false ) ( true, true ) How does it represent (x 0 y>0)? x<0, falsefalse, y>0 ………
53
Disjunctive completion 53
54
Disjunctive completion For a complete lattice L = (D, , , , , ) Define the Powerset lattice L = (2 D, , , , , ) = ? = ? = ? = ? = ? Lemma: L is a complete lattice L contains all subsets of D, which can be thought of as disjunctions of the corresponding predicates Define the disjunctive completion constructor L = Disj(L) 54
55
The base lattice CP false 55 {x=0} true {x=-1}{x=-2}{x=1}{x=2} …… false
56
The disjunctive completion of CP false 56 {x=0} true {x=-1}{x=-2}{x=1}{x=2} …… false {x=-2 x=-1}{x=-2 x=0}{x=-2 x=1}{x=1 x=2} ……… {x=0 x=1 x=2}{x=-1 x=1 x=-2} ……… … What is the height of this lattice?
57
The disjunctive completion of CP false 57 true false What is the height of this lattice? {x=0}{x=-1}{x=-2}{x=1}{x=2} …… {x=-2 x=-1}{x=-2 x=0}{x=-2 x=1}{x=1 x=2} ……… {x=0 x=1 x=2}{x=-1 x=1 x=-2} ……… {x is even} {x is odd} {x is prime} …
58
Relational product 58
59
Relational product of lattices L 1 = (D 1, 1, 1, 1, 1, 1 ) L 2 = (D 2, 2, 2, 2, 2, 2 ) L rel = (2 D 1 D 2, rel, rel, rel, rel, rel ) as follows: – L rel = ? 59
60
Relational product of lattices L 1 = (D 1, 1, 1, 1, 1, 1 ) L 2 = (D 2, 2, 2, 2, 2, 2 ) L rel = (2 D 1 D 2, rel, rel, rel, rel, rel ) as follows: – L rel = Disj(Cart(L 1, L 2 )) Lemma: L is a complete lattice What does it buy us? 60
61
Cartesian product example 61 How does it represent (x 0 y>0)? What is the height of this lattice? true false x<0,y<0x<0,y=0x 0x=0,y<0x=0,y=0x=0,y>0x>0,y<0x>0,y=0x>0,y>0 x 0,y< 0 x 0,y< 0 x 0,y= 0 x 0,y= 0 x 0,y> 0 x 0,y> 0 x>0,y 0 … … x 0,y 0 x 0,y 0 x 0,y 0 x 0,y 0 x 0, truex 0, truetrue, y 0true, y 0 … x<0, falsefalse, y>0 ………
62
Relational product example 62 true false (x 0 y>0) x0x0 x0x0 y0y0 y0y0 How does it represent (x 0 y>0)? (x 0 y=0)(x<0 y 0) (x<0 y 0) … What is the height of this lattice?
63
A lattice for collecting semantics 63
64
Collecting semantics 1 label0: if x <= 0 goto label1 x := x – 1 goto label0 label1: 2 3 4 5 if x > 0 x := x - 1 2 3 entry exit [x1][x1] [x1][x1] [x1][x1] [x0][x0] [x0][x0] [ x -1] [x2][x2] [x2][x2] [x2][x2] [x2][x2] [x3][x3] [x3][x3] [x3][x3] … … … 64 [ x -2] …
65
Defining the collecting semantics How should we represent the set of states at a single control-flow node by a lattice? How should we represent the sets of states at all control-flow nodes by a lattice? 65
66
Finite maps For a complete lattice L = (D, , , , , ) and finite set V Define the poset L V L = (V D, V L, V L, V L, V L, V L ) as follows: – f 1 V L f 2 iff for all v V f 1 (v) f 2 (v) – V L = ? V L = ? V L = ? V L = ? Lemma: L is a complete lattice Define the map constructor L V L = Map(V, L) 66
67
The collecting lattice Lattice for a given control-flow node v: ? Lattice for entire control-flow graph with nodes V: ? We will use this lattice as a baseline for static analysis and define abstractions of its elements 67
68
The collecting lattice Lattice for a given control-flow node v: L v =(2 State, , , , , State) Lattice for entire control-flow graph with nodes V: L CFG = Map(V, L v ) We will use this lattice as a baseline for static analysis and define abstractions of its elements 68
69
Equational definition of the semantics Define variables of type set of states for each control-flow node Define constraints between them 69 if x > 0 x := x - 1 2 3 entry exit R[entry] R[2] R[3] R[exit]
70
Equational definition of the semantics R[2] = R[entry] x:=x-1 R[3] R[3] = assume x>0 R[2] R[exit] = assume x 0 R[2] A recursive system of equations How can we approximate it using what we have learned so far? 70 if x > 0 x := x - 1 2 3 entry exit R[entry] R[2] R[3] R[exit]
71
An abstract semantics R[2] = R[entry] x:=x-1 # R[3] R[3] = assume x>0 # R[2] R[exit] = assume x 0 # R[2] A recursive system of equations 71 if x > 0 x := x - 1 2 3 entry exit R[entry] R[2] R[3] R[exit] Abstract transformer for x:=x-1
72
The meaning of sound analysis result R[2] R[entry] x:=x-1 # R[3] R[3] assume x>0 # R[2] R[exit] assume x 0 # R[2] A recursive system of inequations 72 if x > 0 x := x - 1 2 3 entry exit R[entry] R[2] R[3] R[exit]
73
Next lecture: abstract interpretation II
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.