我在Mac上看到z3py出现了一个奇怪的问题,想知道是否有人之前看过这个:
$ cat bug.py
from z3 import *
x = Int('x')
s = Solver()
s.add(x > 5)
print(s.check())
print(s.model())
$ python bug.py
sat
[x = ]
模型中缺少x的值。我尝试了master和unstable分支,结果相同。但是,如果在类似的.smt2文件上运行,z3本身确实提供了正确的模型。我的配置是Mac OSX 10.6.8,Python 2.7.4。
答案 0 :(得分:3)
这个问题对我的设置非常具体,但也许有人会遇到它:根本原因是动态加载器拾取了错误版本的libgomp - 即用于编译和运行的版本不匹配。
以下是此问题的更严重表现:
$ python
Python 2.7.4 (default, May 9 2013, 18:51:46)
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from z3 import *
>>> IntVal(1)
>>>
不打印数值,即输出正确
>>> IntVal(1)
1
>>>
将DYLD_LIBRARY_PATH设置为指向库的正确版本可以解决问题。
答案 1 :(得分:2)
我在Mac OSX 10.8.3上看不到Z3 4.1和Python 2.7.2的任何问题。我想知道这是不是出于某种原因吃掉角色的某种终端问题。如果将输出重定向到文件,您会看到什么? (即尝试“python bug.py> out”。文件“out”的内容是否正常?)