intros; cut (frac_part_n_alpha n < frac_part_n_alpha (n + first N))%R.
intro;
cut
(frac_part_n_alpha (n + first N) < frac_part_n_alpha (n + first N - last N))%R.
intro;
apply
(Rlt_trans (frac_part_n_alpha n) (frac_part_n_alpha (n + first N))
(frac_part_n_alpha (n + first N - last N)) H1 H2).
cut (0 < n + first N).
cut (n + first N < M N).
intros;
apply (tech_after_lt (M N) (n + first N) (n + first N - last N) H3 H2).
apply (lt_minus_not (last N) (n + first N)).
generalize (le_minus_plus N (first N) n H); intro;
apply (lt_le_trans (last N) N (n + first N) (last_N N (prop_N N)) H4).
rewrite (last_eq_M_N alpha_irr prop_alpha prop_N N (M N));
auto with arith real.
generalize H2; clear H2;
rewrite (first_eq_M_N alpha_irr prop_alpha prop_N N (M N));
auto with arith real.
intro; cut (last (M N) <= n + first (M N)).
intro; apply (inter31b N (n + first (M N)) H4 H2).
rewrite <- (last_eq_M_N alpha_irr prop_alpha prop_N N (M N));
auto with arith real.
rewrite <- (first_eq_M_N alpha_irr prop_alpha prop_N N (M N));
auto with arith real.
generalize (le_minus_plus N (first N) n H); intro;
apply (le_trans (last N) N (n + first N) (last_N01 N) H4).
unfold M in |- *; rewrite (plus_comm (first N) (last N));
apply (plus_lt_compat_r n (last N) (first N) H0).
generalize (le_minus_plus N (first N) n H); intro; cut (0 < N).
intro; apply (lt_le_trans 0 N (n + first N) H3 H2).
apply (arith_2_0 N (prop_N N)).
(**)
cut (0 < n).
cut (n < M N).
intros; apply (tech_after_lt (M N) n (n + first N) H2 H1).
generalize (lt_O_plus n (first N) H2); intro; apply Compare.not_eq_sym;
red in |- *; intro; apply (lt_not_eq 0 (n + first N) H3 H4).
rewrite (first_eq_M_N alpha_irr prop_alpha prop_N N (M N));
auto with arith real.
generalize H0; rewrite (last_eq_M_N alpha_irr prop_alpha prop_N N (M N));
auto with arith real; clear H0; intro; apply (inter31a N n H2 H0).
generalize (lt_trans n (last N) N H0 (last_N N (prop_N N))); intro;
unfold M in |- *; cut (N <= first N + last N).
intro; apply (lt_le_trans n N (first N + last N) H1 H2).
apply (le_N_M alpha_irr prop_alpha prop_N N (M N)); auto with arith real.
apply
(lt_le_trans 0 (N - first N) n
(lt_minus2 (first N) N (first_N N (prop_N N))) H).
Qed.

(* Specifications: *)
(**********)
Lemma tech_suc_N :
forall N n : nat,
0 < n ->
n < N ->
forall k : nat,
0 < k ->
k < N ->
(frac_part_n_alpha n < frac_part_n_alpha k)%R ->
frac_part_n_alpha k <> frac_part_n_alpha (after N n) ->
(frac_part_n_alpha (after N n) < frac_part_n_alpha k)%R.