我有以下代码
(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
由于 赛义夫
答案 0 :(得分:3)
我不知道您用于解决此问题的jSMTLIB中的哪个后端。但是,(check-sat (= x w))
在SMT-LIB v2中甚至不合法。
当我将该行更改为:
(assert (= x w))
(check-sat)
我从Z3网络界面获得unsat
和sat
,这是我们的期望。
请注意(get-info :statistics)
也不正确;正确的选项是(get-info :all-statistics)
。您可以在their documentation中阅读有关SMT-LIB v2标准的更多信息。