max_valued([Head|Tail], Max) :- max_valued(Tail, Head, Max). max_valued([], Term, Term). max_valued([Head|Tail], Term, Max) :- higher_valued(Head, Term), max_valued(Tail, Head, Max). max_valued([Head|Tail], Term, Max) :- higher_valued(Term, Head), max_valued(Tail, Term, Max). higher_valued(X,Y) :- X > Y.