(這是我第二次嘗試獲得幫助,如果問題/方法沒有意義或不明確,請讓我知道。也會很高興任何小提示或參考,這可以幫助我瞭解Z3與我的SBA的行爲)Z3的對稱性破壞 - 在UFBV邏輯環境下(新版本)
我正在使用UFBV Z3邏輯的關係規範的有界驗證。我正在研究的當前問題需要僞造所有可能的模型(因爲對可達性謂詞的負面使用),這會使解算器的性能在更高的範圍內發揮作用。因爲只有一部分可能的模型確實很有趣(不同構於其他模型),所以我試圖引入對稱破缺技術(在SAT領域中已知)。
然而,在某些情況下,我稱之爲對稱破缺公理可以提高Z3的性能,但解算器的一般性行爲變得不穩定。
我的一種方法(我認爲最有前途的方法)是基於打破關係w.r.t.的對稱性。他們的領域。它引入了關係R中的每個域D和D公理中的每個原子a \,這強制了R^{M}和R^{M [a + 1/a]}的二進制表示的順序,其中M是規範的一個模型。對於同質關係,公理是放鬆的。
設R是子集AxA的關係。我對R寬鬆的對稱性破缺公理是這樣的:
;; SBA(R, A)_upToDiag
(assert
(forall ((ai A) (aj A))
(=>
(bvult ai aj)
(=>
(forall ((x A))
(=>
(bvult x aj)
(= (R ai x) (R (bvadd ai (_ bv1 n)) x))
)
)
(=>
(R ai aj)
(R (bvadd ai (_ bv1 n)) aj)
)))))
;; SBA(R, A)_diag
(assert
(forall ((ai A))
(=>
(forall ((x A))
(=>
(bvult x ai)
(= (R ai x) (R (bvadd ai (_ bv1 n)) x))
)
)
(=>
(R ai ai)
(R (bvadd ai (_ bv1 n)) (bvadd ai (_ bv1 n)))
))))
我的問題是,使用此SBAS的效果並不穩定/一致。它不同於綁定到另一個的形式說明。全部或僅使用一個SBA也會影響性能。
在SAT環境中,所謂的對稱破缺斷言(SBP)方法的成功基於SAT求解器的回溯能力,它(以某種方式)保證,如果求解器回溯,它將修剪搜索空間使用,其中包括SBP。
- Z3上下文有什麼區別(如果有的話)?
- 我該如何執行解決方案才能使用這些公理來修剪搜索空間(當它回溯)?
- 我的SBA會使用(量詞)模式嗎?
問候,
Aboubakr Achraf埃爾加齊
非常感謝你,你的插圖給了我一個改善我的方法的好起點。就我而言,到目前爲止,我正在處理不合格的規格。我將盡快在這裏報告我的調查結果(使用你的建議)。再次感謝你。 – 2012-02-20 19:15:32
順便說一句:對稱破缺公理是一些如何超過約束,這不影響可滿足性。在Z3中整合這個概念有多困難,因此如果求解器遇到衝突(後退軌道),則只考慮像SBAs這樣的約束。 Z3的理論插件框架是否適合? – 2012-02-20 19:18:28
Z3支持理論插件。 Z3發行版帶有一個例子:'z3-3.2 \ examples \ theory'。主要缺點是您必須移動編程式API(您無法使用理論插件使用SMT 2.0前端)。 – 2012-02-24 18:13:54