Abstract. This article presents the Two Variable Per Inequality abstract domain (TVPI domain for short). This so-called weakly-relational domain is able to express systems of linear inequalities where each inequality has at most two variables. The domain represents a sweet-point in the performance-cost tradeoff between the faster Octagon domain and the more expressive domain of general convex polyhedra. In particular, we detail techniques to closely approximate integral TVPI systems, thereby finessing the problem of excessively growing coefficients, yielding -to our knowledge -the only relational domain that combines linear relations with arbitrary coefficients and strongly polynomial performance.
Keywords: polyhedral analysis, integer programming, abstract interpretationStatic analysis methods have evolved from inferring prerequisite invariants for compiler optimisations to tools in their own right that are able to prove the absence of run-time errors of software. The abstract interpretation framework [21] provides a way of constructing and justifying program analyses. The key idea is to simulate each operation in a program with an abstract analog that operates on a description of the program state, rather than the state itself. The descriptions are chosen to trace a property of interest, for instance, an interval that encloses all possible values of a variable would be of value when reasoning about array bounds. These descriptions constitute what is known as an abstract domain. An abstract domain is usually presented as a lattice D, , , and the analysis itself is formulated as a set of recursive equations over D. The recursive equations are solved iteratively, until a fixpoint is reached which is detected using the ordering predicate . Each equation expresses how a program statement transforms the state at one program point to the state at another. Equations may be recursive because of loops in the program. The meet and join † This paper is a revised extract of the first author's PhD thesis [65], which, in turn, extends [72].