intros;
generalize (Rminus_diag_eq (frac_part_n_alpha n) (frac_part_n_alpha m) H);
unfold frac_part_n_alpha in |- *;
elim (Rminus_fp1 (INR n * alpha) (INR m * alpha)).
unfold Rminus in |- *; rewrite <- Ropp_mult_distr_l_reverse;
rewrite (Rmult_comm (INR n) alpha); rewrite (Rmult_comm (- INR m) alpha);
rewrite <- Rmult_plus_distr_l; intro;
elim (fp_nat (alpha * (INR n + - INR m)) H0); intros;
fold (INR n - INR m)%R in H1; rewrite (INR_IZR_INZ n) in H1;
rewrite (INR_IZR_INZ m) in H1;
rewrite (Z_R_minus (Z_of_nat n) (Z_of_nat m)) in H1;
generalize (alpha_irr x (Z_of_nat n - Z_of_nat m));
intro; elimtype False; auto.
unfold Rge in |- *; auto.
Qed.

(* Specifications: *)
(**********)
Lemma fp_first_R0 : forall N : nat, (frac_part_n_alpha (first N) > 0)%R.
intro; generalize (P1 (first N)); intro; unfold Rle in H; unfold Rgt in |- *;
elim H; intro; auto; clear H; rewrite <- fp_R0 in H0;
rewrite <- (Rmult_0_l alpha) in H0; cut (INR 0 = 0%R).