summaryrefslogtreecommitdiff
path: root/theories/Reals/Rseries.v
diff options
context:
space:
mode:
Diffstat (limited to 'theories/Reals/Rseries.v')
-rw-r--r--theories/Reals/Rseries.v424
1 files changed, 216 insertions, 208 deletions
diff --git a/theories/Reals/Rseries.v b/theories/Reals/Rseries.v
index aa3a0316..38c39bae 100644
--- a/theories/Reals/Rseries.v
+++ b/theories/Reals/Rseries.v
@@ -6,7 +6,7 @@
(* * GNU Lesser General Public License Version 2.1 *)
(************************************************************************)
-(*i $Id: Rseries.v 6338 2004-11-22 09:10:51Z gregoire $ i*)
+(*i $Id: Rseries.v 9245 2006-10-17 12:53:34Z notin $ i*)
Require Import Rbase.
Require Import Rfunctions.
@@ -18,258 +18,266 @@ Implicit Type r : R.
(* classical is needed for [Un_cv_crit] *)
(*********************************************************)
-(* Definition of sequence and properties *)
+(** * Definition of sequence and properties *)
(* *)
(*********************************************************)
Section sequence.
(*********)
-Variable Un : nat -> R.
+ Variable Un : nat -> R.
(*********)
-Boxed Fixpoint Rmax_N (N:nat) : R :=
- match N with
- | O => Un 0
- | S n => Rmax (Un (S n)) (Rmax_N n)
- end.
+ Boxed Fixpoint Rmax_N (N:nat) : R :=
+ match N with
+ | O => Un 0
+ | S n => Rmax (Un (S n)) (Rmax_N n)
+ end.
(*********)
-Definition EUn r : Prop := exists i : nat, r = Un i.
+ Definition EUn r : Prop := exists i : nat, r = Un i.
(*********)
-Definition Un_cv (l:R) : Prop :=
- forall eps:R,
- eps > 0 ->
- exists N : nat, (forall n:nat, (n >= N)%nat -> R_dist (Un n) l < eps).
+ Definition Un_cv (l:R) : Prop :=
+ forall eps:R,
+ eps > 0 ->
+ exists N : nat, (forall n:nat, (n >= N)%nat -> R_dist (Un n) l < eps).
(*********)
-Definition Cauchy_crit : Prop :=
- forall eps:R,
- eps > 0 ->
- exists N : nat,
- (forall n m:nat,
- (n >= N)%nat -> (m >= N)%nat -> R_dist (Un n) (Un m) < eps).
+ Definition Cauchy_crit : Prop :=
+ forall eps:R,
+ eps > 0 ->
+ exists N : nat,
+ (forall n m:nat,
+ (n >= N)%nat -> (m >= N)%nat -> R_dist (Un n) (Un m) < eps).
(*********)
-Definition Un_growing : Prop := forall n:nat, Un n <= Un (S n).
+ Definition Un_growing : Prop := forall n:nat, Un n <= Un (S n).
(*********)
-Lemma EUn_noempty : exists r : R, EUn r.
-unfold EUn in |- *; split with (Un 0); split with 0%nat; trivial.
-Qed.
+ Lemma EUn_noempty : exists r : R, EUn r.
+ Proof.
+ unfold EUn in |- *; split with (Un 0); split with 0%nat; trivial.
+ Qed.
(*********)
-Lemma Un_in_EUn : forall n:nat, EUn (Un n).
-intro; unfold EUn in |- *; split with n; trivial.
-Qed.
+ Lemma Un_in_EUn : forall n:nat, EUn (Un n).
+ Proof.
+ intro; unfold EUn in |- *; split with n; trivial.
+ Qed.
(*********)
-Lemma Un_bound_imp :
- forall x:R, (forall n:nat, Un n <= x) -> is_upper_bound EUn x.
-intros; unfold is_upper_bound in |- *; intros; unfold EUn in H0; elim H0;
- clear H0; intros; generalize (H x1); intro; rewrite <- H0 in H1;
- trivial.
-Qed.
+ Lemma Un_bound_imp :
+ forall x:R, (forall n:nat, Un n <= x) -> is_upper_bound EUn x.
+ Proof.
+ intros; unfold is_upper_bound in |- *; intros; unfold EUn in H0; elim H0;
+ clear H0; intros; generalize (H x1); intro; rewrite <- H0 in H1;
+ trivial.
+ Qed.
(*********)
-Lemma growing_prop :
- forall n m:nat, Un_growing -> (n >= m)%nat -> Un n >= Un m.
-double induction n m; intros.
-unfold Rge in |- *; right; trivial.
-elimtype False; unfold ge in H1; generalize (le_Sn_O n0); intro; auto.
-cut (n0 >= 0)%nat.
-generalize H0; intros; unfold Un_growing in H0;
- apply
- (Rge_trans (Un (S n0)) (Un n0) (Un 0) (Rle_ge (Un n0) (Un (S n0)) (H0 n0))
- (H 0%nat H2 H3)).
-elim n0; auto.
-elim (lt_eq_lt_dec n1 n0); intro y.
-elim y; clear y; intro y.
-unfold ge in H2; generalize (le_not_lt n0 n1 (le_S_n n0 n1 H2)); intro;
- elimtype False; auto.
-rewrite y; unfold Rge in |- *; right; trivial.
-unfold ge in H0; generalize (H0 (S n0) H1 (lt_le_S n0 n1 y)); intro;
- unfold Un_growing in H1;
- apply
- (Rge_trans (Un (S n1)) (Un n1) (Un (S n0))
- (Rle_ge (Un n1) (Un (S n1)) (H1 n1)) H3).
-Qed.
+ Lemma growing_prop :
+ forall n m:nat, Un_growing -> (n >= m)%nat -> Un n >= Un m.
+ Proof.
+ double induction n m; intros.
+ unfold Rge in |- *; right; trivial.
+ elimtype False; unfold ge in H1; generalize (le_Sn_O n0); intro; auto.
+ cut (n0 >= 0)%nat.
+ generalize H0; intros; unfold Un_growing in H0;
+ apply
+ (Rge_trans (Un (S n0)) (Un n0) (Un 0) (Rle_ge (Un n0) (Un (S n0)) (H0 n0))
+ (H 0%nat H2 H3)).
+ elim n0; auto.
+ elim (lt_eq_lt_dec n1 n0); intro y.
+ elim y; clear y; intro y.
+ unfold ge in H2; generalize (le_not_lt n0 n1 (le_S_n n0 n1 H2)); intro;
+ elimtype False; auto.
+ rewrite y; unfold Rge in |- *; right; trivial.
+ unfold ge in H0; generalize (H0 (S n0) H1 (lt_le_S n0 n1 y)); intro;
+ unfold Un_growing in H1;
+ apply
+ (Rge_trans (Un (S n1)) (Un n1) (Un (S n0))
+ (Rle_ge (Un n1) (Un (S n1)) (H1 n1)) H3).
+ Qed.
-(* classical is needed: [not_all_not_ex] *)
+(** classical is needed: [not_all_not_ex] *)
(*********)
-Lemma Un_cv_crit : Un_growing -> bound EUn -> exists l : R, Un_cv l.
-unfold Un_growing, Un_cv in |- *; intros;
- generalize (completeness_weak EUn H0 EUn_noempty);
- intro; elim H1; clear H1; intros; split with x; intros;
- unfold is_lub in H1; unfold bound in H0; unfold is_upper_bound in H0, H1;
- elim H0; clear H0; intros; elim H1; clear H1; intros;
- generalize (H3 x0 H0); intro; cut (forall n:nat, Un n <= x);
- intro.
-cut (exists N : nat, x - eps < Un N).
-intro; elim H6; clear H6; intros; split with x1.
-intros; unfold R_dist in |- *; apply (Rabs_def1 (Un n - x) eps).
-unfold Rgt in H2;
- apply (Rle_lt_trans (Un n - x) 0 eps (Rle_minus (Un n) x (H5 n)) H2).
-fold Un_growing in H; generalize (growing_prop n x1 H H7); intro;
- generalize
- (Rlt_le_trans (x - eps) (Un x1) (Un n) H6 (Rge_le (Un n) (Un x1) H8));
- intro; generalize (Rplus_lt_compat_l (- x) (x - eps) (Un n) H9);
- unfold Rminus in |- *; rewrite <- (Rplus_assoc (- x) x (- eps));
- rewrite (Rplus_comm (- x) (Un n)); fold (Un n - x) in |- *;
- rewrite Rplus_opp_l; rewrite (let (H1, H2) := Rplus_ne (- eps) in H2);
- trivial.
-cut (~ (forall N:nat, x - eps >= Un N)).
-intro; apply (not_all_not_ex nat (fun N:nat => x - eps < Un N)); red in |- *;
- intro; red in H6; elim H6; clear H6; intro;
- apply (Rnot_lt_ge (x - eps) (Un N) (H7 N)).
-red in |- *; intro; cut (forall N:nat, Un N <= x - eps).
-intro; generalize (Un_bound_imp (x - eps) H7); intro;
- unfold is_upper_bound in H8; generalize (H3 (x - eps) H8);
- intro; generalize (Rle_minus x (x - eps) H9); unfold Rminus in |- *;
- rewrite Ropp_plus_distr; rewrite <- Rplus_assoc; rewrite Rplus_opp_r;
- rewrite (let (H1, H2) := Rplus_ne (- - eps) in H2);
- rewrite Ropp_involutive; intro; unfold Rgt in H2;
- generalize (Rgt_not_le eps 0 H2); intro; auto.
-intro; elim (H6 N); intro; unfold Rle in |- *.
-left; unfold Rgt in H7; assumption.
-right; auto.
-apply (H1 (Un n) (Un_in_EUn n)).
-Qed.
+ Lemma Un_cv_crit : Un_growing -> bound EUn -> exists l : R, Un_cv l.
+ Proof.
+ unfold Un_growing, Un_cv in |- *; intros;
+ generalize (completeness_weak EUn H0 EUn_noempty);
+ intro; elim H1; clear H1; intros; split with x; intros;
+ unfold is_lub in H1; unfold bound in H0; unfold is_upper_bound in H0, H1;
+ elim H0; clear H0; intros; elim H1; clear H1; intros;
+ generalize (H3 x0 H0); intro; cut (forall n:nat, Un n <= x);
+ intro.
+ cut (exists N : nat, x - eps < Un N).
+ intro; elim H6; clear H6; intros; split with x1.
+ intros; unfold R_dist in |- *; apply (Rabs_def1 (Un n - x) eps).
+ unfold Rgt in H2;
+ apply (Rle_lt_trans (Un n - x) 0 eps (Rle_minus (Un n) x (H5 n)) H2).
+ fold Un_growing in H; generalize (growing_prop n x1 H H7); intro;
+ generalize
+ (Rlt_le_trans (x - eps) (Un x1) (Un n) H6 (Rge_le (Un n) (Un x1) H8));
+ intro; generalize (Rplus_lt_compat_l (- x) (x - eps) (Un n) H9);
+ unfold Rminus in |- *; rewrite <- (Rplus_assoc (- x) x (- eps));
+ rewrite (Rplus_comm (- x) (Un n)); fold (Un n - x) in |- *;
+ rewrite Rplus_opp_l; rewrite (let (H1, H2) := Rplus_ne (- eps) in H2);
+ trivial.
+ cut (~ (forall N:nat, x - eps >= Un N)).
+ intro; apply (not_all_not_ex nat (fun N:nat => x - eps < Un N)); red in |- *;
+ intro; red in H6; elim H6; clear H6; intro;
+ apply (Rnot_lt_ge (x - eps) (Un N) (H7 N)).
+ red in |- *; intro; cut (forall N:nat, Un N <= x - eps).
+ intro; generalize (Un_bound_imp (x - eps) H7); intro;
+ unfold is_upper_bound in H8; generalize (H3 (x - eps) H8);
+ intro; generalize (Rle_minus x (x - eps) H9); unfold Rminus in |- *;
+ rewrite Ropp_plus_distr; rewrite <- Rplus_assoc; rewrite Rplus_opp_r;
+ rewrite (let (H1, H2) := Rplus_ne (- - eps) in H2);
+ rewrite Ropp_involutive; intro; unfold Rgt in H2;
+ generalize (Rgt_not_le eps 0 H2); intro; auto.
+ intro; elim (H6 N); intro; unfold Rle in |- *.
+ left; unfold Rgt in H7; assumption.
+ right; auto.
+ apply (H1 (Un n) (Un_in_EUn n)).
+ Qed.
(*********)
-Lemma finite_greater :
- forall N:nat, exists M : R, (forall n:nat, (n <= N)%nat -> Un n <= M).
-intro; induction N as [| N HrecN].
-split with (Un 0); intros; rewrite (le_n_O_eq n H);
- apply (Req_le (Un n) (Un n) (refl_equal (Un n))).
-elim HrecN; clear HrecN; intros; split with (Rmax (Un (S N)) x); intros;
- elim (Rmax_Rle (Un (S N)) x (Un n)); intros; clear H1;
- inversion H0.
-rewrite <- H1; rewrite <- H1 in H2;
- apply
- (H2 (or_introl (Un n <= x) (Req_le (Un n) (Un n) (refl_equal (Un n))))).
-apply (H2 (or_intror (Un n <= Un (S N)) (H n H3))).
-Qed.
+ Lemma finite_greater :
+ forall N:nat, exists M : R, (forall n:nat, (n <= N)%nat -> Un n <= M).
+ Proof.
+ intro; induction N as [| N HrecN].
+ split with (Un 0); intros; rewrite (le_n_O_eq n H);
+ apply (Req_le (Un n) (Un n) (refl_equal (Un n))).
+ elim HrecN; clear HrecN; intros; split with (Rmax (Un (S N)) x); intros;
+ elim (Rmax_Rle (Un (S N)) x (Un n)); intros; clear H1;
+ inversion H0.
+ rewrite <- H1; rewrite <- H1 in H2;
+ apply
+ (H2 (or_introl (Un n <= x) (Req_le (Un n) (Un n) (refl_equal (Un n))))).
+ apply (H2 (or_intror (Un n <= Un (S N)) (H n H3))).
+ Qed.
(*********)
-Lemma cauchy_bound : Cauchy_crit -> bound EUn.
-unfold Cauchy_crit, bound in |- *; intros; unfold is_upper_bound in |- *;
- unfold Rgt in H; elim (H 1 Rlt_0_1); clear H; intros;
- generalize (H x); intro; generalize (le_dec x); intro;
- elim (finite_greater x); intros; split with (Rmax x0 (Un x + 1));
- clear H; intros; unfold EUn in H; elim H; clear H;
- intros; elim (H1 x2); clear H1; intro y.
-unfold ge in H0; generalize (H0 x2 (le_n x) y); clear H0; intro;
- rewrite <- H in H0; unfold R_dist in H0; elim (Rabs_def2 (Un x - x1) 1 H0);
- clear H0; intros; elim (Rmax_Rle x0 (Un x + 1) x1);
- intros; apply H4; clear H3 H4; right; clear H H0 y;
- apply (Rlt_le x1 (Un x + 1)); generalize (Rlt_minus (-1) (Un x - x1) H1);
- clear H1; intro; apply (Rminus_lt x1 (Un x + 1));
- cut (-1 - (Un x - x1) = x1 - (Un x + 1));
- [ intro; rewrite H0 in H; assumption | ring ].
-generalize (H2 x2 y); clear H2 H0; intro; rewrite <- H in H0;
- elim (Rmax_Rle x0 (Un x + 1) x1); intros; clear H1;
- apply H2; left; assumption.
-Qed.
+ Lemma cauchy_bound : Cauchy_crit -> bound EUn.
+ Proof.
+ unfold Cauchy_crit, bound in |- *; intros; unfold is_upper_bound in |- *;
+ unfold Rgt in H; elim (H 1 Rlt_0_1); clear H; intros;
+ generalize (H x); intro; generalize (le_dec x); intro;
+ elim (finite_greater x); intros; split with (Rmax x0 (Un x + 1));
+ clear H; intros; unfold EUn in H; elim H; clear H;
+ intros; elim (H1 x2); clear H1; intro y.
+ unfold ge in H0; generalize (H0 x2 (le_n x) y); clear H0; intro;
+ rewrite <- H in H0; unfold R_dist in H0; elim (Rabs_def2 (Un x - x1) 1 H0);
+ clear H0; intros; elim (Rmax_Rle x0 (Un x + 1) x1);
+ intros; apply H4; clear H3 H4; right; clear H H0 y;
+ apply (Rlt_le x1 (Un x + 1)); generalize (Rlt_minus (-1) (Un x - x1) H1);
+ clear H1; intro; apply (Rminus_lt x1 (Un x + 1));
+ cut (-1 - (Un x - x1) = x1 - (Un x + 1));
+ [ intro; rewrite H0 in H; assumption | ring ].
+ generalize (H2 x2 y); clear H2 H0; intro; rewrite <- H in H0;
+ elim (Rmax_Rle x0 (Un x + 1) x1); intros; clear H1;
+ apply H2; left; assumption.
+ Qed.
End sequence.
(*****************************************************************)
-(* Definition of Power Series and properties *)
+(** * Definition of Power Series and properties *)
(* *)
(*****************************************************************)
Section Isequence.
(*********)
-Variable An : nat -> R.
+ Variable An : nat -> R.
(*********)
-Definition Pser (x l:R) : Prop := infinit_sum (fun n:nat => An n * x ^ n) l.
+ Definition Pser (x l:R) : Prop := infinit_sum (fun n:nat => An n * x ^ n) l.
End Isequence.
Lemma GP_infinite :
- forall x:R, Rabs x < 1 -> Pser (fun n:nat => 1) x (/ (1 - x)).
-intros; unfold Pser in |- *; unfold infinit_sum in |- *; intros;
- elim (Req_dec x 0).
-intros; exists 0%nat; intros; rewrite H1; rewrite Rminus_0_r; rewrite Rinv_1;
- cut (sum_f_R0 (fun n0:nat => 1 * 0 ^ n0) n = 1).
-intros; rewrite H3; rewrite R_dist_eq; auto.
-elim n; simpl in |- *.
-ring.
-intros; rewrite H3; ring.
-intro; cut (0 < eps * (Rabs (1 - x) * Rabs (/ x))).
-intro; elim (pow_lt_1_zero x H (eps * (Rabs (1 - x) * Rabs (/ x))) H2);
- intro N; intros; exists N; intros;
- cut
- (sum_f_R0 (fun n0:nat => 1 * x ^ n0) n = sum_f_R0 (fun n0:nat => x ^ n0) n).
-intros; rewrite H5;
- apply
- (Rmult_lt_reg_l (Rabs (1 - x))
- (R_dist (sum_f_R0 (fun n0:nat => x ^ n0) n) (/ (1 - x))) eps).
-apply Rabs_pos_lt.
-apply Rminus_eq_contra.
-apply Rlt_dichotomy_converse.
-right; unfold Rgt in |- *.
-apply (Rle_lt_trans x (Rabs x) 1).
-apply RRle_abs.
-assumption.
-unfold R_dist in |- *; rewrite <- Rabs_mult.
-rewrite Rmult_minus_distr_l.
-cut
- ((1 - x) * sum_f_R0 (fun n0:nat => x ^ n0) n =
- - (sum_f_R0 (fun n0:nat => x ^ n0) n * (x - 1))).
-intro; rewrite H6.
-rewrite GP_finite.
-rewrite Rinv_r.
-cut (- (x ^ (n + 1) - 1) - 1 = - x ^ (n + 1)).
-intro; rewrite H7.
-rewrite Rabs_Ropp; cut ((n + 1)%nat = S n); auto.
-intro H8; rewrite H8; simpl in |- *; rewrite Rabs_mult;
- apply
- (Rlt_le_trans (Rabs x * Rabs (x ^ n))
- (Rabs x * (eps * (Rabs (1 - x) * Rabs (/ x)))) (
- Rabs (1 - x) * eps)).
-apply Rmult_lt_compat_l.
-apply Rabs_pos_lt.
-assumption.
-auto.
-cut
- (Rabs x * (eps * (Rabs (1 - x) * Rabs (/ x))) =
- Rabs x * Rabs (/ x) * (eps * Rabs (1 - x))).
-clear H8; intros; rewrite H8; rewrite <- Rabs_mult; rewrite Rinv_r.
-rewrite Rabs_R1; cut (1 * (eps * Rabs (1 - x)) = Rabs (1 - x) * eps).
-intros; rewrite H9; unfold Rle in |- *; right; reflexivity.
-ring.
-assumption.
-ring.
-ring.
-ring.
-apply Rminus_eq_contra.
-apply Rlt_dichotomy_converse.
-right; unfold Rgt in |- *.
-apply (Rle_lt_trans x (Rabs x) 1).
-apply RRle_abs.
-assumption.
-ring; ring.
-elim n; simpl in |- *.
-ring.
-intros; rewrite H5.
-ring.
-apply Rmult_lt_0_compat.
-auto.
-apply Rmult_lt_0_compat.
-apply Rabs_pos_lt.
-apply Rminus_eq_contra.
-apply Rlt_dichotomy_converse.
-right; unfold Rgt in |- *.
-apply (Rle_lt_trans x (Rabs x) 1).
-apply RRle_abs.
-assumption.
-apply Rabs_pos_lt.
-apply Rinv_neq_0_compat.
-assumption.
+ forall x:R, Rabs x < 1 -> Pser (fun n:nat => 1) x (/ (1 - x)).
+Proof.
+ intros; unfold Pser in |- *; unfold infinit_sum in |- *; intros;
+ elim (Req_dec x 0).
+ intros; exists 0%nat; intros; rewrite H1; rewrite Rminus_0_r; rewrite Rinv_1;
+ cut (sum_f_R0 (fun n0:nat => 1 * 0 ^ n0) n = 1).
+ intros; rewrite H3; rewrite R_dist_eq; auto.
+ elim n; simpl in |- *.
+ ring.
+ intros; rewrite H3; ring.
+ intro; cut (0 < eps * (Rabs (1 - x) * Rabs (/ x))).
+ intro; elim (pow_lt_1_zero x H (eps * (Rabs (1 - x) * Rabs (/ x))) H2);
+ intro N; intros; exists N; intros;
+ cut
+ (sum_f_R0 (fun n0:nat => 1 * x ^ n0) n = sum_f_R0 (fun n0:nat => x ^ n0) n).
+ intros; rewrite H5;
+ apply
+ (Rmult_lt_reg_l (Rabs (1 - x))
+ (R_dist (sum_f_R0 (fun n0:nat => x ^ n0) n) (/ (1 - x))) eps).
+ apply Rabs_pos_lt.
+ apply Rminus_eq_contra.
+ apply Rlt_dichotomy_converse.
+ right; unfold Rgt in |- *.
+ apply (Rle_lt_trans x (Rabs x) 1).
+ apply RRle_abs.
+ assumption.
+ unfold R_dist in |- *; rewrite <- Rabs_mult.
+ rewrite Rmult_minus_distr_l.
+ cut
+ ((1 - x) * sum_f_R0 (fun n0:nat => x ^ n0) n =
+ - (sum_f_R0 (fun n0:nat => x ^ n0) n * (x - 1))).
+ intro; rewrite H6.
+ rewrite GP_finite.
+ rewrite Rinv_r.
+ cut (- (x ^ (n + 1) - 1) - 1 = - x ^ (n + 1)).
+ intro; rewrite H7.
+ rewrite Rabs_Ropp; cut ((n + 1)%nat = S n); auto.
+ intro H8; rewrite H8; simpl in |- *; rewrite Rabs_mult;
+ apply
+ (Rlt_le_trans (Rabs x * Rabs (x ^ n))
+ (Rabs x * (eps * (Rabs (1 - x) * Rabs (/ x)))) (
+ Rabs (1 - x) * eps)).
+ apply Rmult_lt_compat_l.
+ apply Rabs_pos_lt.
+ assumption.
+ auto.
+ cut
+ (Rabs x * (eps * (Rabs (1 - x) * Rabs (/ x))) =
+ Rabs x * Rabs (/ x) * (eps * Rabs (1 - x))).
+ clear H8; intros; rewrite H8; rewrite <- Rabs_mult; rewrite Rinv_r.
+ rewrite Rabs_R1; cut (1 * (eps * Rabs (1 - x)) = Rabs (1 - x) * eps).
+ intros; rewrite H9; unfold Rle in |- *; right; reflexivity.
+ ring.
+ assumption.
+ ring.
+ ring.
+ ring.
+ apply Rminus_eq_contra.
+ apply Rlt_dichotomy_converse.
+ right; unfold Rgt in |- *.
+ apply (Rle_lt_trans x (Rabs x) 1).
+ apply RRle_abs.
+ assumption.
+ ring; ring.
+ elim n; simpl in |- *.
+ ring.
+ intros; rewrite H5.
+ ring.
+ apply Rmult_lt_0_compat.
+ auto.
+ apply Rmult_lt_0_compat.
+ apply Rabs_pos_lt.
+ apply Rminus_eq_contra.
+ apply Rlt_dichotomy_converse.
+ right; unfold Rgt in |- *.
+ apply (Rle_lt_trans x (Rabs x) 1).
+ apply RRle_abs.
+ assumption.
+ apply Rabs_pos_lt.
+ apply Rinv_neq_0_compat.
+ assumption.
Qed.