You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS环境Python z3-solver求解实数约束返回错误结果求助

问题成因

你遇到的是z3-solver 4.8.12.0版本macOS Python绑定的已知数值解析bug,你的代码本身没有操作错误。
该版本在将Python侧的极小十进制浮点数转换为Z3的Real类型时,数值解析逻辑出错:你传入的0.00001会被错误转换为1/0的非法表达式,该表达式在Z3的算术处理中会被识别为正无穷,因此x=正无穷,y=0.1满足x+y>1的约束,最终求解器返回错误的sat结果。
你在Ubuntu上使用的4.8.10.0版本不存在该解析bug,因此运行结果正确。

修复方案
  • 方案1:降级z3-solver到无bug的版本,执行命令:
    pip install z3-solver==4.8.10.0
  • 方案2:规避浮点解析逻辑,直接用字符串或分数形式定义实数值:
    将代码中的x==0.00001替换为x == RealVal("0.00001")或者x == Q(1, 100000)即可,该写法兼容所有z3版本,不会出现解析错误。

内容的提问来源于stack exchange,提问作者Younger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:57:05