English

Solving non-linear Horn clauses using a linear solver

Logic in Computer Science 2015-11-23 v1

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.

Cite

@article{arxiv.1511.06668,
  title  = {Solving non-linear Horn clauses using a linear solver},
  author = {Bishoksan Kafle},
  journal= {arXiv preprint arXiv:1511.06668},
  year   = {2015}
}
R2 v1 2026-06-22T11:50:38.637Z