Z3和x27之间不一致的可满足性;s";ctx解算器简化“;及;ctx简化;

Z3和x27之间不一致的可满足性;s";ctx解算器简化“;及;ctx简化;,z3,z3py,simplification,sat,satisfiability,Z3,Z3py,Simplification,Sat,Satisfiability,我试着用z3(我用的是z3py)来检查一个公式是否可以满足,如果可以满足,那么就简化它 我最初使用Z3的ctx解算器simplify。然而,由于我反复打很多电话,使用这种策略的成本非常高。因此,我尝试使用Z3的ctx simplify,它只执行局部简化,但仍应返回是否满足 然而,我遇到了两种情况,它产生了一种简化,但并不令人满意。例如,考虑以下内容: (declare-const x Int) (declare-const y Int) (assert (and (< x 6) (and

我试着用z3(我用的是z3py)来检查一个公式是否可以满足,如果可以满足,那么就简化它

我最初使用Z3的
ctx解算器simplify
。然而,由于我反复打很多电话,使用这种策略的成本非常高。因此,我尝试使用Z3的
ctx simplify
,它只执行局部简化,但仍应返回是否满足

然而,我遇到了两种情况,它产生了一种简化,但并不令人满意。例如,考虑以下内容:

(declare-const x Int)
(declare-const y Int)
(assert (and (< x 6) (and (not (> x 2)) (and (= x y) (and (not (< x 8)) (not (= x 4)))))))
(apply (then ctx-solver-simplify propagate-values (par-then (repeat (or-else split-clause skip)) propagate-ineqs)))
(apply (then ctx-simplify propagate-values (par-then (repeat (or-else split-clause skip)) propagate-ineqs)))

有谁能向我解释一下为什么会发生这种情况,以及我是否正确使用了战术?谢谢

即使公式不令人满意,这些战术也可以进球。只有像smt这样的策略(以及像qfbv这样为您调用smt的策略)不能做到这一点。
您可以将“smt”附加到您的战术管道中。

谢谢您的回复。你能告诉我如何在战术管道中添加“smt”吗?很抱歉,我对此还是新手。
(apply(然后是ctx简化传播值(然后是par-then(repeat(或者split-clause skip))传播ineqs)smt)
,但是这并没有返回简化的布尔条件。它只是返回令人满意的结果。
(goal
  (< x 6)
  (not (> x 2))
  (= x y)
  (not (< x 8))
  (not (= x 4))
  :precision precise :depth 2)
)