當檢查使用Z3以下問題,我包裹或不通過對push/pop
Z3返回不同的答案WITH和WITHOUT使用推/流行?
(declare-fun sz_53() Int)
(declare-fun x() Int)
(declare-fun u() Int)
(declare-fun y() Int)
(assert (> u 0))
(assert (= (+ y (- 0 0)) 0))
(assert (or (= (- x u) 0) (> x 0)))
(assert (<= (* (- 0 1) sz_53) 0))
(assert (or (= (- x u) 0) (not (= (- x u) 0))))
(assert (not (and (and (and (and (exists ((sz_64 Int)) (and (= sz_64 0) (exists ((sz_62 Int)) (and (exists ((sz_55 Int)) (and (<= (* (- 0 1) sz_55) 0) (= (+ sz_53 (- sz_62 sz_55)) 0))) (= (+ sz_62 (- (- 0 1) sz_64)) 0))))) (>= y 0)) (or (= (+ x (* (- 0 1) y)) 0) (> x 0))) (not (= (+ u (* (- 0 1) y)) 0))) (not (= (+ u (* (- 0 1) y)) 0)))))
(assert (not false))
(check-sat)
特別包裹它,當接收不同的答案,直接(未通過push/pop
包裝)檢查時,Z3返回unsat
(這裏是網上鍊接:http://rise4fun.com/Z3/cDt3)
然而,push/pop
包裹時,Z3返回unknown
(http://rise4fun.com/Z3/epyh0)
有沒有人知道爲什麼Z3的行爲如此?
非常感謝!
感謝您的完整的答案!我已閱讀您提到的相關問題和答案,但對於這種情況沒有任何好的解決方案。我覺得在這種情況下,Z3很快就會放棄。希望它在未來的版本中會有所改進。 –