Disjunctive Interpolants for Horn-Clause Verification

One of the main challenges in software verification is efficient and precise compositional analysis of programs with procedures and loops. Interpolation methods remains one of the most promising techniques for such verification, and are closely related to solving Horn clause constraints. We introduce a new notion of interpolation, disjunctive interpolation, which solves a more general class of problems in one step compared to previous notions of interpolants, such as tree interpolants or inductive sequences of interpolants. We present algorithms and complexity for construction of disjunctive interpolants, as well as their use within an abstraction-refinement loop. We have implemented Horn clause verification algorithms that use disjunctive interpolants and evaluate them on benchmarks expressed as Horn clauses over the theory of integer linear arithmetic.

[1]  Hassen Saïdi,et al.  Construction of Abstract State Graphs with PVS , 1997, CAV.

[2]  Thomas A. Henzinger,et al.  Abstractions from proofs , 2004, POPL.

[3]  Daniel Kroening,et al.  An Interpolating Sequent Calculus for Quantifier-Free Presburger Arithmetic , 2010, Journal of Automated Reasoning.

[4]  Rupak Majumdar,et al.  Algorithmic verification of asynchronous programs , 2010, TOPL.

[5]  Nikolaj Bjørner,et al.  Generalized Property Directed Reachability , 2012, SAT.

[6]  Viktor Kuncak,et al.  Disjunctive Interpolants for Horn-Clause Verification (Extended Technical Report) , 2013, ArXiv.

[7]  Andreas Podelski,et al.  Relative Completeness of Abstraction Refinement for Software Model Checking , 2002, TACAS.

[8]  Shuvendu K. Lahiri,et al.  A Solver for Reachability Modulo Theories , 2012, CAV.

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

[10]  Mohamed Nassim Seghir,et al.  A Lightweight Approach for Loop Summarization , 2011, ATVA.

[11]  Ashutosh Gupta,et al.  Solving Recursion-Free Horn Clauses over LI+UIF , 2011, APLAS.

[12]  Frits W. Vaandrager,et al.  Automata Learning through Counterexample Guided Abstraction Refinement , 2012, FM.

[13]  Viktor Kuncak,et al.  Classifying and Solving Horn Clauses for Verification , 2013, VSTTE.

[14]  Marsha Chechik,et al.  Whale: An Interpolation-Based Algorithm for Inter-procedural Verification , 2012, VMCAI.

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

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

[17]  Naoki Kobayashi,et al.  Automating relatively complete verification of higher-order functional programs , 2013, POPL.

[18]  Manuel V. Hermenegildo,et al.  Energy Consumption Analysis of Programs Based on XMOS ISA-Level Models , 2013, LOPSTR.

[19]  Grigory Fedyukovich,et al.  Interpolation-Based Function Summaries in Bounded Model Checking , 2011, Haifa Verification Conference.

[20]  Alessandro Cimatti,et al.  Theory and Applications of Satisfiability Testing – SAT 2012 , 2012, Lecture Notes in Computer Science.

[21]  K. McMillan,et al.  Solving Constrained Horn Clauses using Interpolation , 2013 .

[22]  Jorge A. Navas,et al.  A Flexible, (C)LP-Based Approach to the Analysis of Object-Oriented Programs , 2008, LOPSTR.

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

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

[25]  Marsha Chechik,et al.  Craig Interpretation , 2012, SAS.

[26]  John P. Gallagher,et al.  Analysis of Imperative Programs through Analysis of Constraint Logic Programs , 1998, SAS.

[27]  Shuvendu K. Lahiri,et al.  Corral: A Solver for Reachability Modulo Theories , 2012 .

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

[29]  Andrey Rybalchenko,et al.  Synthesizing software verifiers from proof rules , 2012, PLDI.

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

[31]  Viktor Kuncak,et al.  Accelerating Interpolants , 2012, ATVA.

[32]  Rupak Majumdar,et al.  HMC: Verifying Functional Programs Using Abstract Interpreters , 2011, CAV.

[33]  Viktor Kuncak,et al.  A Verification Toolkit for Numerical Transition Systems - Tool Paper , 2012, FM.

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

[35]  Brian Campbell,et al.  Amortised Memory Analysis Using the Depth of Data Structures , 2009, ESOP.

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