Hi, Just to make sure, this is mode incorrect, yes? :- pred p(pred(T), T). :- mode p(pred(in(I =< ground)) is det, in) is det. p(P, X) :- P(X). Peter