Solving Recursion-Free Horn Clauses over LI+UIF

Verification of programs with procedures, multi-threaded programs, and higher-order functional programs can be effectively automated using abstraction and refinement schemes that rely on spurious counterexamples for abstraction discovery. The analysis of counterexamples can be automated by a series of interpolation queries, or, alternatively, as a constraint solving query expressed by a set of recursion free Horn clauses. (A set of interpolation queries can be formulated as a single constraint over Horn clauses with linear dependency structure between the unknown relations.) In this paper we present an algorithm for solving recursion free Horn clauses over a combined theory of linear real/rational arithmetic and uninterpreted functions. Our algorithm performs resolution to deal with the clausal structure and relies on partial solutions to deal with (non-local) instances of functionality axioms.

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

[2]  Rajeev Alur,et al.  A Temporal Logic of Nested Calls and Returns , 2004, TACAS.

[3]  Alberto Griggio,et al.  Interpolant Generation for UTVPI , 2009, CADE.

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

[5]  Roberto Bruttomesso,et al.  The MathSAT 4SMT Solver , 2008, CAV.

[6]  Frank Wolter,et al.  Monodic fragments of first-order temporal logics: 2000-2001 A.D , 2001, LPAR.

[7]  Ashutosh Gupta,et al.  Predicate abstraction and refinement for verifying multi-threaded programs , 2011, POPL '11.

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

[9]  Tachio Terauchi Dependent types from counterexamples , 2010, POPL '10.

[10]  Graham Steel,et al.  Deduction with XOR Constraints in Security API Modelling , 2005, CADE.

[11]  Rupak Majumdar,et al.  CSIsat: Interpolation for LA+EUF , 2008, CAV.

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

[13]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.

[14]  Larry Wos,et al.  What Is Automated Reasoning? , 1987, J. Autom. Reason..

[15]  Dirk Beyer,et al.  Software model checking via large-block encoding , 2009, 2009 Formal Methods in Computer-Aided Design.

[16]  Kenneth L. McMillan,et al.  An interpolating theorem prover , 2005, Theor. Comput. Sci..

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

[18]  Jochen Hoenicke,et al.  Nested interpolants , 2010, POPL '10.

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

[20]  Naoki Kobayashi,et al.  Dependent type inference with interpolants , 2009, PPDP '09.

[21]  Kousha Etessami,et al.  Analysis of Recursive Game Graphs Using Data Flow Equations , 2004, VMCAI.

[22]  Renate A. Schmidt Automated Deduction - CADE-22, 22nd International Conference on Automated Deduction, Montreal, Canada, August 2-7, 2009. Proceedings , 2009, CADE.

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

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

[25]  Edmund M. Clarke,et al.  Efficient Craig interpolation for linear Diophantine (dis)equations and linear modular equations , 2008, Formal Methods Syst. Des..