Definition Rmult_pos_pos := Rmult_gt_0_compat.

(* Specifications: *)
Lemma Rmult_neg_neg : forall r1 r2, r1 < 0 -> r2 < 0 -> r1 * r2 > 0.
Lemma Rmult_neg_pos : forall r1 r2, r1 < 0 -> r2 > 0 -> r1 * r2 < 0.
Lemma Rmult_pos_neg : forall r1 r2, r1 > 0 -> r2 < 0 -> r1 * r2 < 0.
Lemma Rmult_pos_cases : forall r1 r2, r1 * r2 > 0 -> (r1 > 0 /\ r2 > 0) \/ (r1 < 0 /\ r2 < 0).
Lemma Rmult_neg_cases : forall r1 r2, r1 * r2 < 0 -> (r1 > 0 /\ r2 < 0) \/ (r1 < 0 /\ r2 > 0).
Lemma Rle_0_sqr : forall r, 0 <= Rsqr r.
Lemma Rlt_0_sqr : forall r, r <> 0 -> 0 < Rsqr r.
Lemma Rplus_sqr_eq_0 : forall r1 r2, Rsqr r1 + Rsqr r2 = 0 -> r1 = 0 /\ r2 = 0.
Lemma Rlt_0_1 : 0 < 1.
Lemma Rle_0_1 : 0 <= 1.
Lemma Rinv_0_lt_compat : forall r, 0 < r -> 0 < / r.
Lemma Rinv_lt_0_compat : forall r, r < 0 -> / r < 0.
Lemma Rmult_lt_reg_l : forall r r1 r2, 0 < r -> r * r1 < r * r2 -> r1 < r2.
Lemma Rmult_lt_reg_r : forall r r1 r2 : R, 0 < r -> r1 * r < r2 * r -> r1 < r2.
Lemma Rmult_gt_reg_l : forall r r1 r2, 0 < r -> r * r1 < r * r2 -> r1 < r2.
Lemma Rmult_gt_reg_r : forall r r1 r2, r > 0 -> r1 * r > r2 * r -> r1 > r2.
Lemma Rmult_le_reg_l : forall r r1 r2, 0 < r -> r * r1 <= r * r2 -> r1 <= r2.
Lemma Rmult_le_reg_r : forall r r1 r2, 0 < r -> r1 * r <= r2 * r -> r1 <= r2.
Lemma Rinv_0_lt_contravar : forall r1 r2, 0 < r1 -> r1 < r2 -> / r2 < / r1.
Lemma Rinv_lt_0_contravar : forall r1 r2, r2 < 0 -> r1 < r2 -> / r2 < / r1.
Lemma Rinv_1_lt_contravar : forall r1 r2, 1 <= r1 -> r1 < r2 -> / r2 < / r1.
Lemma Rinv_lt_contravar : forall r1 r2, 0 < r1 * r2 -> r1 < r2 -> / r2 < / r1.
Lemma Rinv_le_contravar : forall x y, 0 < x -> x <= y -> / y <= / x.
Lemma Rinv_pos : forall r, r > 0 -> / r > 0.
Lemma Rinv_neg : forall r, r < 0 -> / r < 0.
Lemma Rlt_minus : forall r1 r2, r1 < r2 -> r1 - r2 < 0.
Lemma Rgt_minus : forall r1 r2, r1 > r2 -> r1 - r2 > 0.
Lemma Rle_minus : forall r1 r2, r1 <= r2 -> r1 - r2 <= 0.
Lemma Rge_minus : forall r1 r2, r1 >= r2 -> r1 - r2 >= 0.
Lemma Rminus_lt : forall r1 r2, r1 - r2 < 0 -> r1 < r2.
Lemma Rminus_gt : forall r1 r2, r1 - r2 > 0 -> r1 > r2.
Lemma Rlt_minus_0 : forall r1 r2, r1 - r2 < 0 <-> r1 < r2.
Lemma Rlt_0_minus : forall r1 r2, 0 < r2 - r1 <-> r1 < r2.
Lemma Rminus_le : forall r1 r2, r1 - r2 <= 0 -> r1 <= r2.
Lemma Rminus_ge : forall r1 r2, r1 - r2 >= 0 -> r1 >= r2.
Lemma Rgt_minus_pos : forall r1 r2, 0 < r2 -> r1 > r1 - r2.
Lemma Rdiv_def : forall r1 r2, r1 / r2 = r1 * / r2.
Lemma Rdiv_eq_compat_l : forall r r1 r2, r1 = r2 -> r / r1 = r / r2.
Lemma Rdiv_eq_compat_r : forall r r1 r2, r1 = r2 -> r1 / r = r2 / r.
Lemma Rdiv_eq_reg_l : forall r r1 r2, r / r1 = r / r2 -> r <> 0 -> r1 = r2.
Lemma Rdiv_eq_reg_r : forall r r1 r2, r1 / r = r2 / r -> r <> 0 -> r1 = r2.
Lemma Rdiv_0_l : forall r, 0 / r = 0.
Lemma Rdiv_0_r : forall r, r / 0 = 0.
Lemma Rdiv_1_l : forall r, 1 / r = / r.
Lemma Rdiv_1_r : forall r, r / 1 = r.
Lemma Rdiv_diag : forall r, r <> 0 -> r / r = 1.
Lemma Rdiv_diag_eq : forall r1 r2, r2 <> 0 -> r1 = r2 -> r1 / r2 = 1.
Lemma Rmult_div_l : forall r1 r2, r2 <> 0 -> r1 * r2 / r2 = r1.
Lemma Rmult_div_r : forall r1 r2, r1 <> 0 -> r1 * r2 / r1 = r2.
Lemma Rmult_div_assoc : forall r1 r2 r3, r1 * (r2 / r3) = r1 * r2 / r3.
Lemma Rmult_div_swap : forall r1 r2 r3, r1 * r2 / r3 = r1 / r3 * r2.
Lemma Rdiv_diag_uniq : forall r1 r2, r1 / r2 = 1 -> r1 = r2.
Lemma Rdiv_mult_distr : forall r1 r2 r3, r1 / (r2 * r3) = r1 / r2 / r3.
Lemma Rdiv_mult_r_r : forall r r1 r2, r <> 0 -> (r1 * r) / (r2 * r) = r1 / r2.
Lemma Rdiv_mult_l_r : forall r r1 r2, r <> 0 -> (r * r1) / (r2 * r) = r1 / r2.
Lemma Rdiv_mult_l_l : forall r r1 r2, r <> 0 -> (r * r1) / (r * r2) = r1 / r2.
Lemma Rdiv_mult_r_l : forall r r1 r2, r <> 0 -> (r1 * r) / (r * r2) = r1 / r2.
Lemma Ropp_div_distr_l : forall r1 r2, - (r1 / r2) = - r1 / r2.
Lemma Ropp_div_distr_r : forall r1 r2, r1 / - r2 = - (r1 / r2).
Lemma Rdiv_plus_distr : forall a b c, (a + b) / c = a / c + b / c.
Lemma Rdiv_minus_distr : forall a b c, (a - b) / c = a / c - b / c.
Lemma Rinv_div x y : / (x / y) = y / x.
Lemma Rdiv_lt_0_compat : forall a b, 0 < a -> 0 < b -> 0 < a / b.
Lemma Rdiv_opp_l : forall r1 r2, - r1 / r2 = - (r1 / r2).
Lemma Rdiv_opp_r : forall x y, x / - y = - (x / y).
Lemma Rdiv_pos_pos : forall r1 r2, r1 > 0 -> r2 > 0 -> r1 / r2 > 0.
Lemma Rdiv_pos_neg : forall r1 r2, r1 > 0 -> r2 < 0 -> r1 / r2 < 0.
Lemma Rdiv_neg_pos : forall r1 r2, r1 < 0 -> r2 > 0 -> r1 / r2 < 0.
Lemma Rdiv_neg_neg : forall r1 r2, r1 < 0 -> r2 < 0 -> r1 / r2 > 0.
Lemma Rdiv_pos_cases : forall r1 r2 : R, r1 / r2 > 0 -> r1 > 0 /\ r2 > 0 \/ r1 < 0 /\ r2 < 0.
Lemma Rle_lt_0_plus_1 : forall r, 0 <= r -> 0 < r + 1.
Lemma Rlt_plus_1 : forall r, r < r + 1.
Lemma Rlt_0_2 : 0 < 2.
Lemma Rplus_diag : forall r, r + r = 2 * r.
Lemma Rplus_half_diag : forall r, r / 2 + r / 2 = r.
Lemma Rlt_half_plus : forall r1 r2, r1 < r2 -> r1 < (r1 + r2) / 2 < r2.
Lemma Rle_half_plus : forall r1 r2, r1 <= r2 -> r1 <= (r1 + r2) / 2 <= r2.
Lemma Rexists_between : forall r1 r2, r1 < r2 -> exists r, r1 < r < r2.
Lemma Rle_plus_epsilon : forall r1 r2, (forall eps:R, 0 < eps -> r1 <= r2 + eps) -> r1 <= r2.
Lemma upper_bound_thm : forall E : R -> Prop, bound E -> (exists x : R, E x) -> exists m : R, is_lub E m.
Lemma S_INR : forall n, INR (S n) = INR n + 1.
Lemma INR_0 : INR 0 = 0.
Lemma INR_1 : INR 1 = 1.
Lemma plus_INR : forall n m, INR (n + m) = INR n + INR m.
Lemma minus_INR : forall n m, (m <= n)%nat -> INR (n - m) = INR n - INR m.
Lemma mult_INR : forall n m:nat, INR (n * m) = INR n * INR m.
Lemma pow_INR : forall m n:nat, INR (m ^ n) = pow (INR m) n.
Lemma lt_0_INR : forall n:nat, (0 < n)%nat -> 0 < INR n.
Lemma lt_INR : forall n m:nat, (n < m)%nat -> INR n < INR m.
Lemma lt_1_INR : forall n:nat, (1 < n)%nat -> 1 < INR n.
Lemma pos_INR_nat_of_P : forall p:positive, 0 < INR (Pos.to_nat p).
Lemma pos_INR : forall n:nat, 0 <= INR n.
Lemma INR_lt : forall n m:nat, INR n < INR m -> (n < m)%nat.
Lemma le_INR : forall n m:nat, (n <= m)%nat -> INR n <= INR m.
Lemma INR_not_0 : forall n:nat, INR n <> 0 -> n <> 0%nat.
Lemma not_0_INR : forall n:nat, n <> 0%nat -> INR n <> 0.
Lemma not_INR : forall n m:nat, n <> m -> INR n <> INR m.
Lemma INR_eq : forall n m:nat, INR n = INR m -> n = m.
Lemma INR_le : forall n m:nat, INR n <= INR m -> (n <= m)%nat.
Lemma not_1_INR : forall n:nat, n <> 1%nat -> INR n <> 1.
Lemma IPR_2_xH : IPR_2 xH = 2.
Lemma IPR_2_xO : forall p : positive, IPR_2 (p~0) = 2 * (IPR_2 p).
Lemma IPR_2_xI : forall p : positive, IPR_2 (p~1) = 2 * (IPR_2 p) + 2.
Lemma IPR_xH : IPR xH = 1.
Lemma IPR_IPR_2 : forall p : positive, 2 * IPR p = IPR_2 p.
Lemma IPR_xO : forall p : positive, IPR (p~0) = 2 * IPR p.
Lemma IPR_xI : forall p : positive, IPR (p~1) = 2 * IPR p + 1.
Lemma INR_IPR : forall p, INR (Pos.to_nat p) = IPR p.
Lemma succ_IPR : forall p, IPR (Pos.succ p) = IPR 1 + IPR p.
Lemma plus_IPR : forall p q, IPR (p + q) = IPR p + IPR q.
Lemma minus_IPR : forall p q, (q < p)%positive -> IPR (p - q) = IPR p - IPR q.
Lemma mult_IPR : forall p q:positive, IPR (p * q) = IPR p * IPR q.
Lemma pow_IPR (q p: positive) : IPR (q ^ p) = pow (IPR q) (Pos.to_nat p).
Lemma IPR_ge_1 : forall p:positive, 1 <= IPR p.
Lemma IPR_gt_0 : forall p:positive, 0 < IPR p.
Lemma lt_IPR : forall p q:positive, (p < q)%positive -> IPR p < IPR q.
Lemma lt_1_IPR : forall p:positive, (1 < p)%positive -> 1 < IPR p.
Lemma IPR_lt : forall p q:positive, IPR p < IPR q -> (p < q)%positive.
Lemma le_IPR : forall p q:positive, (p <= q)%positive -> IPR p <= IPR q.
Lemma IPR_not_1 : forall p:positive, IPR p <> 1 -> p <> 1%positive.
Lemma not_1_IPR : forall p:positive, p <> 1%positive -> IPR p <> 1.
Lemma not_IPR : forall p q:positive, p <> q -> IPR p <> IPR q.
Lemma IPR_eq : forall p q:positive, IPR p = IPR q -> p = q.
Lemma IPR_le : forall p q:positive, IPR p <= IPR q -> (p <= q)%positive.
Lemma IZN : forall n:Z, (0 <= n)%Z -> exists m : nat, n = Z.of_nat m.
Lemma INR_IZR_INZ : forall n:nat, INR n = IZR (Z.of_nat n).
Lemma IZR_NEG : forall p, IZR (Zneg p) = Ropp (IZR (Zpos p)).
Lemma IZR_POS_xO : forall p, IZR (Zpos (p~0)) = 2 * (IZR (Zpos p)).
Lemma IZR_POS_xI : forall p, IZR (Zpos (xI p)) = 1 + 2 * IZR (Zpos p).
Lemma plus_IZR_NEG_POS : forall p q:positive, IZR (Zpos p + Zneg q) = IZR (Zpos p) + IZR (Zneg q).
Lemma plus_IZR : forall n m:Z, IZR (n + m) = IZR n + IZR m.
Lemma mult_IZR : forall n m:Z, IZR (n * m) = IZR n * IZR m.
Lemma pow_IZR : forall z n, pow (IZR z) n = IZR (Z.pow z (Z.of_nat n)).
Lemma succ_IZR : forall n:Z, IZR (Z.succ n) = IZR n + 1.
Lemma opp_IZR : forall n:Z, IZR (- n) = - IZR n.