% compare_list_selects( Input, Sel, Op, Rej, Selected, Rem ) :- compare_list_selects( [], Tail, _Pred, [] , [], Tail ). compare_list_selects( [Hs|Ts], [Hin|Tin], Pred, Rej, Selected, Rem ) :- Goal =.. [Pred,Hin,Hs], ( call(Goal) -> NxS = Ts, TRej = Rej, Selected = [Hin|TSelected] ; NxS = [Hs|Ts], Rej = [Hin|TRej], TSelected = Selected ), compare_list_selects( NxS, Tin, Pred, TRej, TSelected, Rem ).