Section Efficient_Rec.
(** [natlike_rec2] is the same as [natlike_rec], but with a different proof, designed to give a better extracted term. *)
Let R (a b:Z) := 0 <= a /\ a < b.
Let R_wf : well_founded R.

Lemma natlike_rec2 :
forall P:Z -> Type,
P 0 ->
(forall z:Z, 0 <= z -> P z -> P (Z.succ z)) ->
forall z:Z, 0 <= z -> P z.