3
A
回答
5
Solver
類有方法稱爲assertions()
。它返回所有的公式被斷言到給定的求解器中。在我們提取斷言之後,我們可以使用上一個問題中使用的相同方法。這裏是一個快速和骯髒的修改
def toSMT2Benchmark(f, status="unknown", name="benchmark", logic=""):
v = (Ast * 0)()
if isinstance(f, Solver):
a = f.assertions()
if len(a) == 0:
f = BoolVal(True)
else:
f = And(*a)
return Z3_benchmark_to_smtlib_string(f.ctx_ref(), name, logic, status, "", 0, v, f.as_ast())
下面是一個例子(also available online at here)
s = Solver()
print toSMT2Benchmark(s, logic="QF_LIA")
a, b = Ints('a b')
s.add(a > 1)
s.add(Or(a < 1, b < 2))
print toSMT2Benchmark(s, logic="QF_LIA")
EDIT我們可以使用下面的腳本來顯示SMTLIB 1.x的格式的輸出(也可在線獲得here)。請注意,SMTLIB 1.x非常有限,並且不支持多種功能。 我們也強烈鼓勵所有用戶遷移到SMTLIB 2.x.
def toSMTBenchmark(f, status="unknown", name="benchmark", logic=""):
v = (Ast * 0)()
if isinstance(f, Solver):
a = f.assertions()
if len(a) == 0:
f = BoolVal(True)
else:
f = And(*a)
Z3_set_ast_print_mode(f.ctx_ref(), Z3_PRINT_SMTLIB_COMPLIANT) # Set SMTLIB 1.x pretty print mode
r = Z3_benchmark_to_smtlib_string(f.ctx_ref(), name, logic, status, "", 0, v, f.as_ast())
Z3_set_ast_print_mode(f.ctx_ref(), Z3_PRINT_SMTLIB2_COMPLIANT) # Restore SMTLIB 2.x pretty print mode
return r
s = Solver()
print toSMTBenchmark(s, logic="QF_LIA")
a, b = Ints('a b')
s.add(a > 1)
s.add(Or(a < 1, b < 2))
print toSMTBenchmark(s, logic="QF_LIA")
編輯完
相關問題
- 1. Z3Py:解析表達式使用eval或z3.parse_smt2_string
- 2. 爲Z3 SAT求解
- 3. Z3 Sudoku求解器
- 4. 無法爲z3py提取Z3 EnumSort的值
- 5. z3py:在求解器上應用策略
- 6. Z3:將Z3py表達式轉換爲SMT-LIB2?
- 7. z3:表達式與先驗函數從z3py到smt-lib2的轉換
- 8. Z3 Java API:何時配置表達式/ Z3對象?
- 9. Z3極性使用Z3作爲SAT求解器
- 10. 使用Z3Py將Z3 CNF公式轉換爲列表列表形式
- 11. Z3 JAVA-API求解器超時
- 12. Z3中的單形求解器
- 13. Validation query formulation,SMT求解器,Z3,STP
- 14. Z3求解差異邏輯的Python API
- 15. Microsoft Z3 Dot Net API,克隆求解器
- 16. Z3 4.0推動和彈出求解器
- 17. Z3 SAT求解器的隨機種子
- 18. z3py:如何在使用z3 python api時檢查跟蹤信息
- 19. 爲什麼Z3在線和Z3PY的結果不一樣?
- 20. 如何在z3py中使用Z3-LIB中的(_ map op)
- 21. Z3py:轉換一個Z3公式由picosat使用條款
- 22. 如何從z3求解器生成SMTLIB2格式的公式
- 23. 如何簡化兩個表達式的工會:Z3求解
- 24. 如何打印Z3設置對象?
- 25. 瞭解Z3模型
- 26. 定點解釋Z3
- 27. 春 - 請求從對象池
- 28. 從檢索請求對象
- 29. 如何在z3py中制定求和
- 30. 從請求對象的請求報頭複製到URLConnection對象
是否有可能迫使Z3返回SMT-LIB 1.2兼容的編碼? – user1217406 2013-02-10 19:55:46
我更新了帖子。 – 2013-02-12 17:07:04