intros; elim H1; intros; clear H1.
elim H2; intros; elim H3; intros; clear H3; clear H2; elim H5; intros;
clear H5.
cut (0 < n).
intro; cut (n < M N).
intros; cut (x < M N).
intro;
elim (Rtotal_order (frac_part_n_alpha x) (frac_part_n_alpha (n + first N)));
intro.
cut (n + first N = after (M N) n).
intro; rewrite H9 in H8;
cut (frac_part_n_alpha x <> frac_part_n_alpha (after (M N) n)).
intro; generalize (tech_suc_N (M N) n H5 H6 x H1 H7 H2 H10).
intro;
generalize
(Rlt_asym (frac_part_n_alpha x) (frac_part_n_alpha (after (M N) n)) H8).
intro; auto with arith real.
apply
(Rlt_dichotomy_converse (frac_part_n_alpha x)
(frac_part_n_alpha (after (M N) n))).
left; auto with arith real.
apply sym_equal.
rewrite (first_eq_M_N alpha_irr prop_alpha prop_N N (M N)).
apply (inter31a N n H5).
rewrite <- (last_eq_M_N alpha_irr prop_alpha prop_N N (M N)).
assumption.
auto with arith real.
auto with arith real.
(**)
elim H8; intro; clear H8.
cut (x <> n + first N).
intro;
generalize (contra_tech_fp_alp_irr alpha_irr prop_alpha x (n + first N) H8);
auto with arith real.
cut (x < n + first N).
intro; red in |- *; intro; apply (lt_not_eq x (n + first N) H8); assumption.
generalize (le_minus_plus N (first N) n H); intro;
apply (lt_le_trans x N (n + first N) H4 H8).
(**)
cut (0 < n + first (M N)).
intro; cut (n + first (M N) < M N).
intro;
cut
(frac_part_n_alpha x <> frac_part_n_alpha (after (M N) (n + first (M N)))).
intro; unfold Rgt in H9;
rewrite
(first_eq_M_N alpha_irr prop_alpha prop_N N (M N)
(refl_equal (first N + last N))) in H9;
generalize (tech_suc_N (M N) (n + first (M N)) H8 H10 x H1 H7 H9 H11);
intro; cut (last (M N) <= n + first (M N)).
intro; rewrite (inter31b N (n + first (M N)) H13 H10) in H12.
rewrite
(first_eq_M_N alpha_irr prop_alpha prop_N N (M N)
(refl_equal (first N + last N))) in H3;
rewrite
(last_eq_M_N alpha_irr prop_alpha prop_N N (M N)
(refl_equal (first N + last N))) in H3;
generalize
(Rlt_asym (frac_part_n_alpha (n + first (M N) - last (M N)))
(frac_part_n_alpha x) H12); intro; auto with arith real.
generalize (le_minus_plus N (first N) n H); intro.
generalize (last_N01 N); intro.
rewrite <-
(first_eq_M_N alpha_irr prop_alpha prop_N N (M N)
(refl_equal (first N + last N)));
rewrite <-
(last_eq_M_N alpha_irr prop_alpha prop_N N (M N)
(refl_equal (first N + last N)));
apply (le_trans (last N) N (n + first N) H14 H13).
cut (last (M N) <= n + first (M N)).
intro; rewrite (inter31b N (n + first (M N)) H11 H10);
rewrite <-
(first_eq_M_N alpha_irr prop_alpha prop_N N (M N)
(refl_equal (first N + last N)));
rewrite <-
(last_eq_M_N alpha_irr prop_alpha prop_N N (M N)
(refl_equal (first N + last N)));
apply
(Rlt_dichotomy_converse (frac_part_n_alpha x)
(frac_part_n_alpha (n + first N - last N))).
left; assumption.
generalize (le_minus_plus N (first N) n H); intro.
generalize (last_N01 N); intro;
rewrite <-
(first_eq_M_N alpha_irr prop_alpha prop_N N (M N)
(refl_equal (first N + last N)));
rewrite <-
(last_eq_M_N alpha_irr prop_alpha prop_N N (M N)
(refl_equal (first N + last N)));
apply (le_trans (last N) N (n + first N) H12 H11).
rewrite <-
(first_eq_M_N alpha_irr prop_alpha prop_N N (M N)
(refl_equal (first N + last N))); unfold M in |- *;
rewrite (plus_comm (first N) (last N));
apply (plus_lt_compat_r n (last N) (first N) H0).
apply (lt_O_plus n (first (M N)) H5).
cut (N <= M N).
intro; apply (lt_le_trans x N (M N) H4 H7).
apply
(le_N_M alpha_irr prop_alpha prop_N N (M N) (refl_equal (first N + last N))).
cut (last N < N).
intro; cut (N <= M N).
intro; generalize (lt_trans n (last N) N H0 H6).
intro; apply (lt_le_trans n N (M N) H8 H7).
apply
(le_N_M alpha_irr prop_alpha prop_N N (M N) (refl_equal (first N + last N))).
apply (last_N N (prop_N N)).
cut (0 < N - first N).
intro; apply (lt_le_trans 0 (N - first N) n H5 H).
apply (lt_minus2 (first N) N (first_N N (prop_N N))).
Qed.

(* Specifications: *)
(**********)
Lemma tech_suc_M1 :
forall N n : nat,
N - first N <= n ->
n < last 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 (n + first N - last N))%R).