我正在使用Z3 SMT求解器來解決我在邏輯QF_BV中使用SMTLIB 2語言表達的問題。使用z3(邏輯QF_BV)獲得「良好」不飽和核心
該模型是不可滿足的,我試圖讓解算器產生一個不飽和的核心。
我的模型由幾個'強制性'約束組成,我使用assert
語句指定。
我希望用於不飽和核心生成的斷言已使用(assert (! (EXPR) :named NAME))
構造指定。如預期的那樣,Z3給我unsat
。然而,Z3似乎總是傾倒一個由所有命名斷言組成的「微不足道」的不足核心。
我知道存在我命名斷言的一個子集,它是一個不可核心的。我發現這個核心使用Yices SMT解算器,它經常給我相對較小的不飽和核心。 Yices模型與Z3模型相同(幾乎是從SMT2到Yices輸入語言的逐行翻譯)。
正在生產「良好」不飽和核心的解算器特定功能,還是有任何通用的建議/更改,我可以幫助Z3給我一個更好的核心?
感謝您的回覆! 我已經上傳了一個示例腳本[這裏](https://gist.github.com/2fe5ce8cf42af9ffaf59)。我已經包含了一些簡要說明以幫助理解。 您能否看看我們是否有任何提示? – dhrumeel 2012-02-29 23:23:27
我收到了你的劇本,我會更新答案。順便說一句,在一些位向量文字前,缺少'#'。 – 2012-03-01 15:41:13