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 就不能再打印变量的值了。为了有意义地这样做,它必须打印所有前缀通用项,除非您的所有域都是有限的,否则这没有意义。 (也没有用。)
说,我写了一个带有量词的简单代码如下:
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 就不能再打印变量的值了。为了有意义地这样做,它必须打印所有前缀通用项,除非您的所有域都是有限的,否则这没有意义。 (也没有用。)