为什么Z3不能证明/承认`is_int`在某些操作下被关闭?

时间:2016-06-03 16:10:42

标签: 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是数学实数,而不是具有微妙语义的机器。在承认某些操作保留is_int

时是否存在任何问题

1 个答案:

答案 0 :(得分:1)

Z3将其减少为解决混合整数线性问题,这是一个较弱的区域。在这种情况下,它最终产生无尽的分支和切割。