Section theoreme.
Hypothesis alpha_irr : forall n p : Z, (alpha * IZR p)%R <> IZR n.
Hypothesis prop_alpha : (0 < alpha)%R /\ (alpha < 1)%R.
Hypothesis prop_N : forall N : nat, N >= 2.
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.
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).
intro; rewrite <- H in H0;
cut (frac_part (INR 0 * alpha) = frac_part_n_alpha 0).
intro; rewrite H1 in H0; generalize (tech_fp_alp_irr 0 (first N) H0); intro;
generalize (first_0 N (prop_N N)); intro;
generalize (lt_not_eq 0 (first N) H3); intro; elimtype False;
auto.
unfold frac_part_n_alpha in |- *; auto.
auto.
Qed.

(**********)
Lemma contra_tech_fp_alp_irr :
forall n m : nat, n <> m -> frac_part_n_alpha n <> frac_part_n_alpha m.