我尝试使用位向量在模型值中获得随机结果,例如 de Moura 建议的模型值,但随后使用 Z3Py 而不是 SMTLIB。我把他的例子翻译成:
from z3 import *
s = Solver()
x = BitVec('x', 16)
set_option('auto_config', False)
set_option('smt.phase_selection',5)
s.add(ULT(x,100))
s.check()
s.model()
s.check()
s.model()
但是,结果似乎总是相同的,即 - 使用 s.check() 重复检查不会改变结果。- 即使在 python 交互式 shell 重新启动后,执行的结果也是一样的
添加随机种子的更改不会改变结果: set_option('smt.random_seed', 123)
有谁知道为什么不能按预期工作?
提前致谢!
卡斯滕