\+
Term1 = Term2
.
This predicate is logically sound if its arguments are sufficiently
instantiated. In other cases, such as ?- X
,
the predicate fails although there are solutions. This is due to the
incomplete nature of \+/1.
\=
Y.
To make your programs work correctly also in situations where the arguments are not yet sufficiently instantiated, use dif/2 instead.