【发布时间】:2012-11-20 13:03:52
【问题描述】:
我刚刚将 z3 从 4.1 升级到 4.3.1,看来 smtlib2 输入发生了变化: 现在,函数/常量声明不会被 pop 语句删除。
这是与 z3 4.1(和其他 SMT 求解器...)一起正常工作的 SMTlib2 输入,但在 z3 4.3.1 中返回错误:(错误“第 19 行第 25 列:无效声明,常量 'bs_2' (带有给定签名)已经声明”)
(set-option :produce-models true)
(set-option :produce-unsat-cores true)
(set-option :interactive-mode true)
(set-option :print-success false)
(push 1)
(declare-fun bs_1 () Bool)
(push 1)
(declare-fun bs_2 () Bool)
(assert (and bs_1 (not bs_2)))
(check-sat)
(pop 1)
(push 1)
(declare-fun bs_2 () Bool)
(assert (and bs_1 (not bs_2)))
(check-sat)
(pop 1)
(pop 1)
(exit)
删除最后一个 bs_2 声明适用于 z3 4.3.1,但不适用于 z3 4.1。 我是否使用了 push/pop 错误?
【问题讨论】:
标签: z3