Z3Py:为什么下面的假设不能满足



为什么以下内容不能产生一组可满足的假设?

最后一个假设不是直接来自假设2和3吗?

import z3
# Initialize variables
t = z3.Int('t')
z = z3.Real("z")
y = z3.Real("y")
M = z3.Real("M")
x = z3.Function("x", z3.IntSort(), z3.RealSort())
f = z3.Function("f", z3.RealSort(), z3.RealSort())
d_f1 = z3.Function("d_f1", z3.RealSort(), z3.RealSort())
# Add assumptions
s = z3.Solver()
s.add(f(y) == f(z) + d_f1(z) *(y-z))
s.add(d_f1(z) < M)
s.add(f(x(t+1)) == f(x(t)) + d_f1(x(t)) *(x(t+1)-x(t)))
s.add(f(x(t+1)) < f(x(t)) + M *(x(t+1)-x(t)))
# Check if assumptions are satisfiable
s.check()

我得到的结果是,

unknown

有没有一种方法可以对求解器确定为可满足的类似假设集进行编码?

Z3返回"unknown",这意味着它无法为断言找到模型。背景是您的约束对自由函数(和整数)使用非线性算术。Z3没有为你的公式所在的片段提供决策过程。相反,它尝试了一个不完整的搜索过程,并得出了一个既不能建立也不能反驳断言的状态。

相关内容

最新更新