(********************************************************************)
(*      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_n_O : forall n : nat, max n 0 = n.