Welcome! Please see the About page for a little more info on how this works.

0 votes
in core.logic by

When a unification constraint and a disequality constraint are applied to the same lvars they might eliminate possibilities.

`
(run 1 [q]
(fresh [v n]
(== q v)
(!= q v)))

;=> ()
`

However when a separate disequality is interleaved the possibility is not eliminated.

`
(run 1 [q]
(fresh [v n]

(== q v)
(!= q n)
(!= q v)))

;=> ((_0 :- (!= (_0 _0)) (!= (_0 _1))))
`

I expected this to also return '().

1 Answer

0 votes
by
...