【发布时间】:2016-06-23 16:59:32
【问题描述】:
由于disabling unsound simplification of root objects,Z3 现在将在这个涉及平方根的简单模型上失败:
(define-fun sqrt ((x Real)) Real (^ x 0.5))
(declare-fun y () Real)
(declare-fun x () Real)
(assert (= y (sqrt x)))
(check-sat)
这会在 Z3 4.4.1 中返回 sat,但在主版本中返回 unknown。
如果我将问题定义更改为使用 Nikolaj 在this question 中定义的is_sqrt,则 Z3 master 将返回sat。使用is_sqrt的方法表明通过引入辅助变量可以将所有实数根推入QF_NRA,所以我认为Z3应该能够解决所有涉及实数根的问题。
假设模型的其余部分在QF_NRA 中,我如何在实数中定义一个平方根函数以产生可判定的理论?
【问题讨论】:
标签: z3