Ltac le_equal := rewrite Rle_lt_eq; right; try reflexivity; try assumption.
Ltac le_elim H := rewrite Rle_lt_eq in H; destruct H as [H | H].

(* Specifications: *)
Theorem Rlt_trans : forall n m p : R, n < m -> m < p -> n < p.
Theorem Rle_lt_trans : forall n m p : R, n <= m -> m < p -> n < p.
Theorem Rlt_le_trans : forall n m p : R, n < m -> m <= p -> n < p.
Theorem Rle_gt_cases : forall n m : R, n <= m \/ m < n.
Theorem Rlt_neq : forall n m : R, n < m -> n ~= m.
Theorem Rle_ngt : forall n m : R, n <= m <-> ~ m < n.
Theorem Rlt_nge : forall n m : R, n < m <-> ~ m <= n.
(* Plus, minus and order *)
Theorem Rplus_le_mono_l : forall n m p : R, n <= m <-> p + n <= p + m.
Theorem Rplus_le_mono_r : forall n m p : R, n <= m <-> n + p <= m + p.
Theorem Rplus_lt_mono_l : forall n m p : R, n < m <-> p + n < p + m.
Theorem Rplus_lt_mono_r : forall n m p : R, n < m <-> n + p < m + p.
Theorem Rplus_lt_mono : forall n m p q : R, n < m -> p < q -> n + p < m + q.
Theorem Rplus_le_mono : forall n m p q : R, n <= m -> p <= q -> n + p <= m + q.
Theorem Rplus_lt_le_mono : forall n m p q : R, n < m -> p <= q -> n + p < m + q.
Theorem Rplus_le_lt_mono : forall n m p q : R, n <= m -> p < q -> n + p < m + q.
Theorem Rplus_pos_pos : forall n m : R, 0 < n -> 0 < m -> 0 < n + m.
Theorem Rplus_pos_nonneg : forall n m : R, 0 < n -> 0 <= m -> 0 < n + m.
Theorem Rplus_nonneg_pos : forall n m : R, 0 <= n -> 0 < m -> 0 < n + m.
Theorem Rplus_nonneg_nonneg : forall n m : R, 0 <= n -> 0 <= m -> 0 <= n + m.
Theorem Rle_le_minus : forall n m : R, n <= m <-> 0 <= m - n.
Theorem Rlt_lt_minus : forall n m : R, n < m <-> 0 < m - n.
Theorem Ropp_lt_mono : forall n m : R, n < m <-> - m < - n.
Theorem Ropp_pos_neg : forall n : R, 0 < - n <-> n < 0.
(* Times and order *)
Theorem Rtimes_pos_pos : forall n m : R, 0 < n -> 0 < m -> 0 < n * m.
Proof (SORtimes_pos_pos sor).
Theorem Rtimes_nonneg_nonneg : forall n m : R, 0 <= n -> 0 <= m -> 0 <= n * m.
Theorem Rtimes_pos_neg : forall n m : R, 0 < n -> m < 0 -> n * m < 0.
Theorem Rtimes_neg_neg : forall n m : R, n < 0 -> m < 0 -> 0 < n * m.
Theorem Rtimes_square_nonneg : forall n : R, 0 <= n * n.
Theorem Rtimes_neq_0 : forall n m : R, n ~= 0 /\ m ~= 0 -> n * m ~= 0.
(* The following theorems are used to build a morphism from Z to R and prove its properties in ZCoeff.v. They are not used in RingMicromega.v. *)
(* Surprisingly, multiplication is needed to prove the following theorem *)
Theorem Ropp_neg_pos : forall n : R, - n < 0 <-> 0 < n.
Theorem Rlt_0_1 : 0 < 1.
Theorem Rlt_succ_r : forall n : R, n < 1 + n.
Theorem Rlt_lt_succ : forall n m : R, n < m -> n < 1 + m.