Z3 使用ctx简化策略的奇怪输出

Z3 使用ctx简化策略的奇怪输出,z3,Z3,下面是一个小例子: (declare-datatypes () ((Type1 a b c d e g h i f k l m n o p q r s t u v w z))) (declare-const x Type1) (declare-const y Type1) (assert (and (= y x) (or (and (not (= x g)) (not (= x a))) (and (or (not (= x g)) (not (= x q))) (not (= x a)))))

下面是一个小例子:

(declare-datatypes () ((Type1 a b c d e g h i f k l m n o p q r s t u v w z)))
(declare-const x Type1)
(declare-const y Type1)
(assert (and (= y x) (or (and (not (= x g)) (not (= x a))) (and (or (not (= x g)) (not (= x q))) (not (= x a))))))
(apply ctx-simplify)
输出为:

(goals
(goal
  (= y x)
  (or (not and) (not (= x a)))
  :precision precise :depth 1)
)
(或(非和)(非(=xa))是什么意思?臭虫


谢谢。

谢谢你指出这一点。 我同意打印输出中的“and”不带参数看起来很奇怪。 上下文简化器创建一个带有0个参数的连接。 它被打印为简单的“和”。 因此,ctx simplify返回的表达式等价于(而不是(=xa))。 我将更新ctx simplify策略,以返回不带空连词的表达式