Solving Linear Arithmetic Constraints


Authors

Harald Rueß and Natarajan Shankar

Abstract

Linear arithmetic constraints in the form of equalities and inequalities constitute the vast majority of proof obligations that arise in embedded applications of theorem proving such as extended typechecking, software and hardware verification, and compiler optimization. Such constraints involve the conjunction of equalities, inequalities, and disequalities over arithmetic, uninterpreted functions, and other datatypes. Nelson presented a practical scheme for solving linear inequalities based on the simplex algorithm for linear programming. We extend Nelson's version of the simplex algorithm in a number of ways. Among these extensions are an improved treatment of the combination of restricted (non-negative slack) and unrestricted variables, a method for adding equalities and disequalities to a simplex tableau, an optimized method for propagating equality information, and efficient techniques for generating proofs and models. Our algorithms are supported by simple and rigorous correctness arguments.

gzipped postscript or postscript or PDF

BibTeX Entry

submitted for publication, Mar 4 2005

Harald Ruess: ruess@csl.sri.com