Efficient Craig Interpolation for Linear Diophantine (Dis)Equations and Linear Modular Equations

The use of Craig interpolants has enabled the development of powerful hardware and software model checking techniques. Efficient algorithms are known for computing interpolants in rational and real linear arithmetic. We focus on subsets of integer linear arithmetic. Our main results are polynomial time algorithms for obtaining interpolants for conjunctions of linear diophantine equations, linear modular equations (linear congruences), and linear diophantine disequations. We show the utility of the proposed interpolation algorithms for discovering modular/divisibilitypredicates in a counterexample guided abstraction refinement (CEGAR) framework. This has enabled verification of simple programs that cannot be checked using existing CEGAR based model checkers.

[1]  Alexander Schrijver,et al.  Theory of linear and integer programming , 1986, Wiley-Interscience series in discrete mathematics and optimization.

[2]  Calogero G. Zarba,et al.  Interpolation for data structures , 2006, SIGSOFT '06/FSE-14.

[3]  Helmut Veith,et al.  Counterexample-guided abstraction refinement for symbolic model checking , 2003, JACM.

[4]  George Labahn,et al.  Asymptotically fast computation of Hermite normal forms of integer matrices , 1996, ISSAC '96.

[5]  Joël Ouaknine,et al.  Deciding Bit-Vector Arithmetic with Abstraction , 2007, TACAS.

[6]  Greg Nelson,et al.  Simplification by Cooperating Decision Procedures , 1979, TOPL.

[7]  William Craig,et al.  Linear reasoning. A new form of the Herbrand-Gentzen theorem , 1957, Journal of Symbolic Logic.

[8]  Pavel Pudlák,et al.  Lower bounds for resolution and cutting plane proofs and monotone computations , 1997, Journal of Symbolic Logic.

[9]  Viorica Sofronie-Stokkermans,et al.  Constraint solving for interpolation , 2007, J. Symb. Comput..

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

[11]  Madan Musuvathi,et al.  A Combination Method for Generating Interpolants , 2005, CADE.

[12]  Daniel Kroening,et al.  Lifting Propositional Interpolants to the Word-Level , 2007 .

[13]  David L. Dill,et al.  A Decision Procedure for Bit-Vectors and Arrays , 2007, CAV.

[14]  G. B. Mathews Theory of numbers , 1963 .

[15]  Michael J. Maher,et al.  Solving Numerical Constraints , 2001, Handbook of Automated Reasoning.

[16]  Kenneth L. McMillan,et al.  Interpolation and SAT-Based Model Checking , 2003, CAV.

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

[18]  Kenneth L. McMillan An interpolating theorem prover , 2005, Theor. Comput. Sci..

[19]  Alberto Griggio,et al.  Efficient Interpolant Generation in Satisfiability Modulo Theories , 2008, TACAS.

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

[21]  Roberto Bruttomesso,et al.  A Lazy and Layered SMT($\mathcal{BV}$) Solver for Hard Industrial Verification Problems , 2007, CAV.

[22]  Ranjit Jhala,et al.  A Practical and Complete Approach to Predicate Refinement , 2006, TACAS.

[23]  R. Stansifer Presburger''s Article on Integer Arithmetic: Remarks and Translation , 1984 .