一个反例使用Z3的号角条款求解:充分利用μZ3(喇叭解算器)
如果答案是SAT
,可以得到一个满意的分配未知谓词(在大多数应用中,对应的电感不变某种过渡系统或程序调用系统)。
如果答案是unsat
,那么这意味着存在于霍恩子句的展开和一个赋值于霍恩子句普遍量化变量,使得安全条件中的至少一个(具有false
头的条款)被违反。这构成了一个具体的目击者为什么系统没有解决方案。
我怀疑,如果Z3可以得出结论unsat
,那么它在内部具有某种形式的此类见证(如果我记得的话,无论如何PDR就是这种情况)。有没有办法打印出来?
也许我严重阅读文档,但我找不到方法。 (get-proof)
打印某些不可读的内容,此外,(set-option :produce-proofs true)
会造成一些棘手的问题。
谢谢Ken(user1214978) –