You say that the one in your library is "based on" the one in Clocksin & Mellish. You should be aware that that version has at least two bugs, one easily corrigible and of concern only to people trying to using "pushback lists", and the other fundamental and likely to cause trouble to a lot of people. The lesser bug is that rules of the form p, [X] --> .... do not work. The bug is obvious when you look at the relevant clause in the translator (VCHECK.PL in the DEC-10 Prolog library would catch it). The major bug is that the translator produces rules which match directly against lists instead of calling 'C'/3, so that rules like p(X) --> {q(X)}, !, [foo]. do not work. The problem is that this will be translated as p(X, [foo|S], S) :- q(X), !. which matches against foo far too soon. Since you say "based on" rather than "identical to", you may already have fixed these bugs.