Definition indprinciple_3_aux (n : nat) :=
  forall P : term -> Prop,
  (forall (a : ad) (tl : term_list),
   (forall u : term, term_list_occur u tl -> P u) -> P (app a tl)) ->
  forall t : term, term_high t <= n -> P t.

(* Specifications: *)
Lemma indprinciple_3_0 : indprinciple_3_aux 0.
Lemma indprinciple_3_1 : forall n : nat, indprinciple_3_aux n -> indprinciple_3_aux (S n).
Lemma indprinciple_3_2 : forall (n : nat) (P : term -> Prop), (forall (a : ad) (tl : term_list), (forall u : term, term_list_occur u tl -> P u) -> P (app a tl)) -> forall t : term, term_high t <= n -> P t.
Lemma indprinciple_term : forall P : term -> Prop, (forall (a : ad) (tl : term_list), (forall u : term, term_list_occur u tl -> P u) -> P (app a tl)) -> forall t : term, P t.
Lemma Ndouble_inv_N0 : forall x : ad, Ndouble x = N0 -> x = N0.
Lemma Ndouble_inv_xO : forall (x : ad) (p : positive), Ndouble x = Npos (xO p) -> x = Npos p.
Lemma Ndouble_plus_one_inv_xH : forall x : ad, Ndouble_plus_one x = Npos 1 -> x = N0.
Lemma Ndouble_plus_one_inv_xI : forall (x : ad) (p : positive), Ndouble_plus_one x = Npos (xI p) -> x = Npos p.