intros; unfold after in |- *.
case (exist_after_M (frac_part_n_alpha n) (P1 n) (P2 n) N); intro.
elim s; intros x y.
elim y; intros.
clear s y.
elim H6; intros; clear H6.
elim H8; intros; clear H8.
generalize
(tech_not_exist_pt (fun k : nat => 0 < k) (fun k : nat => k < N)
(fun k : nat => (frac_part_n_alpha n < frac_part_n_alpha k)%R)
(fun k : nat => (frac_part_n_alpha k < frac_part_n_alpha m)%R) H4);
clear H4; intro.
elim (H4 x H5 H7); intro.
absurd (frac_part_n_alpha n < frac_part_n_alpha x)%R; auto.
unfold Rgt in H9; generalize (H9 m H1 H2 H3); intro;
generalize (Rnot_lt_ge (frac_part_n_alpha x) (frac_part_n_alpha m) H8);
intro;
generalize (Rge_antisym (frac_part_n_alpha m) (frac_part_n_alpha x) H10 H11);
intro; apply (tech_fp_alp_irr m x H12).
elim (a m H1 H2); intros; unfold Rle in H6; elim H6; intro.
generalize (Rlt_asym (frac_part_n_alpha m) (frac_part_n_alpha n) H7); intro;
elimtype False; auto.
cut
((frac_part_n_alpha n < frac_part_n_alpha m)%R \/
(frac_part_n_alpha n > frac_part_n_alpha m)%R).
intro;
generalize
(Rlt_dichotomy_converse (frac_part_n_alpha n) (frac_part_n_alpha m) H8);
intro; elimtype False; auto.
left; auto.
Qed.

(* Specifications: *)
(**********)
Lemma prop_after :
forall N n m : nat,
after N n = m ->
(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 m)%R) -> False.