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.
In this setting, the constraint solving procedure must be incremental while
yielding equality information. The usual methods of solving linear
arithmetic constraints are based on Fourier elimination which can be quite
expensive in practice.
Nelson presented a simple and 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,
the integration of integer variables,
and the generation of models from satisfiable tableaux.
Our algorithms are implemented in the ICS software package
distributed by SRI International.
gzipped postscript
or
postscript
or
pdf
BibTeX Entry
@techreport{RuessShankar:Simplex04,
TITLE = {Solving Linear Arithmetic Constraints},
AUTHOR = {Rue{\ss} and Natarajan Shankar},
MONTH = {January},
INSTITUTION = {SRI International, Computer Science Laboratory},
YEAR = {2004},
ADDRESS = {333 Ravenswood Ave, Menlo Park, CA, 94025},
NOTE = {revised, August 2004},
NUMBER = {CSL-SRI-04-01}
}
Harald Ruess:
ruess@csl.sri.com