由於這個問題有點難以描述,我將用一個小例子來描述我的問題。 假設有一個命題公式集,其元素是布爾變量a,b和c。 當使用z3獲得這個公式集的真值分配時,是否存在某種方法來設置變量的優先級?我的意思是,如果優先級是> b> c,那麼在搜索過程中,z3首先假設a爲真,如果a不可能爲真,則假設b爲真,依此類推。換句話說,如果z3給出了真值賦值:在上述優先級下不是a,b,c,這意味着a不可能是真的,因爲a與b相比是高優先級的。希望我清楚地描述這個問題。我可以在z3中設置布爾變量的優先級嗎?
5
A
回答
4
在當前版本(v4.3.1)中沒有簡單的方法。我能看到的唯一方法是破解/修改Z3源代碼(http://z3.codeplex.com)。我們同意設置優先級對於某些應用程序是一個有用的功能,但是有一些問題。
首先,Z3在解決問題之前應用幾個變換(即預處理步驟)。變量被創建並消除。因此,原始問題的案例分解優先級對於由Z3解決的實際問題(應用所有變換後生成的問題)可能沒有意義。
一個戲劇性的例子是一個只包含比特向量的公式。默認情況下,Z3會將此公式減少爲命題邏輯並調用命題SAT求解器。在這種減少中,全部位矢量變量被消除。
Z3是求解器和預處理器的集合。默認情況下,Z3會自動爲用戶選擇一個求解器。其中一些解算器使用完全不同的算法。因此,所提供的優先級對於正在使用的求解器可能沒有用處。
由於GManNickG指出,可以爲特定求解器設置相位選擇策略。查看他評論中提供的帖子以獲取更多詳細信息。
相關問題
- 1. 我可以設置低優先級的Powershell啓動嗎?
- 2. 我可以設置工作隊列的優先級嗎?
- 3. 對於普通優先級進程,我可以將單個線程的優先級設置爲15以上嗎?
- 4. 設置優先級
- 5. 我可以在JavaScript中更改事件隊列優先級嗎?
- 6. 設置intent的優先級
- 7. 設置庫的優先級
- 8. 我可以更改Erlang中進程的優先級嗎?
- 9. 布爾運算符優先級
- 10. SSIS設置優先級,以一個
- 11. 我可以在div中設置Java中的最終變量嗎?
- 12. 在DatabaseReference.updateChildren()調用中設置優先級?
- 13. 在HTML事件中設置優先級
- 14. 在Selenium WebDriver中設置優先級
- 15. 如何在openmp中設置優先級?
- 16. Flex iframe設置優先級?
- 17. 設置優先級導致
- 18. AsyncTask設置優先級
- 19. 可以在「group-starting-with」條款上設置優先級?
- 20. SQL中的設置優先級
- 21. 是否可以設置主線程的優先級?
- 22. Javascript可以在數組中設置布爾值嗎?
- 23. 根據域,我可以在node.js中設置環境變量嗎?
- 24. 我可以在sed中設置LANG變量嗎?
- 25. 我可以在docker-compose.yml文件中設置/獲取變量嗎?
- 26. 我可以在變量設置中使用動態模型嗎?
- 27. 我可以在msbuild設置中使用系統變量名嗎?
- 28. 我可以通過perl控制進程優先級嗎
- 29. scrapy可以在設置中設置自定義變量嗎?
- 30. 使用Java在Windows中設置進程優先級爲背景優先級
也許相關:http://stackoverflow.com/q/13921545/87234 – GManNickG