exists int_null.
simpl in |- *.
trivial.
intros i; elim (int_succ i); intros i1 less1.
exists i1; assumption.
intros a ih_a b ih_b.
elim ih_a; intros i1 below_a.
elim ih_b; intros i2 below_b.
elim (max_int i1 i2).
intros j le1 le2.
exists j.
split.
elim le1.
intro lt1.
apply below_form_less_below_form with i1; assumption.
intros eq1.
rewrite <- (equal_eq i1 j); assumption.
elim le2.
intro lt2.
apply below_form_less_below_form with i2; assumption.
intros eq2.
rewrite <- (equal_eq i2 j); assumption.
intros a ih_a b ih_b.
elim ih_a; intros i1 below_a.
elim ih_b; intros i2 below_b.
elim (max_int i1 i2).
intros j le1 le2.
exists j.
split.
elim le1.
intro lt1.
apply below_form_less_below_form with i1; assumption.
intros eq1.
rewrite <- (equal_eq i1 j); assumption.
elim le2.
intro lt2.
apply below_form_less_below_form with i2; assumption.
intros eq2.
rewrite <- (equal_eq i2 j); assumption.
intros a ih_a b ih_b.
elim ih_a; intros i1 below_a.
elim ih_b; intros i2 below_b.
elim (max_int i1 i2).
intros j le1 le2.
exists j.
split.
elim le1.
intro lt1.
apply below_form_less_below_form with i1; assumption.
intros eq1.
rewrite <- (equal_eq i1 j); assumption.
elim le2.
intro lt2.
apply below_form_less_below_form with i2; assumption.
intros eq2.
rewrite <- (equal_eq i2 j); assumption.
Qed.

(* Specifications: *)
Lemma max_int_of_list : forall Gamma : flist, {j : Int | below_list Gamma j}.
intros Gamma; elim Gamma; clear Gamma.