I am trying experiment with CVC4 a bit.
(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))
When I run this using CVC4 I am getting the following output
sat
((x R) (y R))
sat
((x R) (y R))
I am confused by this behaviour by this output. If I am asserting x and y should not be equal their values must be different right? Same is the case with distinct assertion. Is CVC4 treating x and y as two different "objects" and hence giving the output it is giving?