是否可以使用z3来简化此表达式
到这个
?如果是,我们应该如何实现呢?
答案 0 :(得分:1)
这两个表达式并不相同。特别地,第一个公式暗示t_FC< 1。 您可以使用称为ctx-solver-simplified的策略来简化与您类似的公式,以利用上下文约束,例如t_FC< 1。
您的示例的编码在:http://rise4fun.com/Z3Py/xCN2
tFb, tFc, tFt = Reals('tFb tFc tFt')
g = Goal()
g.add(And([Not(tFb >= 1),
Implies(tFb <= 1, tFb + tFc <= 5),
Implies(tFb <= 1, tFb + tFc + tFt <= 5),
Implies(tFb <= 1, tFb + tFc + tFt <= 5),
]))
print g
print Tactic('ctx-solver-simplify')(g)
结果是:
¬(tFb ≥ 1), tFb + tFc ≤ 5, tFb ≤ 1 ⇒ tFb + tFc + tFt ≤ 5
教程http://rise4fun.com/Z3Py/tutorial/strategies解释了使用Z3中的策略(在python接口的上下文中)