Numerical Abstract Domain with Max Operator in Timing Analysis
Explore a numerical abstract domain based on expression abstraction and the Max operator with applications in timing analysis. The challenges in timing analysis, such as disjunctive and non-linear bounds, are discussed along with simple examples illustrating these concepts. The difficulty of proving termination in certain scenarios is also examined, emphasizing the computation of precise bounds.
Download Presentation
Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
E N D
Presentation Transcript
A Numerical Abstract Domain based on Expression Abstraction + Max Operator with Application in Timing Analysis Sumit Gulwani (MSR Redmond) Bhargav Gulavani (IIT Bombay, India)
Outline Timing Analysis = Compute symbolic complexity bounds of programs in terms of inputs (assuming unit cost for statements) Challenges in Timing Analysis Reduce Timing Analysis to Abstract Interpretation Extend linear domain with Expression Abstraction Extend linear domain with Max Operator 1
Timing Analysis Challenges Bounds for even simple programs may be Disjunctive (i.e., they involve max operators) Non-linear (polynomial, logarithmic, exponential) Sometimes even proving termination is hard. We would like to compute precise bounds. 2
Simple Examples may have Disjunctive Bounds. Bounds Simple(int n) x := 0; while (x<n) x++; Max (0,n) Simple2(int n,m) Assume(n>0); x := 0; y := 0; while (x<n) if (y<m) y++ else x++; n + Max(0,m) Simple3(int n, int m) Assume (n,m > 0); x := 0; y := 0; while (x<n || y<m) x++; y++; Max(n,m) 3
Simple Examples may have Non-linear bounds. Bounds ModularMultiply(int n) for (x:=0; x<n; x++) for (y:=0; y<n; y++); n2 ModularSquare(int n) for (x:=0; x<n; x++) for(y:=0; y<x; y++); n(n+1)/2 Simple4(int n) x := 0; y := 0; while (x<n) if (y<n) y++; else y := 0; x++; n2 4
Even proving termination may be non-trivial. while (x<n) { x := x+y; y := y+1; } Termination proof: lexicographic polyranking fns Our tool computes bound: sqrt{2n} + max(0,-2y0) + 1 while (x<y) { if (z>x) x++; else z++; } Termination proof: disjunctively well-founded ranking fns. Our tool computes bound: Max(0,y-x0) + Max(0,y-z0) 5
Wed also like to compute precise bounds. Assume n,m>0 and initial value of x,y is 0. while (x<n || y<m) { x++; y++; } Bound is max(n,m) while (x<n && y<m) { if (*) x++; else y++; } Bound is n+m while (x<n) { y++; if (y<m) y=0 else x++; } Bound is n m All examples above have same termination argument: Between any two successive (not necessarily consecutive) iterations: Either x increases and is bounded by n Or y increases and is bounded by m This implies a bound of n m in each case In contrast, we discover precise bounds for each of these. 6
Outline Challenges in Timing Analysis Reduce Timing Analysis to Abstract Interpretation Extend linear domain with Expression Abstraction Extend linear domain with Max Operator 7
Reduce Timing Analysis to Abstract Interpretation ctr := 0; while c do ctr := ctr+1; S while c do S Claim: Let u be an upper bound on loop counter ctr inside the loop. Then Max(0,u) denotes an upper bound on the number of loop iterations. 8
Example x := 0; y := n; ctr := 0; while (x < y) ctr := ctr+1; if (*) x := x+2; else y := y-2; Abstract Interpreter produces the loop invariant: 2*ctr = x + (n-y) x<y Projecting out x and y yields ctr n/2. Thus, Max{ 0, n/2 } is an upper bound on loop iterations. 9
Design of our Numerical domain We need to perform abstract interpretation over a numerical domain that can reason about non- linearity as well as disjunctions. Numerical Domain = Linear Arithmetic Domain (such as Polyhedra) lifted with Expression Abstraction (for non-linearity) and Max Operator (for handling disjunctions) 10
Outline Challenges in Timing Analysis Reduce Timing Analysis to Abstract Interpretation Extend linear domain with Expression Abstraction Extend linear domain with Max Operator 11
Extend Linear domain with Expression Abstraction Choose a set of expressions S over program variables V (closed under sub-expressions) Extended domain represents constraints over V [ S Define semantics of operators in S using directed inference rules (T, L, R) s.t. L and R are linear inequalities over expressions in T. If L holds, then R holds (as per the semantics of the operators used in T). {e1,e2,2e1,2e2} {e1,e2,log(e1),log(e2)} {ei, eei }i i ci ei c e 0 ) i ci eei ce e1 e2+c ) 2e1 2e2 2c e1 ce2 0 e1 0 e2) log(e1) log c + log(e2) 12
Transfer Functions of Extended Domain Transfer Functions for extended domain simply apply corresponding transfer function over given linear domain after saturating the inputs (which involves adding new linear relationships using rewrite rules). Saturate(A): do A := A; for each inference rule (T, L, R) for each match : T ! S if A ) L , then A := A R while (:(A)A ) && not tired) 13
Outline Challenges in Timing Analysis Reduce Timing Analysis to Abstract Interpretation Extend linear domain with Expression Abstraction Extend linear domain with Max Operator 14
Extend linear domain with Max Operator Choose a subset U of program variables V Typically U is set of inputs New domain represents constraints over V-U, but with richer constant terms, constructed using (linear combinations of) max-linear expressions over U Example: x + 2y Max(n+m, 2n+3) Max-linear expression over U is of the form Max(e1,..,en), where ei is linear over U 15
Transfer Functions of Extended Domain Transfer Functions make use of Witness Function based on Farkas lemma. Farkas Lemma Let e, ei be some linear arithmetic expressions without any constant term. If { ei 0 }i) e 0, then 9 i 0 s.t. e i iei We refer to ( i) as Witness({ei 0}i, e 0). Examples: Witness(y-2x 0 x 0, y 0) = (1,2) 16
Join Transfer Function Join(A, B): Let A be {ei fi}i [ei: linear over V-U, fi: max-linear over U] Let B be {ei fi }i As := {ei 0}i; Bs := {ei 0}i; Cs := Join(As ,Bs); Result := { e f | (e 0) 2 Cs} where f is as follows: ( i) := Witness(As, e 0); f := i i fi; ( i ) := Witness(Bs, e 0); f := i i f i; f := Max(f,f ); Correctness Proof: It can be shown that A ) e f and B ) e f Example: Let V be {y,x,n,m} and U be {n,m} Let A be y m and B be y 2x k x n Then, Join(A,B) is y max(m, k+2n) 17
Experiments Program Time (sec) 0.03 0.01 0.02 0.1 0.1 0.08 0.14 0.07 0.14 0.02 0.22 0.16 0.03 0.03 Upper Bound Expression Set Disjunction Sequential Non-linear ModularMultiply ModularSquare Log Fibonacci MergeSort p1 p2 p3 p4 p5 p6 Max(0,y-x0) + Max(0,y-z0) Max(0,n,m) sqrt(2n) + Max(0,-2y0)+1 n2 n(n+1)/2 log n 2n n (log n) 41 Max(0,z0) log(s) s2 m+1 N - - y2, y02, sqrt{n} jn, n2 j2, n2 log(n), log(x) 2n n (log n) - - log(i), log(m), log(s) s2, bs, ts - 18
Related Work Worst Case Execution Time Wilhelm, CAV 2008 (Focus on architectural details). Our focus is on loop bounds Non-linear (polynomial inequalities) invariant generation Sankaranarayanan et al, POPL 2004; Muller-Olm, Seidl, POPL 2004; Bagnara et al, SAS 2005 We allow any operator but over a fixed set of expressions Inference rule based reasoning for decision procedures (eg, Jhala, McMillan; CAV 2007) We show how to extend ideas to abstract interpretation. Disjunctive Numerical Domains Our algorithm finds a specific kind of disjunctive invariants using Farkas lemma. 19
Conclusion Timing Analysis using a numerical domain extended with Expression Abstraction (to handle non-linearity) Max Operator (to handle disjunctions) Part 2 of the talk @ HAV 2008 Data-structures Bonus: A different way to discover non-linear and disjunctive bounds using only a linear numerical domain, but in a CEGAR setting. 20