Two Variables per Linear Inequality as an Abstract Domain

This paper explores the spatial domain of sets of inequalities where each inequality contains at most two variables - a domain that is richer than intervals and more tractable than general polyhedra. We present a complete suite of efficient domain operations for linear systems with two variables per inequality with unrestricted coefficients. We exploit a tactic in which a system of inequalities with at most two variables per inequality is decomposed into a series of projections - one for each two dimensional plane. The decomposition enables all domain operations required for abstract interpretation to be expressed in terms of the two dimensional case. The resulting operations are efficient and include a novel planar convex hull algorithm. Empirical evidence suggests that widening can be applied effectively, ensuring tractability.

[1]  Jeffrey C. Lagarias,et al.  The computational complexity of simultaneous Diophantine approximation problems , 1982, 23rd Annual Symposium on Foundations of Computer Science (sfcs 1982).

[2]  Antoine Mid The Octagon Abstract Domain , 2001 .

[3]  Antoine Miné,et al.  The octagon abstract domain , 2001, Proceedings Eighth Working Conference on Reverse Engineering.

[4]  Jacob M. Howe,et al.  Specialising Finite Domain Programs Using Polyhedra , 1999, ECOOP Workshops.

[5]  Antoine Miné,et al.  A New Numerical Abstract Domain Based on Difference-Bound Matrices , 2001, PADO.

[6]  Michael Karr,et al.  Affine relationships among variables of a program , 1976, Acta Informatica.

[7]  Ronald L. Graham,et al.  An Efficient Algorithm for Determining the Convex Hull of a Finite Planar Set , 1972, Inf. Process. Lett..

[8]  Joseph Naor,et al.  Simple and Fast Algorithms for Linear and Integer Programs With Two Variables per Inequality , 1994, SIAM J. Comput..

[9]  Raimund Seidel Convex Hull Computations , 2004, Handbook of Discrete and Computational Geometry, 2nd Ed..

[10]  V. Klee,et al.  HOW GOOD IS THE SIMPLEX ALGORITHM , 1970 .

[11]  Ernest Davis,et al.  Constraint Propagation with Interval Labels , 1987, Artif. Intell..

[12]  William H. Harrison,et al.  Compiler Analysis of the Value Ranges for Variables , 1977, IEEE Transactions on Software Engineering.

[13]  Sidnie Dresher Feit A Fast Algorithm for the Two-Variable Integer Programming Problem , 1984, JACM.

[14]  H. Raynaud Sur L'enveloppe convexe des nuages de points aleatoires dans Rn . I , 1970 .

[15]  Christian Buchta,et al.  On the Average Number of Maxima in a Set of Vectors , 1989, Inf. Process. Lett..

[16]  Yehoshua Sagiv,et al.  Automatic Termination Analysis of Logic Programs , 1997, ICLP.

[17]  Roberto Bagnara,et al.  Data-Flow Analysis for Constraint Logic-Based Languages , 1999 .

[18]  Antoine Miné,et al.  A Few Graph-Based Relational Numerical Abstract Domains , 2002, SAS.

[19]  Elliot K. Kolodner,et al.  Automatic Removal of Array Memory Leaks in Java , 2000, CC.

[20]  V. Pratt Two Easy Theories Whose Combination is Hard , 2002 .

[21]  H. T. Kung,et al.  On the Average Number of Maxima in a Set of Vectors and Applications , 1978, JACM.

[22]  N. V. Chernikoba Algorithm for discovering the set of all the solutions of a linear programming problem , 1968 .

[23]  Jeffrey C. Lagarias The Computational Complexity of Simultaneous Diophantine Approximation Problems , 1985, SIAM J. Comput..

[24]  C. G. Nelson An $n^{log n}$ algorithm for the two-variable-per-constraint linear programming satisfiability problem , 1978 .

[25]  Ken Kennedy,et al.  A technique for summarizing data access and its use in parallelism enhancing transformations , 1989, PLDI '89.

[26]  Philippe Granger,et al.  Static Analysis of Linear Congruence Equalities among Variables of a Program , 1991, TAPSOFT, Vol.1.

[27]  Warwick Harvey,et al.  Computing Two-Dimensional Integer Hulls , 1999, SIAM J. Comput..

[28]  Wang Yi,et al.  Clock Difference Diagrams , 1998, Nord. J. Comput..

[29]  H. L. Verge A Note on Chernikova's algorithm , 1992 .

[30]  Patrick Cousot,et al.  Comparing the Galois Connection and Widening/Narrowing Approaches to Abstract Interpretation , 1992, PLILP.

[31]  Henrik Reif Andersen,et al.  Difference Decision Diagrams , 1999, CSL.

[32]  Nicolas Halbwachs,et al.  Automatic discovery of linear restraints among variables of a program , 1978, POPL.

[33]  David A. Wagner,et al.  A First Step Towards Automated Detection of Buffer Overrun Vulnerabilities , 2000, NDSS.

[34]  Robert E. Shostak,et al.  Deciding Linear Inequalities by Computing Loop Residues , 1981, JACM.

[35]  Michael J. Maher,et al.  Beyond Finite Domains , 1994, PPCP.

[36]  Andy King,et al.  Inferring Argument Size Relationships with CLP(R) , 1996, LOPSTR.