Presentation is loading. Please wait.

Presentation is loading. Please wait.

Aditya Nori Rahul Sharma MSR India Stanford University.

Similar presentations


Presentation on theme: "Aditya Nori Rahul Sharma MSR India Stanford University."— Presentation transcript:

1 Aditya Nori Rahul Sharma MSR India Stanford University

2  Prove termination of a program  Program terminates if all loops terminate  Hard problem, undecidable in general  Need to exploit all available information

3  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

4 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

5 … while … … while … … while … print x print y … while … print x print y Data … while … … assert … … while … … assert … x=1, y=3 ML

6 … while … … while … … while … print x print y … while … print x print y Data … while … … assert … … while … … assert … x=1, y=3 ML

7 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

8 … while … … while … … while … print x print y … while … print x print y Data … while … … assert … … while … … assert … x=1, y=3 ML

9 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)

10 … while … … while … … while … print x print y … while … print x print y Data … while … … assert … … while … … assert … x=1, y=3 ML

11

12

13

14

15 … while … … while … … while … print x print y … while … print x print y Data … while … … assert … … while … … assert … x=1, y=3 ML

16 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

17 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

18 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

19

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

21  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

22

23

24  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, …

25  Use tests for termination proofs  Infer bounds and invariants using QP  Use off-the-shelf assertion checkers to validate  Future work: disjunctions, non-termination

26 a = i ; b = j ; while(i


Download ppt "Aditya Nori Rahul Sharma MSR India Stanford University."

Similar presentations


Ads by Google