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

Posted

技术标签:

【中文标题】MacOS 上 python z3-solver 的结果不正确【英文标题】:Incorrect result from python z3-solver on MacOS 【发布时间】:2022-01-09 10:17:13 【问题描述】:

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

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

[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。

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

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

【问题讨论】:

【参考方案1】:

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

之前有关于此的问题,并且在某些化身中出现了像0.00001 这样的小数字没有被正确翻译。我怀疑你正在遭受同样的痛苦。见这里:Why is Z3 "rounding" small reals to 1.0/0.0?

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

【讨论】:

您好,别名,非常感谢您的帮助。我可以通过更新我的 z3 版本来解决这个问题。

以上是关于MacOS 上 python z3-solver 的结果不正确的主要内容,如果未能解决你的问题,请参考以下文章

MacOS 上 Qlik 中的 Python 集成

如何在 MacOS 上明确卸载 python 2.7 [重复]

如何在MacOS的VScode上安装Python3

如何在 macOS 上使用 python 将图片发送到打印机

mysql-python 不会在 MacOS 上安装

如何在 macOS 上安装 dbus-python?