What is the logical 'not' in Prolog?
问题 The problem that I face, is a bit trivial. I want to use logical not in Prolog, but it seems that not/1 is not the thing that I want: course(ai). course(pl). course(os). have(X,Y) :- course(X),course(Y),not(X = Y). I query: have(X,Y), write(X-Y), nl , fail. And I do not get the result I want :( 回答1: In place of not(X = Y) you need to write \+ X = Y or X \= Y . But consider to use dif(X,Y) instead. dif/2 is present in B, SWI, YAP, SICStus. To see the difference: ?- X = b, dif(a, X). X = b. ?-