瀏覽Z3源代碼,我遇到了一堆涉及QF_FPA的文件,這似乎代表無量化的浮點算術。但是,我似乎無法找到任何關於其狀態的文檔,或者如何通過各種前端(特別是SMT-Lib2)來使用它。這是IEEE-754 FP的編碼嗎?如果有,支持哪些精度/操作?任何文檔都是最有幫助的。QF_FPA? Z3是否支持IEEE-754算法?
7
A
回答
7
是的,Z3支持Ruemmer和Wahl在最近的SMT研討會paper中提出的浮點運算。在現階段,沒有正式的FPA理論,Z3的支持是非常基本的(只有一點點衝擊波)。我們現在還沒有積極投放廣告,但它可以完全按照Ruemmer/Wahl(設置邏輯QF_FPA和QF_FPABV)的文章中提出的方式使用。目前,我們正在爲FPA制定一個新的決策程序,但這需要一段時間才能獲得。
這裏是什麼的FPA SMT2公式可能看起來像一個簡單的例子:
(set-logic QF_FPA)
(declare-const x (_ FP 11 53))
(declare-const y (_ FP 11 53))
(declare-const r (_ FP 11 53))
(assert (and
(= x ((_ asFloat 11 53) roundTowardZero 0.5 0))
(= y ((_ asFloat 11 53) roundTowardZero 0.5 0))
(= r (+ roundTowardZero x y))
))
(check-sat)
3
浮點邏輯被命名爲QF_FP和QF_FPBV在v4.4.2。 RELEASE_NOTES中理論描述的鏈接被破壞。正確的頁面是http://smtlib.cs.uiowa.edu/theories-FloatingPoint.shtml。上面的建議示例應該是
(set-logic QF_FP)
(declare-const x (_ FloatingPoint 11 53))
(declare-const y (_ FloatingPoint 11 53))
(declare-const r (_ FloatingPoint 11 53))
(assert (and
(= x (fp #b0 #b00000000010 #b0000000000000000000000000000000000000000000000000010))
(= y (fp #b0 #b00000000010 #b0000000000000000000000000000000000000000000000000010))
(= r (fp.add roundTowardZero x y))
))
(check-sat)
+0
感謝Daniel更新示例! SMT FP標準已經更新,這確實是新的語法。我們已經從Z3中刪除了所有舊符號,並且我們只支持最終的標準。 – 2015-10-31 13:34:04
相關問題
- 1. Z3:Linux中的OCaml支持
- 2. 是否支持Z3路線圖上的遞歸函數?
- 3. z3是否支持證明歸納事實?
- 4. 是否dwscript支持運算符重載
- 5. Java是否支持運算符重載?
- 6. Solr是否支持搜索運算符?
- 7. 迭代器是否支持+運算符?
- 8. 是否支持MSNP9?
- 9. 是否支持DataGrid?
- 10. 是否支持ARC?
- 11. Java 8 Jsse提供程序是否支持sha224withRSA算法?
- 12. Babel.js是否支持ES6 Object.observer()方法?
- 13. Mongoose是否支持Mongodb findAndModify方法?
- 14. Linq/.NET3.5是否支持'zip'方法?
- 15. java是否支持嵌套方法?
- 16. MonoDroid是否支持java.lang.reflect包裝方法?
- 17. Java是否支持inner/local/sub方法?
- 18. OpenRasta是否支持HEAD HTTP方法?
- 19. omnicppcomplete是否支持typedef語法
- 20. Decimal.Parse()是否支持科學記數法?
- 21. JRuby是否支持{thing:「hello」}語法?
- 22. freeradius是否支持PEAP V0 TLS方法
- 23. EntityDataSource是否支持「it.Property.Property」語法?
- 24. z3不支持注入的解決方法
- 25. Microsoft是否打算在.Net中支持Reflection?還是有義務?
- 26. Firefox是否支持enablePrivilege(「UniversalBrowserRead」)?
- 27. Xcode 4.3是否支持distcc?
- 28. GCC是否支持C++ AMP
- 29. PySide是否支持Python 3?
- 30. AlertDialog是否支持WebView?
是否已將此浮點運算支持合併到z3的最新穩定版本4.3.2中?另外,浮點理論支持是否已經與其他理論(例如線性整數算法)結合起來,可以是穩定版本還是不穩定版本? – user1779685 2015-06-29 17:41:20
4.3.2只有部分支持,目前版本爲4.4.0,其中包括理論組合在內的全面支持。請注意,從浮點數到實數/有理數的轉換引入了非線性約束,因此與線性算術的組合也變爲非線性。 – 2015-06-30 10:17:46
感謝有關轉換和理論組合的知識。我檢查了github:4月底的z3版本更廣泛的支持是好消息。將很快嘗試。 – user1779685 2015-06-30 14:36:17