
min(Number1, Number2, Number1) :- Number1 =< Number2.
min(Number1, Number2, Number2) :- Number1 > Number2.

smallest([Head|Tail], Min) :-
    smallest(Tail, Head, Min).

smallest([], Min, Min).
smallest([Head|Tail], Min0, Min) :-
    min(Head, Min0, Min1),
    smallest(Tail, Min1, Min).