2
A
回答
2
您可以將程序表示爲一組Horn子句。對於你的程序,你可以如下表示:
(set-logic HORN)
(set-option :fixedpoint.engine bmc)
(declare-fun L0 (Bool Bool) Bool)
(declare-fun L1 (Bool Bool) Bool)
(declare-fun L2 (Bool Bool) Bool)
(declare-fun L3 (Bool Bool) Bool)
(assert (forall ((x Bool) (y Bool)) (L0 x y))) ; all values of x,y are possible at L0
(assert (forall ((x Bool) (y Bool)) (=> (L0 x y) (L1 x y)))) ; from L0 move to L1 without changing x, y
(assert (forall ((x Bool) (y Bool) (x1 Bool) (y1 Bool))
(=> (and (not x) (L1 x y) (= x1 (or x y)) (= y1 (and x1 y))) (L1 x1 y1)))); assignment in while loop
(assert (forall ((x Bool) (y Bool)) (=> (and x (L1 x y)) (L2 x y)))) ; exit while loop
(assert (forall ((x Bool) (y Bool)) (=> (L2 x y) (L3 x (or x y))))) ; assignment after while loop
(assert (forall ((x Bool) (y Bool)) (=> (L3 true true) false))) ; say x = true, y = true is unreachable.
(check-sat)
我已經添加了最後一個聲明來創建可達性聲明。 我還指示Z3使用BMC引擎展開使用 有限模型檢查的Horn子句。其他引擎也可用,例如PDR/IC3 引擎(set-option:fixedpoint.engine pdr)不會展開轉換關係。
現在可達性與可滿足 的含義將是用於Horn子句不同,相比於未摺疊 過渡關係的結合: 上述子句是UNSAT。 這實際上對應於從L0到(L3真實)的可行路徑。 如果您將最後一條語句更改爲(L3 true false),您將得到答案「sat」 (BMC問題是UNSAT)。雖然BMC本身不會終止於這樣一個循環,但事實證明,最後的轉換和循環退出條件足以刪除(L3真假)的可能性,所以Z3通過預處理喇叭子句來解決這個問題。
您當然也可以寫下您擁有的程序語句的轉換關係,並直接將其展開爲您檢查可滿足性的邏輯公式。
相關問題
- 1. Presburger公式的滿足性與Z3
- 2. Z3與工作流可滿足
- 3. Z3能檢查包含遞歸函數的公式的可滿足性嗎?
- 4. 有效性和可滿足性
- 5. Dpll,SAT(可滿足性)問題,需要DPLL函數或程序?
- 6. 降低可滿足性的算法java
- 7. 滿足谷歌地圖api的應用程序依賴性
- 8. 加速使用Z3py來檢查公式的可滿足性
- 9. 2可滿足性問題算法
- 10. DPLL和可滿足性示例?
- 11. OWL HermiT調試可滿足性檢查
- 12. 布爾可滿足性 - 算法
- 13. z3 4.3.2未能找到Why3生成(可滿足)目標的模型
- 14. 錯誤?更改斷言順序影響可滿足性
- 15. 2可滿足性強連接組件拓撲排序
- 16. 如何簽名應用程序使用Click-Once來滿足AppLocker?
- 17. 檢查Z3模型是否滿足約束條件的最快方法? BitVectors,Z3 3.2,C#API,x64,多線程
- 18. 在Z3中從滿足賦值集合中均勻採樣
- 19. Z3能否檢查有界數據結構上的遞歸函數的可滿足性?
- 20. 如何查找建模/檢查Z3中可滿足性所需的內存和時間(NET API)
- 21. Mysql排序滿足multipe condtion
- 22. 爲什麼Z3會說這個方程式是不可滿足的,當我輸入正確的時候呢?
- 23. 使用NSTableView調用reloadData時不可滿足的約束
- 24. 當使用TcpConnectionNew時,綁定`():futures :: Future`的特性不被滿足
- 25. 求python中最大布爾可滿足性問題的算法
- 26. 可滿足元素的JavaScript事件
- 27. 416請求的範圍不可滿足
- 28. 滿足條件的
- 29. NSMutableArray的滿足NSGenericException
- 30. 使用jQuery在骨幹視圖中可以滿足的樣式
嘿Nikolaj,非常感謝您的回覆!如何檢查一個給定的一組布爾變量x,y的程序的可滿足性? – Joyel