proposition: Lemma induction_defined_pr1 h a p (f := induction_defined1 h a p): natp p -> [/\ source f = Nat, surjection f, Vf f \0c = a, (forall n, n <c p -> Vf f (csucc n) = h n (Vf f n)) & (forall n, natp n -> ~ (n <=c p) -> Vf f n = a)].
proof: Proof. move=> pN. move: (induction_defined_pr0 (fun n x => Yo (n <c p) (h n x) a) a). rewrite /f /induction_defined1. set g := (induction_defined0 _ a). move=> [pa pb pc pd]; split => // n np. by rewrite (pd _ (NS_le_nat (proj1 np) pN)); Ytac0. move => cnp. have nnz: (n <> \0c) by dneg nz; rewrite nz; apply:(cle0n pN). have [pnN nsp]:= (cpred_pr np nnz). rewrite nsp (pd _ pnN) Y_false //; apply /(cleSltP pnN); ue. Qed.
imports: mathcomp(ssreflect ssrfun ssrbool eqtype ssrnat)