proposition: Lemma Nat_induction (r:property): (r \0c) -> (forall n, natp n -> r n -> r (csucc n)) -> (forall n, natp n -> r n).
proof: Proof. move=> r0 ri n nN. case: (p_or_not_p (r n)) => // nrn. case: (least_int_prop2 nN nrn (p := fun t => ~ r t)) => //. by move => [xN nsr /excluded_middle rx]; case: nsr; apply: ri. Qed.
imports: mathcomp(ssreflect ssrfun ssrbool eqtype ssrnat)