1
我正在使用最新的Z3版本3.2。我收到了來自「get-value」命令的意外響應。下面是我在SMT-LIB2兼容模式運行這個小腳本:奇怪的Z3型號值
(set-option :produce-models true)
(declare-datatypes() ((Object o0 null)))
(declare-fun IF (Object) Int)
(declare-fun i2() Int)
(assert (= (IF o0) i2))
(assert (= (IF null) 0))
(check-sat)
(get-value (i2))
的迴應是:
((i2 (IF o0)))
我希望得到的只是 「0」 了。有什麼方法可以讓Z3評估返回的宇宙常數?
以下是完整的模式:
(model
;; universe for Object:
;; Object!val!0
;; -----------
;; definitions for universe elements:
(declare-fun Object!val!0() Object)
;; cardinality constraint:
(forall ((x Object)) (= x Object!val!0))
;; -----------
(define-fun i2() Int
(IF o0))
(define-fun IF ((x!1 Object)) Int
(ite (= x!1 Object!val!0) 0
0))
)
我也困惑,爲什麼O0未在模型中定義。
感謝您的快速回答!現在在上面添加live可以解決問題。 – user1337 2012-04-17 22:23:23