【发布时间】:2017-04-22 10:21:48
【问题描述】:
我正在尝试使用 CVC4 进行一些实验。
(set-option :produce-models true)
(set-option :produce-assignments true)
(set-logic QF_UFDT)
(declare-datatypes ()
(Color (Red) (Black))
)
(declare-const x C)
(declare-const y C)
(assert (not (= x y)))
(check-sat)
(get-value (x y))
(assert (distinct x y))
(check-sat)
(get-value (x y))
当我使用 CVC4 运行它时,我得到以下输出
sat
((x R) (y R))
sat
((x R) (y R))
我对此输出的这种行为感到困惑。 如果我断言 x 和 y 不应该相等,它们的值必须不同,对吗? 不同断言的情况也是如此。 CVC4 是否将 x 和 y 视为两个不同的“对象”并因此给出它给出的输出?
【问题讨论】:
标签: smt algebraic-data-types cvc4