我想在z3的smt-lib 2語法中編碼QBF。運行在警告量詞和模式(QBF公式)
警告Z3結果:未能找到量詞的模式(量詞ID:!k來14)
和滿足性的結果是 「未知」。
的代碼如下:
(declare-fun R (Bool Bool Bool Bool) Bool)
(assert
(forall ((x2 Bool) (x3 Bool))
(exists ((y Bool))
(forall ((x1 Bool))
(R x1 x2 x3 y)
)
)
)
)
(check-sat)
我被重寫代碼擺脫警告到
(set-option :auto-config false)
(set-option :mbqi false)
(declare-fun R (Bool Bool Bool Bool) Bool)
(declare-fun x1() Bool)
(declare-fun x2() Bool)
(declare-fun x3() Bool)
(declare-fun y() Bool)
(assert
(forall ((x2 Bool) (x3 Bool))
(!
(exists ((y Bool))
(!
(forall ((x1 Bool))
(!
(R x1 x2 x3 y)
:pattern((R x1 x2 x3 y)))
)
:pattern((R x1 x2 x3 y)))
)
:pattern((R x1 x2 x3 y)))
)
)
(check-sat)
結果爲坐在查詢,但是,仍然是「未知」。
我猜我需要的模式是正確的嗎?如何爲嵌套量詞指定它們?儘管如此,更簡單的量詞實例似乎無需模式註釋即可運行。
不幸的是,對於What is the reason behind the warning message in Z3: "failed to find a pattern for quantifier (quantifier id: k!18) "和z3指南的回答並沒有太多幫助。