Aditya Nori Rahul Sharma MSR India Stanford University.

26
Termination Proofs from Tests Aditya Nori Rahul Sharma MSR India Stanford University

Transcript of Aditya Nori Rahul Sharma MSR India Stanford University.

Page 1: Aditya Nori Rahul Sharma MSR India Stanford University.

Termination Proofs from Tests

Aditya Nori Rahul Sharma MSR India Stanford

University

Page 2: Aditya Nori Rahul Sharma MSR India Stanford University.

Goal

Prove termination of a program

Program terminates if all loops terminate

Hard problem, undecidable in general

Need to exploit all available information

Page 3: Aditya Nori Rahul Sharma MSR India Stanford University.

Tests

Previous techniques are static Tests are a neglected source of information

Tests have previously been used Safety properties, empirical complexity, …

This work, use tests for termination proofs

Page 4: Aditya Nori Rahul Sharma MSR India Stanford University.

Example: GCD

gcd(int x,int y) assume(x>0 && y>0); while( x!=y ) do if( y > x ) y = y–x; if( x > y) x = x-y; od return x;

x=1, y=1

x=2, y=1

Page 5: Aditya Nori Rahul Sharma MSR India Stanford University.

Infer-and-Validate Approach

…while ……

…while ……

(1,1)(2,1)

…while … print x print y

…while … print x print y

DataData

…while ……assert …

…while ……assert …

x=1, y=3

ML

Page 6: Aditya Nori Rahul Sharma MSR India Stanford University.

Infer-and-Validate Approach

…while ……

…while ……

(1,1)(2,1)

…while … print x print y

…while … print x print y

DataData

…while ……assert …

…while ……assert …

x=1, y=3

ML

Page 7: Aditya Nori Rahul Sharma MSR India Stanford University.

Instrument the Program

gcd(int x, int y) assume(x>0 && y>0); a := x; b := y; c := 0; while( x!=y ) do c := c + 1; if( y > x ) y := y–x; if( x > y) x := x-y; od print ( a, b, c );

New variables to capture initial values

Introduce a loop counter

Print values of input variables and counter

Page 8: Aditya Nori Rahul Sharma MSR India Stanford University.

Infer-and-Validate Approach

…while ……

…while ……

(1,1)(2,1)

…while … print x print y

…while … print x print y

DataData

…while ……assert …

…while ……assert …

x=1, y=3

ML

Page 9: Aditya Nori Rahul Sharma MSR India Stanford University.

Generating Data

gcd(int x, int y) assume(x>0 && y>0); a := x; b := y; c := 0; while( x!=y ) do c := c + 1; if( y > x ) y := y–x; if( x > y) x := x-y; od print( a, b, c)

For on inputs ,the loop iterates times

Infer a bound using and

Page 10: Aditya Nori Rahul Sharma MSR India Stanford University.

Infer-and-Validate Approach

…while ……

…while ……

(1,1)(2,1)

…while … print x print y

…while … print x print y

DataData

…while ……assert …

…while ……assert …

x=1, y=3

ML

Page 11: Aditya Nori Rahul Sharma MSR India Stanford University.

Regression

Predict number of iterations (final value of c) As a linear expression in a and b

Find

Find

But we want ▪ Add as a constraint

Solvable by quadratic programming

Page 12: Aditya Nori Rahul Sharma MSR India Stanford University.

Quadratic Program (QP)

The quadratic program is:

Solved in MATLAB quadprog(A’*A,-A’*C,-A,-C)

For gcd example, Bound

Page 13: Aditya Nori Rahul Sharma MSR India Stanford University.

Naïve Regression

Page 14: Aditya Nori Rahul Sharma MSR India Stanford University.

Quadratic Program

Page 15: Aditya Nori Rahul Sharma MSR India Stanford University.

Infer-and-Validate Approach

…while ……

…while ……

(1,1)(2,1)

…while … print x print y

…while … print x print y

DataData

…while ……assert …

…while ……assert …

x=1, y=3

ML

Page 16: Aditya Nori Rahul Sharma MSR India Stanford University.

Verification Burden

Bound:

Difficult to validate

Infer invariants from tests

assume(x>0 && y>0);a := x; b := y;c := 0; while( x!=y ) do c := c + 1; if( y > x ) y := y–x; if( x > y) x := x-y; assert(c <= a+b-2);od

Page 17: Aditya Nori Rahul Sharma MSR India Stanford University.

Regression for Invariant

assume(x>0 && y>0);a := x; b := y; c := 0; while( x!=y ) do print(c, a, b, x, y); c := c + 1; if( y > x ) y := y–x; if( x > y) x := x-y; assert(c <= a+b-2);od

Predict a bound on c

Same tests, more data

Solve same QP

has five columns [1,a,b,x,y]

has c at every iteration

Page 18: Aditya Nori Rahul Sharma MSR India Stanford University.

Free Invariant Obtain

Add as a free invariant

Use if checker can prove

Otherwise discard

assume(x>0 && y>0);a:=x; b:=y; c := 0; free_inv(c<=a+b-x-y);while( x!=y ) do c := c + 1; if( y > x ) y := y – x; if( x > y) x := x-y; assert(c <= a+b-2 );od

Page 19: Aditya Nori Rahul Sharma MSR India Stanford University.

Validate

Give program to assertion checker

Inductive invariant for gcd example:

If check fails then return a cex as a new test

Page 20: Aditya Nori Rahul Sharma MSR India Stanford University.

Non-linear Example

u := x;v := y;w := z;while ( x >= y ) do if ( z > 0 ) z := z-1; x := x+z; else y := y+1;od

Given degree 2, Bound: After rounding:

Page 21: Aditya Nori Rahul Sharma MSR India Stanford University.

Assertion Checker

Requirements from assertion checker: Handle non-linear arithmetic Consume free invariants Produce tests as counter-examples

Micro-benchmarks: Use SGHAN’13 Handles non-linear arithmetic, no counter-

examples

Windows Device Drivers: Use Yogi (FSE’ 06) Cannot handle non-linear, produce counter-

examples

Page 22: Aditya Nori Rahul Sharma MSR India Stanford University.

Micro-benchmarks

Page 23: Aditya Nori Rahul Sharma MSR India Stanford University.

Experiments with WDK

Page 24: Aditya Nori Rahul Sharma MSR India Stanford University.

Related Work

Regression: Goldsmith et al. ‘07 , Huang et al. ’10, …

Mining specifications from tests: Dallmeier et

al. `12,…

Termination: Cousot `05, ResAna, Lee et al. ’12, …

Bounds analysis: SPEED, WCET, Gulavani et al. `08, …

Invariant inference: Daikon, InvGen, Nguyen et al.`12, …

Page 25: Aditya Nori Rahul Sharma MSR India Stanford University.

Conclusion

Use tests for termination proofs

Infer bounds and invariants using QP

Use off-the-shelf assertion checkers to validate

Future work: disjunctions, non-termination

Page 26: Aditya Nori Rahul Sharma MSR India Stanford University.

Disjunctions Example

a = i ; b = j ;while(i<M || j<N) i = i+1; j = j+1;

Partition using predicates

Control flow refinement Sharma et al. ’11