Z3 中存在量词的值

Values of Existential Quantifiers in Z3

说,我写了一个带有量词的简单代码如下:

from z3 import *
s = SolverFor("LIA")
x1, y1 = Ints('x1 y1')
s.add(ForAll(x1, Implies(x1>=0, Exists(y1, (y1>x1)))))

打印(s.check()) 打印(s.model())

结果是:

sat
[ ]

这不应该输出一个可满足的 y1 值吗?

那个值是多少?请注意,y1 的值取决于公式中的 x1,因此仅打印 y1 没有意义。

一般来说,一旦进入通用量词下,z3 就不能再打印变量的值了。为了有意义地这样做,它必须打印所有前缀通用项,除非您的所有域都是有限的,否则这没有意义。 (也没有用。)