我尝试使用代码在表达式中删除:
(declare-const t Int)
(assert (and (or (>= t 2) (>= t 1)) (not (= t 1))))
(apply ctx-solver-simplify)
我想得到的结果如下:t> = 2 但结果是:
(goals
(goal
(>= t 1)
(not (= t 1))
:precision precise :depth 1)
)
有人会帮我怎么做吗?
答案 0 :(得分:2)
策略simplify
有一个选项:eq2ineq
。启用后,它会将等级t1 = t2
转换为t1 <= t2 and t1 >= t2
。应用这种策略后,策略propagate-ineqs
将更有效。
这是一个可以解决问题的脚本: http://rise4fun.com/Z3/JWit
请注意,这不是一般解决方案。内置策略都没有完全符合您的要求。