(* * Maximum element in a list *)
From Undecidability Require Export TM.Util.Prelim TM.Util.ArithPrelim.
(* ** Basic lemmas about upper bounds *)

(* An upper bound of a list is either in the list, or it is not in the list and is a strict upper bound *)
Lemma upperBound_In (xs : list nat) (u : nat) :
(forall x, In x xs -> x <= u) ->
(In u xs) \/
(~ In u xs /\ forall x, In x xs -> x < u).