python z3-solver 在 MacOS 上的结果不正确

Incorrect result from python z3-solver on MacOS

我是 z3 的新手。我正在尝试 运行 以下 python 示例与 z3.

from z3 import *

x = Real('x')
y = Real('y')
s = Solver()
s.add(And(x+y>1,x==0.00001,y==0.1))
print(s.check())

返回的结果是sat,x+y=0.10001<1,我认为是不正确的。我还打印出求解器 s

[And(x + y > 1, x == 1/0, y == 1/10)]

我注意到其中的项 x==1/0 的分母为 0。我在 macOS 10.14.6 Mojave 上使用 Python 3.9.8,z3-solver 4.8.12.0 运行ning。

我还在 Ubuntu 20.04、python3.8 和 z3-solver 4.8.10.0 的机器上尝试了完全相同的示例。返回结果为unsat,求解器打印出来时分母没有0

有谁知道我在这里做错了什么吗?非常感谢您。

我无法用 z3 4.8.14 复制它;它打印 unsat 的地方,就像您在 4.8.10 中发现的那样。您应该简单地升级您的 z3 版本。

之前曾有过关于此的问题,并且它出现在某些版本中,像 0.00001 这样的少数版本没有被正确翻译。我怀疑你正在遭受同样的痛苦。看这里:

升级最好;如果你不能尝试那里的建议:不要使用 0.00001,而是尝试 Q(1, 100000)