proposition: Lemma nat_strong : forall (P : nat -> Prop), P O -> (forall N, (forall n, (n <= N)%nat -> P n) -> P (S N)) -> forall n, P n.
proof: Proof. intros P PO PS ; assert (H : forall N n, (n <= N)%nat -> P n). intro N ; induction N ; intros n nleN ; inversion_clear nleN. assumption. apply PS, IHN. apply IHN ; assumption. intro n ; apply H with n ; reflexivity. Qed.
imports: Arith MyNat