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.