Axiomatising上列出了包含操作(on Rise4Fun)作爲不同方式包含功能的Z3列出
(declare-fun Seq.in ((List Int) Int) Bool)
(assert (forall ((e Int))
(not (Seq.in nil e))))
(assert (forall ((xs (List Int)) (e Int))
(iff
(not (= xs nil))
(=
(Seq.in xs e)
(or
(= e (head xs))
(Seq.in (tail xs) e))))))
能使Z3 4.0反駁斷言
(declare-const x Int)
(assert (Seq.in nil x))
(check-sat) ; UNSAT, as expected
的在我的眼前等效axiomatisation
(assert (forall ((xs (List Int)) (e Int))
(ite (= xs nil)
(= (Seq.in xs e) false)
(=
(Seq.in xs e)
(or
(= e (head xs))
(Seq.in (tail xs) e))))))
結果在unknown
。
這可能是觸發器的問題,或者有什麼特定於List域的東西可以解釋行爲上的差異嗎?
我無法重現您描述的行爲。這兩個例子都對我不利。以下是示例:http://rise4fun.com/Z3/MPSp,http:// rise4fun。com/Z3/1fxc –
忽略上面的註釋。我沒有注意到你已經禁用了':mbqi'引擎。 –