

Unexpectedly, it is
max_list(List,Max)
on one hand but
max_member(Max,List)`
on the other hand: the arguments are reversed!
This predicate throws if you have a non-numeric list, though it tries to resolve atoms to 0-arity functions according to the error message:
?- max_list([1,w,3],_). ERROR: Arithmetic: `w/0' is not a function
Doesn't like variables either. Logically, the result from the goal below would be another goal: max_list([3,X],V)
.
?- max_list([1,X,3],V). ERROR: Arguments are not sufficiently instantiated
It fails if you give an evidently non-number as Max, keeping things logical:
?- max_list([1,2,3,4],foo). false.
But you can have arithmetic expressions:
?- max_list([0.5,pi],X). X = 3.141592653589793. ?- max_list([0.5,pi()],X). X = 3.141592653589793. ?- max_list([0.5,-pi()],X). X = 0.5. ?- max_list([0.5,random_float],X). X = 0.8933638922317843. ?- max_list([-0.5,-random_float],X). X = -0.5. ?- max_list([-0.5,-random_float],X). X = -0.24764710044780866. ?- max_list([0.5,2*sqrt(8)],X). X = 5.656854249492381.