Solving non-linear Horn clauses using a linear solver

preprint2015arXivOpen access

Abstract

Developing an efficient non-linear Horn clause solver is a challenging task since the solver has to reason about the tree structures rather than the linear ones as in a linear solver. In this paper we propose an incremental approach to solving a set of non-linear Horn clauses using a linear Horn clause solver. We achieve this by interleaving a program transformation and a linear solver. The program transformation is based on the notion of tree dimension, which we apply to trees corresponding to Horn clause derivations. The dimension of a tree is a measure of its non-linearity -- for example a linear tree (whose nodes have at most one child) has dimension zero while a complete binary tree has dimension equal to its height. A given set of Horn clauses PP can be transformed into a new set of clauses PkP^k (whose derivation trees are the subset of PP's derivation trees with dimension at most kk). We start by generating PkP^k with k=0k=0, which is linear by definition, then pass it to a linear solver. If PkP^k has a solution MM, and is a solution to PP then PP has a solution MM. If MM is not a solution of PP, we plugged MM to P(k+1)P^{(k+1)} which again becomes linear and pass it to the solver and continue successively for increasing value of kk until we find a solution to PP or resources are exhausted. Experiment on some Horn clause verification benchmarks indicates that this is a promising approach for solving a set of non-linear Horn clauses using a linear solver. It indicates that many times a solution obtained for some under-approximation PkP^k of PP becomes a solution for PP for a fairly small value of kk.

Explore this paper’s authors, topics and related work.

Building this map preview

BZPEER is loading the nearby papers, people, topics and institutions for this page.

Reviews 0

Write a reviewWrite

No reviews yet.

Discussion 0

Add a commentWrite

No comments yet.