Итак, оператор univ. Я не совсем понимаю это.
Например:
foo(PredList,[H|_]) :- bar(PredList,H).
foo(PredList,[_|T]) :- foo(PredList,T),!.
bar([H|_],Item) :- G =.. [H,Item],G.
bar([_|T],Item) :- bar(T,Item).
Что это делает? Это похоже на то, верно ли другое предикат. Я не понимаю, что делает "..".
Как бы вы переписали это без оператора univ?