我的方案如下:
对于版本4.3.2,这非常有效,但在切换到4.4(稳定和最新)之后,Z3经常返回状态UNKNOWN(即使是在没有AssertAndTrack的情况下在4.4中传送SATISFIABLE的检查)。
是否有人可以给我一个提示如何解决问题或如何进一步分析问题呢?
由于
基督教
答案 0 :(得分:1)
我使用了
的语法AssertAndTrack(BoolExpr constraint, BoolExpr p)
懒惰的方式:
AssertAndTrack(constraint, constraint)
并且总是直接将冲突的约束作为反馈!
从版本4.4开始显然不再可能:第二个参数必须是另一个BoolExpr!我不知道这里的规则是什么,但现在我使用标签和字典来获得反馈,一切正常。
答案 1 :(得分:1)
对于assert-and-track的第二个参数,你需要传递一个命题原子或一个否定。在以前的版本中没有完全检查。这可能是您看到不同行为的原因的解释。