Solving Constrained Horn Clauses using Interpolation

We present an interpolation-based method for symbolically solving systems of constrained Horn clauses. The method can be used to solve for unknown predicates in the verication conditions of programs. Thus, it has a variety of applications, including including model checking of recursive and threaded programs. The method is implemented in tool called Duality, which we evaluate using device driver verication benchmarks.

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

[2]  Kenneth L. McMillan,et al.  Automatic Abstraction without Counterexamples , 2003, TACAS.

[3]  Monica S. Lam,et al.  Cloning-based context-sensitive pointer alias analysis using binary decision diagrams , 2004, PLDI '04.

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

[5]  Bor-Yuh Evan Chang,et al.  Boogie: A Modular Reusable Verifier for Object-Oriented Programs , 2005, FMCO.

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

[7]  Andreas Podelski,et al.  Terminator: Beyond Safety , 2006, CAV.

[8]  Kenneth L. McMillan,et al.  Combining Abstraction Refinement and SAT-Based Model Checking , 2007, TACAS.

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

[10]  Patrick Maxim Rondon,et al.  Liquid types , 2008, PLDI '08.

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

[12]  Sriram K. Rajamani,et al.  The YogiProject: Software Property Checking via Static Analysis and Testing , 2009, TACAS.

[13]  Kenneth L. McMillan Lazy Annotation for Program Testing and Verification , 2010, CAV.

[14]  Dirk Beyer,et al.  Predicate abstraction with adjustable-block encoding , 2010, Formal Methods in Computer Aided Design.

[15]  Thomas Ball,et al.  The Static Driver Verifier Research Platform , 2010, CAV.

[16]  Kenneth L. McMillan,et al.  Interpolants from Z3 proofs , 2011, 2011 Formal Methods in Computer-Aided Design (FMCAD).

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

[18]  Nikolaj Bjørner,et al.  μZ- An Efficient Engine for Fixed Points with Constraints , 2011, CAV.

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

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

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

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

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

[24]  Marsha Chechik,et al.  From Under-Approximations to Over-Approximations and Back , 2012, TACAS.

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

[26]  Kenneth L. McMillan,et al.  Program Verication as Satisability Modulo Theories , 2012 .

[27]  Nikolaj Bjørner,et al.  Program Verification as Satisfiability Modulo Theories , 2013, SMT@IJCAR.

[28]  Thomas A. Henzinger,et al.  Abstractions from proofs , 2004, SIGP.