Modular Arithmetic Decision Procedure

All integer data types in programs (such as int, short, byte) have an underlying finite representation in hardware. This finiteness can result in subtle integer-overflow errors that are hard to reason about both for humans and analysis tools alike. As a first step towards finding such errors automatically, we will describe two modular arithmetic decision procedures for reasoning about bounded integers. We show how to deal with modular arithmetic operations and inequalities for both linear and non-linear problems. Both procedures are suitable for integration with Nelson-Oppen framework [1, 2, 3]. The linear solver is composed of Muller-Seidl algorithm [4] and an arbitrary integer solver for solving preprocessed congruences and inequalities. For the non-linear problems we use Newton’s p-adic iteration algorithm to progressively reason about the satisfiability of the input constraints modulo 2, for increasing k. We use a SAT solver only for the base case when k = 1. According to our knowledge, this is the first Nelson-Oppen decision procedure capable of reasoning about multiplication over bounded integers without converting the entire problem to a SAT instance.

[1]  B. F. Caviness,et al.  Proceedings of the fourth ACM symposium on Symbolic and algebraic computation , 1976 .

[2]  David Y. Y. Yun,et al.  Algebraic algorithms using p-adic constructions , 1976, SYMSAC '76.

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

[4]  Charles Gregory Nelson,et al.  Techniques for program verification , 1979 .

[5]  Richard Zippel Newton's iteration and the sparse Hensel algorithm (Extended Abstract) , 1981, SYMSAC '81.

[6]  Jon Postel,et al.  Transmission Control Protocol , 1981, RFC.

[7]  Robert T. Braden,et al.  Requirements for Internet Hosts - Communication Layers , 1989, RFC.

[8]  Richard Zippel,et al.  Effective polynomial computation , 1993, The Kluwer international series in engineering and computer science.

[9]  Gerardus Sierksma,et al.  Linear and integer programming - theory and practice , 1999, Pure and applied mathematics.

[10]  Harald Ruess,et al.  An Efficient Decision Procedure for the Theory of Fixed-Sized Bit-Vectors , 1997, CAV.

[11]  Louis Goubin,et al.  Trapdoor one-way permutations and multivariate polynominals , 1997, ICICS.

[12]  Joachim von zur Gathen,et al.  Modern Computer Algebra , 1998 .

[13]  David L. Dill,et al.  A decision procedure for bit-vector arithmetic , 1998, Proceedings 1998 Design and Automation Conference. 35th DAC. (Cat. No.98CH36175).

[14]  S. Hossain On the computation of sparse Jacobian matrices and Newton steps , 1998 .

[15]  Hans van Maaren,et al.  A two phase algorithm for solving a class of hard satissfiability problems , 1998 .

[16]  Hans van Maaren,et al.  Recognition of Tractable Satisfiability Problems through Balanced Polynomial Representations , 2000, Discret. Appl. Math..

[17]  Armin Biere,et al.  Bounded Model Checking Using Satisfiability Solving , 2001, Formal Methods Syst. Des..

[18]  Calogero G. Zarba,et al.  Combining Decision Procedures , 2002, 10th Anniversary Colloquium of UNU/IIST.

[19]  Calogero G. Zarba A Tableau Calculus for Combining Non-disjoint Theories , 2002, TABLEAUX.

[20]  J. Saxe,et al.  Extended static checking for Java , 2002, PLDI '02.

[21]  Sriram K. Rajamani,et al.  The SLAM project: debugging system software via static analysis , 2002, POPL '02.

[22]  R. Gregory Taylor,et al.  Modern computer algebra , 2002, SIGA.

[23]  Joachim von zur Gathen,et al.  Modern Computer Algebra (3. ed.) , 2003 .

[24]  Thomas A. Henzinger,et al.  Software Verification with BLAST , 2003, SPIN.

[25]  E. Clarke,et al.  Hardware verification using ANSI-C programs as a reference , 2003, Proceedings of the ASP-DAC Asia and South Pacific Design Automation Conference, 2003..

[26]  Sanjit A. Seshia,et al.  The UCLID Decision Procedure , 2004, CAV.

[27]  Sergey Berezin,et al.  CVC Lite: A New Implementation of the Cooperating Validity Checker Category B , 2004, CAV.

[28]  Bart Selman,et al.  From Spin Glasses to Hard Satisfiable Formulas , 2004, SAT.

[29]  Shuvendu K. Lahiri,et al.  An Efficient Decision Procedure for UTVPI Constraints , 2005, FroCoS.

[30]  David Detlefs,et al.  Simplify: a theorem prover for program checking , 2005, JACM.

[31]  Mitchell A. Thornton,et al.  Table lookup structures for multiplicative inverses modulo 2/sup k/ , 2005, 17th IEEE Symposium on Computer Arithmetic (ARITH'05).

[32]  David L. Dill,et al.  A decision procedure for fixed-width bit-vectors , 2005 .

[33]  Bogdan M. Wilamowski,et al.  The Transmission Control Protocol , 2005, The Industrial Information Technology Handbook.

[34]  Marco Bozzano,et al.  An Incremental and Layered Procedure for the Satisfiability of Linear Arithmetic Logic , 2005, TACAS.

[35]  Helmut Seidl,et al.  Analysis of Modular Arithmetic , 2005, ESOP.

[36]  Helmut Seidl,et al.  Analysis of modular arithmetic , 2005, TOPL.