0
这个脚本z3py:存在量词
from z3 import *
solver = z3.Solver()
x = Int('x')
def f(y):
return y+y
solver.add(x >= 0, x < 10, Exists(x, f(x) == 4))
print solver.check()
print solver.model()
的用法给我
sat
[x = 0]
作为一个答案。这不是我想要或期望的。作为一个答案,我想看看
sat
[x = 2]
我发现了另外两个职位相似的方向((Z3Py) declaring function和Quantifier in Z3)去的事,但不奏效。
在这种情况下,你如何使用存在的量词来获得充分的答案?
太好了。那么我的第一个问题就是'存在'的范围。我将断言修改为'solver.add(Exists(x,And(f(x)== 4,x> = 0,x <10)))',SMT解算器现在返回一个'sat'或'取决于我的输入正确。尽管如此,我还是无法让求解者给我一个满足断言的'x'暗示。你怎么能这样做?你上面提到的解决方案是正确的,因为它可以做你说的,但是我想在另一个上下文中使用量词(模型检查)并且需要结果。 –
实现这一目标的最好方法是自己动手配方,即插入替代存在的新功能符号,并取决于范围内的普遍性。这样,您就可以控制这些函数的名称,并且它们将在模型中进行函数解释。 –