dif/2: Succeed unconditionally if the arguments are not unifiable.
This addresses one part of
@@ -38,10 +38,13 @@ verify_attributes(Var, Value, Goals) :-
% Probably the world's worst dif/2 implementation. I'm open to
% suggestions for improvement.
-dif(X, Y) :- X \== Y,
- ( term_variables(X, XVars), term_variables(Y, YVars),
+dif(X, Y) :-
+ X \== Y,
+ ( X \= Y -> true
+ ; ( term_variables(X, XVars), term_variables(Y, YVars),
dif_set_variables(XVars, X, Y),
dif_set_variables(YVars, X, Y)
+ )
).
gather_dif_goals([]) --> [].
