Efficient Interpolant Generation in Satisfiability Modulo Linear Integer Arithmetic

The problem of computing Craig interpolants in SAT and SMT has recently received a lot of interest, mainly for its applications in formal verification. Efficient algorithms for interpolant generation have been presented for some theories of interest --including that of equality and uninterpreted functions (eUF), linear arithmetic over the rationals (LA(Q)), and their combination -- and they are successfully used within model checking tools. For the theory of linear arithmetic over the integers (LA(Z)), however, the problem of finding an interpolant is more challenging, and the task of developing efficient interpolant generators for the full theory (LA(Z)) is still the objective of ongoing research. In this paper we try to close this gap. We build on previous work and present a novel interpolation algorithm for SMT(LA(Z)), which exploits the full power of current state-of-the-art SMT(LA(Z)) solvers. We demonstrate the potential of our approach with an extensive experimental evaluation of our implementation of the proposed algorithm in the MATHSAT SMT solver.

[1]  G. S. Tseitin On the Complexity of Derivation in Propositional Calculus , 1983 .

[2]  Christopher Lynch,et al.  Interpolants for Linear Arithmetic in SMT , 2008, ATVA.

[3]  Alberto Griggio,et al.  A Practical Approach to Satisability Modulo Linear Integer Arithmetic , 2012, J. Satisf. Boolean Model. Comput..

[4]  Cesare Tinelli,et al.  Splitting on Demand in SAT Modulo Theories , 2006, LPAR.

[5]  Alberto Griggio,et al.  Efficient generation of craig interpolants in satisfiability modulo theories , 2009, TOCL.

[6]  Alberto Griggio Effective word-level interpolation for software verification , 2011, 2011 Formal Methods in Computer-Aided Design (FMCAD).

[7]  Cesare Tinelli,et al.  Ground Interpolation for Combined Theories , 2009, CADE.

[8]  Daniel Kroening,et al.  An Interpolating Sequent Calculus for Quantifier-Free Presburger Arithmetic , 2010, IJCAR.

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

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

[11]  Daniel Kroening,et al.  Interpolating Quantifier-Free Presburger Arithmetic , 2010, LPAR.

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

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

[14]  William Pugh,et al.  The Omega test: A fast and practical integer programming algorithm for dependence analysis , 1991, Proceedings of the 1991 ACM/IEEE Conference on Supercomputing (Supercomputing '91).

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

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

[17]  Edmund M. Clarke,et al.  Efficient Craig Interpolation for Linear Diophantine (Dis)Equations and Linear Modular Equations , 2008, CAV.

[18]  Bruno Dutertre,et al.  A Fast Linear-Arithmetic Solver for DPLL(T) , 2006, CAV.

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

[20]  Isil Dillig,et al.  Cuts from Proofs: A Complete and Practical Technique for Solving Linear Inequalities over Integers , 2009, CAV.

[21]  Cesare Tinelli,et al.  Ground Interpolation for the Theory of Equality , 2009, TACAS.

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

[23]  Kenneth L. McMillan,et al.  Lazy Abstraction with Interpolants , 2006, CAV.