?- LP = not(true(LP)).
LP = not(true(LP)).
?- unify_with_occurs_check(LP, not(true(LP))).
false.
unify_with_occurs_check/2 fails, because LP occurs in not(true(LP))
, just like it would for whatever(LP)
or whatever1(whatever2(LP))
.
The not
and true
are just term names.
You probably want clpb: SWI-Prolog -- Manual