【发布时间】:2019-09-18 07:51:58
【问题描述】:
我试图通过 SMT-LIB 限制新定义的排序范围。这样做可以通过减少必要断言的数量来简化我的脚本。
为此,我使用了 define-sort 和 forall。
(define-sort R () Real)
(assert (forall ((x R)) (< 0 x)))
(declare-const r R)
(check-sat)
但无论如何,z3 总是返回 unsat。所以我想这是不可能的。是吗?
【问题讨论】:
-
(forall ...是不可满足的,因为并非所有实数都大于 0。您可能正在寻找暗示,例如(forall ... (implies (< 0 x) (some other constraint))这样其他一些约束只需要在 x 大于 0 时为真。