proposition: Lemma pred_itere : forall n, 0 < n -> forall m, {k:nat | m < n} + {k | m = n + k}.
proof: Proof. intros n n_pos m ; induction m. left ; exists 0 ; assumption. case (Compare_dec.le_lt_dec (S m) n) ; intro Hyp. case (Compare_dec.le_lt_eq_dec _ _ Hyp) ; clear Hyp ; intro Hyp. left ; exists 0 ; assumption. right ; exists 0 ; rewrite Hyp ; trivial. case IHm ; intro H. left ; exists 0 ; apply False_ind ; destruct H as (_,Hf) ; lia. destruct H as (k,Hk) ; right ; exists (S k). rewrite <- plus_n_Sm ; rewrite Hk ; simpl ; reflexivity. Qed.
imports: PeanoNat NArith Lia