program verification using probabilistic techniques sumit gulwani microsoft research invited talk:...

41
Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula and Nebojsa Jojic

Upload: autumn-snyder

Post on 26-Mar-2015

220 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

Program Verification using Probabilistic Techniques

Sumit GulwaniMicrosoft Research

Invited Talk: VSTTE WorkshopAugust 2006

Joint work with George Necula and Nebojsa Jojic

Page 2: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

2

Probabilistic Techniques

• Used successfully in several areas of computer science.• Yields more efficient, precise, even simpler algorithms.• Technique 1: Random Interpretation

– Discovers program invariants– Monte Carlo Algorithm: May generate invalid invariants

with a small probability. Running time is bounded.– “Random Testing” + “Abstract Interpretation”

• Technique 2: Simulated Annealing– Discovers proof of validity/invalidity of a Hoare triple.– Las Vegas Algorithm: Generates a correct proof. Running

time is probabilistic.– “Forward Analysis” + “Backward Analysis”

Page 3: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

3

Random Interpretation

= Random Testing + Abstract Interpretation

Random Testing:• Test program on random inputs• Simple, efficient but unsound (can’t prove absence of bugs)

Abstract Interpretation:• Class of deterministic program analyses• Interpret (analyze) an abstraction (approximation) of program

• Sound but usually complicated, expensive

Random Interpretation:• Class of randomized program analyses• Almost as simple, efficient as random testing• Almost as sound as abstract interpretation

Page 4: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

4

a := 0; b := i;

a := i-2; b := 2;

c := b – a; d := i – 2b;

assert(c+d = 0); assert(c = a+i)

c := 2a + b; d := b – 2i;

True False

FalseTrue

*

*

Example 1

Page 5: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

5

a := 0; b := i;

a := i-2; b := 2;

c := b – a; d := i – 2b;

assert(c+d = 0); assert(c = a+i)

c := 2a + b; d := b – 2i;

True False

FalseTrue

*

*

Example 1: Random Testing

• Need to test blue path to falsify second assertion.

• Chances of choosing blue path from set of all 4 paths are small.

• Hence, random testing is unsound.

Page 6: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

6

a+b=i

a+b=i, c=-d

a=i-2, b=2

a+b=i c=2a+b, d=b-2ia+b=i

c=b-a, d=i-2b

a=0, b=i

a := 0; b := i;

a := i-2; b := 2;

c := b – a; d := i – 2b;

assert(c+d = 0); assert(c = a+i)

c := 2a + b; d := b – 2i;

True False

FalseTrue

*

*

Example 1: Abstract Interpretation

• Computes invariant at each program point.

• Operations are usually complicated and expensive.

Page 7: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

7

a := 0; b := i;

a := i-2; b := 2;

c := b – a; d := i – 2b;

assert(c+d = 0); assert(c = a+i)

c := 2a + b; d := b – 2i;

True False

FalseTrue

*

*

Example 1: Random Interpretation

• Choose random values for input variables.

• Execute both branches of a conditional.

• Combine values of variables at join points.

• Test the assertion.

Page 8: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

8

Random Interpretation: Outline

• Random Interpretation

Linear arithmetic (POPL 2003)

– Uninterpreted functions (POPL 2004)

– Inter-procedural analysis (POPL 2005)

Page 9: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

9

Linear relationships in programs with linear assignments

• Linear relationships (e.g., x=2y+5) are useful for– Program correctness (e.g. buffer overflows)– Compiler optimizations (e.g., constant and copy

propagation, CSE, Induction variable elimination etc.)

• “programs with linear assignments” does not mean inapplicability to “real” programs– “abstract” other program stmts as non-

deterministic assignments (standard practice in program analysis)

Page 10: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

10

Basic idea in random interpretation

Generic algorithm:

• Choose random values for input variables.

• Execute both branches of a conditional.

• Combine the values of variables at join points.

• Test the assertion.

Page 11: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

11

Idea #1: The Affine Join operation

w = 7

a = 2b = 3

a = 4b = 1

a = 7(2,4) = -10b = 7(3,1) = 15

• Affine join of v1 and v2 w.r.t. weight w

w(v1,v2) ´ w v1 + (1-w) v2

• Affine join preserves common linear relationships (a+b=5)

• It does not introduce false relationships w.h.p.

Page 12: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

12

Idea #1: The Affine Join operation

• Affine join of v1 and v2 w.r.t. weight w

w(v1,v2) ´ w v1 + (1-w) v2

• Affine join preserves common linear relationships (a+b=5)• It does not introduce false relationships w.h.p.• Unfortunately, non-linear relationships are not preserved

(e.g. a £ (1+b) = 8)

w = 5

a = 5(2,4) = -6b = 5(3,1) = 11

w = 7

a = 2b = 3

a = 4b = 1

a = 7(2,4) = -10b = 7(3,1) = 15

Page 13: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

13

Geometric Interpretation of Affine Join

a

ba + b =

5

b = 2

(a = 2, b = 3)

(a = 4, b = 1)

: State before the join

: State after the join

satisfies all the affine relationships that are satisfied by both (e.g. a + b = 5)

Given any relationship that is not satisfied by any of (e.g. b=2), also does not satisfy it with high probability

Page 14: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

i=3, a=0, b=3

i=3

a := 0; b := i;

a := i-2; b := 2;

c := b – a; d := i – 2b;

assert (c+d = 0); assert (c = a+i)

i=3, a=-4, b=7

i=3, a=-4, b=7c=23, d=-23

c := 2a + b; d := b – 2i;

i=3, a=1, b=2

i=3, a=-4, b=7c=-1, d=1

i=3, a=-4, b=7 c=11, d=-11

False

False

w1 = 5

w2 = 2

True

True*

*

Example 1

• Choose a random weight for each join independently.

• All choices of random weights verify first assertion

• Almost all choices contradict second assertion

Page 15: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

15

Correctness of Random Interpreter R

• Completeness: If e1=e2, then R ) e1=e2

– assuming non-det conditionals

• Soundness: If e1e2, then R e1 = e2

– error prob. ·

• j : number of joins• d: size of set from which random values are

chosen• k: number of points in the sample

– If j = 10, k = 4, d ¼ 232, then error ·

Page 16: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

16

Proof Methodology

Proving correctness was the most complicated part in this work. We used the following methodology.

• Design an appropriate deterministic algorithm (need not be efficient)

• Prove (by induction) that the randomized algorithm simulates each step of the deterministic algorithm with high probability.

Page 17: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

17

Random Interpretation: Outline

• Random Interpretation

– Linear Arithmetic (POPL 2003)

Uninterpreted functions (POPL 2004)

– Inter-procedural analysis (POPL 2005)

Page 18: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

18

Problem: Global value numbering

a := 5;x := a*b;y := 5*b;z := b*a;

a := 5;x := F(a,b);y := F(5,b);z := F(b,a);

Abstraction

• x=y and x=z• Reasoning about multiplication is undecidable

• only x=y• Reasoning is decidable but tricky in presence of joins

• Axiom: If x1=y1 and x2=y2, then F(x1,x2)=F(y1,y2)

• Goal: Detect expression equivalence when program operators are abstracted using “uninterpreted functions”

• Application: Compiler optimizations, Translation validation

Page 19: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

19

Random Interpretation: Outline

• Random Interpretation

– Linear arithmetic (POPL 2003)

– Uninterpreted functions (POPL 2004)

Inter-procedural analysis (POPL 2005)

Page 20: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

20

Example 1

a := 0; b := i;

a := i-2; b := 2;

c := b – a; d := i – 2b;

assert (c + d = 0); assert (c = a + i)

c := 2a + b; d := b – 2i;

True False

False

•The second assertion is true in the context i=2.

•Interprocedural Analysis requires computing procedure summaries.

True

*

*

Page 21: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

i=2

a=0, b=i

a := 0; b := i;

a := i-2; b := 2;

c := b – a; d := i – 2b;

assert (c+d = 0); assert (c = a+i)

a=8-4i, b=5i-8

a=8-4i, b=5i-8c=21i-40, d=40-21i

c := 2a + b; d := b – 2i;

a=i-2, b=2

a=8-4i, b=5i-8c=8-3i, d=3i-8

a=8-4i, b=5i-8 c=9i-16, d=16-9i

False

False

w1 = 5

w2 = 2

Idea: Keep input variables symbolic

•Do not choose random values for input variables (to later instantiate by any context).

• Resulting program state at the end is a random procedure summary.

a=0, b=2c=2, d=-2

True

True

*

*

Page 22: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

22

Experimental measure of error

The % of incorrect relationships decreases with increase in • S = size of set from which random values are chosen.• N = # of random summaries used.

2 95.5 95.5 95.5

3 64.3 3.2 0

4 0.2 0 0

5 0 0 0

6 0 0 0

S

N

The experimental results are better than what is predicted by theory.

210 216 231

Page 23: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

23

Simulated Annealing

Problem: Given a program with a pre/post conditions, discover proof of validity/invalidity.

• Proof is in the form of an invariant at each program point that can be locally verified.

• Key Idea:– Initialize invariants at all program points to anything.– Pick a random program point whose invariant is not

locally consistent and update it to make it less inconsistent.

Page 24: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

24

Simulated Annealing: Outline

• Simulated Annealing

Inconsistency Measure & Penalty Function

– Algorithm

– Experiments

Page 25: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

25

Inconsistency Measure for an Abstract Domain

• Let A be an abstract domain with ) as the partial order and as the concretization function.

• An inconsistency measure IM: A £ A ![0,1] satisfies:– IM(1,2) = 0 iff 1 ) 2

– IM is monotonically decreasing in its first argument– IM is monotonically increasing in its second argument

• IM is a monotonic (increasing) measure of (1) - (2) [set of states that violate 1 ) 2]. The more strictly monotonic IM is, the more smooth it is.

Page 26: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

26

Example of a Smooth Inconsistency Measure

Let A be the abstract domain of Boolean formulas (with the usual implication as the partial order).

Let 1 ´ a1 Ç … Ç an in DNF

and 2 ´ b1 Æ … Æ bm in CNF

IM(1, 2) = IM(ai,bj)

where IM(ai,bj) = 0, if ai ) bj

= 1, otherwise

Page 27: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

27

Penalty Function

Penalty(I,) is a measure of how much inconsistent is I with respect to the invariants at neighbors of .

Penalty(I,) = IM(Post(), I) + IM(I,Pre()) • Post() is the strongest postcondition of the

invariants at the predecessors of at .• Pre() is the weakest precondition of the invariants

at the successors of at .

Page 28: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

28

Example of Penalty Function

• Penalty(I, 2) = IM(Post(2), I) + IM(I, Pre(2))

I

Q

P

R

c

1

• Post(2) = StrongestPost(P,s)

• Pre(2) = (c ) Q) Æ (: c ) R)

s

Since Post() and Pre() may not belong to A, we define:• IM(Post(), I) = Min {IM(I1,I) | I12A, I1 overapproximates Post()}

• IM(I, Pre()) = Min {IM(I,I2) | I22A, I2 underapproximates Pre()}

Page 29: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

29

Simulated Annealing: Outline

• Simulated Annealing

– Inconsistency Measure & Penalty Function

Algorithm

– Experiments

Page 30: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

30

Algorithm

• Search for proof of validity and invalidity in parallel.

• Same algorithm with different boundary conditions.

• Proof of Validity

– Ientry = Pre

– Iexit = Post

• Proof of Invalidity

– Ientry Æ Pre is satisfiable

– Iexit = : Post

– This assumes that program terminates on all inputs.

Page 31: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

31

Algorithm (Continued)

• Initialize invariant Ij at program point j to anything.

• While penalty at some program point is not 0:

– Choose j randomly s.t. Penalty(Ij, j) 0.

– Update Ij s.t. Penalty(Ij,j) is minimized.

• More precisely, Ij is chosen randomly with probability inversely proportional to Penalty(Ij,j).

Page 32: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

32

Interesting Aspects of the Algorithm

• Combination of Forward & Backward Analysis

• No distinction between forward & backward information

• Random Choices– Program point to update– Invariant choice

Page 33: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

33

Simulated Annealing: Outline

• Simulated Annealing

– Inconsistency Measure & Penalty Function

– Algorithm

Experiments

Page 34: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

34

Example 2

y := 50;

y = 100

False

x := x +1;

x := x +1;y := y +1;

x < 50

x <100

True

True False

1

2

3

4

5

6

7

8

x = 0

Prog. Point

Invariant

1 x=0 Æ y=50

2 x·50 )y=50 Æ 50·x )x=y Æ x·100

3 x·50 )y=50 Æ 50·x )x=y Æ x<100

4 x<50 Æ y=50

5 x·50 Æ y=50

6 50·x<100 Æ x=y

7 50<x·100 Æ x=y

8 x·50 )y=50 Æ 50·x )x=y Æ x·100

Proof of Validity

Page 35: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

35

Stats: Proof vs Incremental Proof of Validity

• Black: Proof of Validity• Grey: Incremental Proof of Validity• Incremental proof requires fewer updates

Page 36: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

36

Stats: Different Sizes of Boolean Formulas

• Grey: 5*3, Black: 4*3, White: 3*2• n*m denotes n conjuncts & m disjuncts• Larger size requires fewer updates

Page 37: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

37

Example 3

x := 0; m := 0;

n· 0 Ç 0· m < n

False

m := x;

x := x +1;

*

x < n

True

1

2

3

4

6

5

7

8

true

Prog. Point

Invariant

1 x=0 Æ m=0

2 n· 0 Ç (0·x Æ 0·m<n)

3 n· 0 Ç (0·x<n Æ 0·m<n)

4 n· 0 Ç (0·x<n Æ 0·m<n)

5 n· 0 Ç (0·x<n Æ 0·m<n)

6 n· 0 Ç (0·x<n Æ 0·m<n)

7 n· 0 Ç (0·x<n Æ 0·m<n)

8 n· 0 Ç (0·x·n Æ 0·m<n)

Proof of Validity

Page 38: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

38

Stats: Proof of Validity

• Example 2 is “easier” than Example 1.• Easier example requires fewer updates.

Page 39: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

39

Example 2: Precondition Modified

Prog. Point

Invariant

0 x¸100

1 x¸100 Æ y=50

2 x¸100 Æ y=50

3 false

4 false

5 false

6 false

7 false

8 false

Proof of Invalidity

y := 50;

y = 100

False

x := x +1;

x := x +1;y := y +1;

x < 50

x <100

True

True False

1

2

3

4

5

6

7

8

true

Page 40: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

40

Stats: Proof of Invalidity

Page 41: Program Verification using Probabilistic Techniques Sumit Gulwani Microsoft Research Invited Talk: VSTTE Workshop August 2006 Joint work with George Necula

Conclusion

Lessons Learned

• Randomization buys efficiency and simplicity.

• Randomization suggests ideas for deterministic algorithms.

• Combining randomized and symbolic techniques is powerful.

Summary

• Random Interpretation:

•Linear Arithmetic: Affine Joins

•Uninterpreted Functions: Random Linear Interpretations

•Interprocedural Analysis: Symbolic Input Variables

• Simulated Annealing:

• Smooth Inconsistency Measure for an abstract domain