为什么可以';t Z3证明/承认在某些操作下'is_int'是封闭的?

为什么可以';t Z3证明/承认在某些操作下'is_int'是封闭的?,z3,smt,theorem-proving,Z3,Smt,Theorem Proving,例如,以下查询超时: (declare-const x Real) (declare-const y Real) (assert (is_int x)) (assert (is_int y)) (assert (not (is_int (+ x y)))) (check-sat) 据我所知,Z3的Real是数学实数,而不是具有微妙语义的机器实数。承认某些操作保持为int有什么问题吗?Z3将其归结为解决混合整数线性问题,这是一个较弱的领域。在这种情况下,它最终会产生无止境的分支和切口

例如,以下查询超时:

(declare-const x Real)
(declare-const y Real)
(assert (is_int x))
(assert (is_int y))
(assert (not (is_int (+ x y))))
(check-sat)

据我所知,Z3的
Real
是数学实数,而不是具有微妙语义的机器实数。承认某些操作保持
为int
有什么问题吗?

Z3将其归结为解决混合整数线性问题,这是一个较弱的领域。在这种情况下,它最终会产生无止境的分支和切口