Smtlib的代码问题

时间:2012-02-22 22:49:44

标签: z3 smt

我有以下代码

(set-logic QF_LIA)
(declare-fun w () Int)
(declare-fun x () Int)
(declare-fun y () Int)
(declare-fun z () Int)
(assert (> x y))
(assert (> y z))
(push 1)
(assert (> z x))
(check-sat) ; unsat
(get-info :statistics)
(pop 1)
(push 1)
(check-sat (= x w)) ; sat

代码首先应该返回不满(check-sat)并且坐在第二个(check-sat),但是我不知道。

有人可以告诉我这是什么问题。我正在使用windows 7,jSMTLIB使用cygwin

由于 赛义夫

1 个答案:

答案 0 :(得分:3)

我不知道您用于解决此问题的jSMTLIB中的哪个后端。但是,(check-sat (= x w))在SMT-LIB v2中甚至不合法。

当我将该行更改为:

(assert (= x w))
(check-sat)

我从Z3网络界面获得unsatsat,这是我们的期望。

请注意(get-info :statistics)也不正确;正确的选项是(get-info :all-statistics)。您可以在their documentation中阅读有关SMT-LIB v2标准的更多信息。