(**********)
Definition M (N : nat) := first N + last N.

(* Specifications: *)
Lemma inter31a : forall N n : nat, 0 < n -> n < last (M N) -> after (M N) n = n + first (M N).
Lemma inter31b : forall N n : nat, last (M N) <= n -> n < M N -> after (M N) n = n - last (M N).
Lemma tech1 : forall N n : nat, N - first N <= n -> n < last N -> (frac_part_n_alpha n < frac_part_n_alpha (n + first N - last N))%R.
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.
Lemma tech_suc_M : forall N n : nat, N - first N <= n -> n < last N -> (exists 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) -> False.
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).
Lemma eq_after_M_N1 : forall N n : nat, 0 < n -> n < N - first N -> after (M N) n = after N n.
Lemma eq_after_M_N2 : forall N n : nat, last N <= n -> n < N -> after (M N) n = after N n.