abolish (X) :- elan (abolish, X). append ([], X, X) :- !. append ([X|Y], Z, [X|W]) :- append (Y, Z, W). atom (X) :- functor (X, Y, 0). atomic (X) :- atom (X); integer (X). consult (X) :- elan (consult, X). end :- bye. fail :- []. findall (X, Y, Z) :- tell ("$$"), write ("[ "), findall (X,Y); write (" ]"), told, see ("$$"), read (Z), seen, elan (forget, "$$"). findall (X, Y) :- call (Y), writeq (X), write (","), []. integer (X) :- functor (X, Y, -1). listing (X). member (X, [X|Z]). member (X, [Y|Z]) :- member (X, Z). nl :- elan (line). non var (X) :- var (X), !, []; . not (X) :- call (X), !, []; . notrace :- elan (trace, off). reconsult (X) :- elan (reconsult, X). repeat. repeat :- repeat. see (X) :- elan (sysin, X). seen :- elan (sysin, ""). tab (X) :- tab(X,1). tab (X,Y) :- Y<=X, !, put (32), incr(Y), tab(X,Y);. tell (X) :- elan (sysout, X). told :- elan (sysout, ""). trace :- elan (trace, on). true. < (X, Y) :- <= (X, Y), <> (X, Y). > (X, Y) :- <= (Y, X). >= (X, Y) :- < (Y, X).