浏览 Z3 源代码,我发现了一堆引用 QF_FPA 的文件,它似乎代表无量词、浮点算术。但是,我似乎无法找到有关其状态或如何通过各种前端(特别是 SMT-Lib2)使用它的任何文档。这是 IEEE-754 FP 的编码吗?如果是这样,支持哪些精度/操作?任何文档都会非常有帮助..
是的,Z3 支持浮点运算,正如 Ruemmer 和 Wahl 在最近的 SMT 研讨会上提出的那样paper。现阶段还没有官方的FPA理论,Z3的支持非常基础(只有bit-blaster)。我们还没有积极宣传这一点,但它可以完全按照 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)