【发布时间】:2015-06-10 13:17:19
【问题描述】:
使用 Z3 的 Horn 子句求解器:
如果答案是SAT,则可以对未知谓词(在大多数应用程序中,对应于某种转换系统或过程调用系统的归纳不变量)进行令人满意的分配。
如果答案是unsat,那么这意味着存在一个展开的 Horn 子句和对 Horn 子句中普遍量化的变量的赋值,使得至少有一个安全条件(带有 @987654323 的子句@head) 被违反。这构成了系统没有解决方案的具体见证。
我怀疑如果 Z3 可以得出结论 unsat,那么它内部就有某种形式的这种见证(如果我没记错的话,无论如何 PDR 就是这种情况)。有没有办法打印出来?
也许我没有仔细阅读文档,但我找不到方法。 (get-proof) 打印出一些不可读的东西,此外,(set-option :produce-proofs true) 使一些问题变得难以处理。
【问题讨论】:
标签: z3