(********************************************************************)
(*      max                                                         *)


Fixpoint max (n m : nat) {struct n} : nat :=
  match n with
  | O => m
  | S p => match m with
           | O => S p
           | S q => S (max p q)
           end
  end.

Lemma max_Sn_n : forall n : nat, max (S n) n = S n.