(Quantified) Horn Constraint Solving for Program Verification and Synthesis

We show how automatic tools for the verification of linear and branching time properties of procedural, multi-threaded, and functional programs as well as program synthesis can be naturally and uniformly seen as solvers of constraints in form of (quantified) Horn clauses over background logical theories. Such a perspective can offer various advantages, e. g., a logical separation of concerns between constraint generation (also known as generation of proof obligations) and constraint solving (also known as proof discovery), reuse of solvers across different verifications tasks, and liberation of proof designers from low level algorithmic concerns and vice versa. To appear in Theory and Practice of Logic Programming (TPLP)

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

[2]  Laura Kovács,et al.  Tree Interpolation in Vampire , 2013, LPAR.

[3]  Viktor Kuncak,et al.  Disjunctive Interpolants for Horn-Clause Verification , 2013, CAV.

[4]  Amir Pnueli,et al.  A compositional approach to CTL* verification , 2005, Theor. Comput. Sci..

[5]  Andreas Podelski,et al.  ARMC: The Logical Choice for Software Model Checking with Abstraction Refinement , 2007, PADL.

[6]  Pedro R. D'Argenio,et al.  Secure information flow by self-composition , 2004, Proceedings. 17th IEEE Computer Security Foundations Workshop, 2004..

[7]  A. M. Turing,et al.  Checking a large routine , 1989 .

[8]  Andreas Podelski,et al.  A Complete Method for the Synthesis of Linear Ranking Functions , 2004, VMCAI.

[9]  Arie Gurfinkel,et al.  Interpolation Properties and SAT-Based Model Checking , 2012, ATVA.

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

[11]  Nikolaj Bjørner,et al.  On Solving Universally Quantified Horn Clauses , 2013, SAS.

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

[13]  Andrey Rybalchenko,et al.  Temporal verification with transition invariants , 2004 .

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

[15]  Andrey Rybalchenko,et al.  Compositional Termination Proofs for Multi-threaded Programs , 2012, TACAS.

[16]  Swarat Chaudhuri,et al.  A constraint-based approach to solving games on infinite graphs , 2014, POPL.

[17]  Patrick Cousot,et al.  An abstract interpretation framework for termination , 2012, POPL '12.

[18]  Andrey Rybalchenko,et al.  Solving Existentially Quantified Horn Clauses , 2013, CAV.

[19]  Michael Backes,et al.  Automatic Discovery and Quantification of Information Leaks , 2009, 2009 30th IEEE Symposium on Security and Privacy.

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

[21]  Kenneth L. McMillan,et al.  Computing Relational Fixed Points using Interpolation , 2013 .

[22]  Ashutosh Gupta,et al.  HSF(C): A Software Verifier Based on Horn Clauses - (Competition Contribution) , 2012, TACAS.

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

[24]  Andreas Podelski,et al.  Transition invariants , 2004, Proceedings of the 19th Annual IEEE Symposium on Logic in Computer Science, 2004..

[25]  Ashutosh Gupta,et al.  Threader: A Constraint-Based Verifier for Multi-threaded Programs , 2011, CAV.