Synchronizing Constrained Horn Clauses

Simultaneous occurrences of multiple recurrence relations in a system of non-linear constrained Horn clauses are crucial for proving its satisfiability. A solution of such system is often inexpressible in the constraint language. We propose to synchronize recurrent computations, thus increasing the chances for a solution to be found. We introduce a notion of CHC product allowing to formulate a lightweight iterative algorithm of merging recurrent computations into groups and prove its soundness. The evaluation over a set of systems handling lists and linear integer arithmetic confirms that the transformed systems are drastically more simple to solve than the original ones.

[1]  Grigory Fedyukovich,et al.  Verifying Safety of Functional Programs with Rosette/Unbound , 2017, ArXiv.

[2]  Sandro Etalle,et al.  Transformations of CLP Modules , 1996, Theor. Comput. Sci..

[3]  Sagar Chaki,et al.  SMT-based model checking for recursive programs , 2014, Formal Methods in System Design.

[4]  Tachio Terauchi,et al.  Inferring Simple Solutions to Recursion-Free Horn Clauses via Sampling , 2015, TACAS.

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

[6]  John P. Gallagher,et al.  Rahft: A Tool for Verifying Horn Clauses Using Abstract Interpretation and Finite Tree Automata , 2016, CAV.

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

[8]  Maaz Bin Safeer Ahmad,et al.  Gradual synthesis for static parallelization of single-pass array-processing programs , 2017, PLDI.

[9]  Arie Gurfinkel,et al.  Property Directed Equivalence via Abstract Simulation , 2016, CAV.

[10]  Ofer Strichman,et al.  Regression Verification for Unbalanced Recursive Functions , 2016, FM.

[11]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[12]  Gilles Barthe,et al.  Relational Verification Using Product Programs , 2011, FM.

[13]  Alberto Pettorossi,et al.  Relational Verification Through Horn Clause Transformation , 2016, SAS.

[14]  John P. Gallagher,et al.  Solving non-linear Horn clauses using a linear Horn clause solver , 2016, HCVS@ETAPS.

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

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

[17]  Shuvendu K. Lahiri,et al.  Differential assertion checking , 2013, ESEC/FSE 2013.