We address the problem of checking the satisfiability of a set of constrained Horn clauses (CHCs) possibly including more than one query. We propose a transformation technique that takes as input a set of CHCs, including a set of queries, and returns as output a new set of CHCs, such that the transformed CHCs are satisfiable if and only if so are the original ones, and the transformed CHCs incorporate in each new query suitable information coming from the other ones so that the CHC satisfiability algorithm is able to exploit the relationships among all queries. We show that our proposed technique is effective on a non trivial benchmark of sets of CHCs that encode many verification problems for programs manipulating algebraic data types such as lists and trees.
翻译:我们研究了约束 Horn 子句(Constrained Horn Clauses, CHCs)集合的可满足性检查问题,该集合可能包含多个查询。我们提出了一种变换技术,该技术以包含一组查询的 CHCs 集合为输入,并输出一个新的 CHCs 集合,使得变换后的 CHCs 是可满足的当且仅当原始 CHCs 是可满足的。变换后的 CHCs 在每个新查询中整合了来自其他查询的适当信息,从而使 CHC 可满足性算法能够利用所有查询之间的关系。我们通过一个非平凡的基准测试集证明了所提技术的有效性,该基准测试集包含许多针对操作代数数据类型(如列表和树)的程序验证问题的 CHCs 集合。