递归 Horn 子句的求解器

Solver for recursive Horn clauses

最近,在自动化程序验证中,将问题作为 Horn 子句系统的解决方案提出来很流行,其中大多数 Horn 子句定义不变量的归纳条件,然后一些约束定义安全条件以匹配。

SMT-LIB 的一种文件格式:子句只是 assert 谓词上的语句,被视为映射到布尔值的函数。

实现此功能的求解器包括 vanilla Z3 和 Spacer。

能够解决此类问题的其他相当成熟、有文档记录且可下载的求解器有哪些?

即使 Z3 也有多个求解器,例如 BMC、PDR(默认?)、CLP(序言式推理)、Datalog 和 Duality。选择 fixedpoint.engine=xx。 还有另一个引擎即将推出,它是 HSF 到 Z3 的端口。 (原来的HSF也有,很靠谱)

还有其他求解器,但我对它们没有太多经验。 例如,Eldarica、VeriMAP 等