diff --git a/src/lib/dif.pl b/src/lib/dif.pl index 347e9d13..ad3053ec 100644 --- a/src/lib/dif.pl +++ b/src/lib/dif.pl @@ -38,11 +38,14 @@ 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_set_variables(XVars, X, Y), - dif_set_variables(YVars, X, Y) - ). +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([]) --> []. gather_dif_goals([(X \== Y) | Goals]) -->