【发布时间】:2019-02-18 12:58:23
【问题描述】:
我正在使用 z3 编写一个静态检查器。我有以下问题:
>>> from z3 import *
>>> s = Solver()
>>> s.add(FreshInt() + FreshInt() > 0)
>>> s.check()
sat
>>> s.model()
[]
如您所见,模型中未显示新变量。我也无法获得它们的价值:
>>> a = FreshInt()
>>> s.add(a > 3)
>>> s.check()
sat
>>> s.model()
[]
>>> s.model()[a]
我查看了文档,但找不到改变这种行为的方法。我可以自己生成唯一的变量,但如果 z3 可以为我处理这个问题,那就太好了。有人可以指出我正确的方向吗?还是不能在 z3py 中更改?
【问题讨论】:
-
我认为这是由于
FreshInt;这些可以被认为是“内部的”。使用a = Int('a'),该示例按预期工作。