intros t is_mon_t t0 suc_t0.
generalize is_mon_t; clear is_mon_t.
elim suc_t0; clear suc_t0 t0.
trivial.
intros t0 t1 in_t1 t2 suc_t2 ih is_mon_t0.
apply ih; clear ih suc_t2 t2.
generalize in_t1; clear in_t1.
inversion_clear is_mon_t0.
simpl in |- *.
generalize H; clear H.
elim succs; clear succs.
intros H in_t1.
inversion_clear in_t1.
intros t2 succs ih H in_t1.
inversion_clear in_t1.
inversion_clear H; assumption.
apply ih.
inversion_clear H; assumption.
assumption.
Qed.
Inductive Is_Monotone (t : Tree) : Prop :=
is_monotone_intro :
(forall t0 : Tree,
Successor t0 t ->
forall i : I,
P (root t0) i -> forall t1 : Tree, Successor t1 t0 -> P (root t1) i) ->
Is_Monotone t.

(* Specifications: *)
Lemma is_monotone_successor :
forall T : Tree,
Is_Monotone T -> forall t : Tree, Successor t T -> Is_Monotone t.