Definition Rbar_div (x y : Rbar) : Rbar :=
  Rbar_mult x (Rbar_inv y).Definition is_Rbar_div (x y z : Rbar) : Prop :=
  is_Rbar_mult x (Rbar_inv y) z.Definition ex_Rbar_div (x y : Rbar) : Prop :=
  ex_Rbar_mult x (Rbar_inv y).Definition Rbar_div_pos (x : Rbar) (y : posreal) :=
  match x with
    | Finite x => Finite (x/y)
    | _ => x
  end.

(* Specifications: *)
Lemma Rbar_finite_eq (x y : R) : Finite x = Finite y <-> x = y.
Lemma Rbar_finite_neq (x y : R) : Finite x <> Finite y <-> x <> y.
Lemma Rbar_lt_not_eq (x y : Rbar) : Rbar_lt x y -> x<>y.
Lemma Rbar_not_le_lt (x y : Rbar) : ~ Rbar_le x y -> Rbar_lt y x.
Lemma Rbar_lt_not_le (x y : Rbar) : Rbar_lt y x -> ~ Rbar_le x y.
Lemma Rbar_not_lt_le (x y : Rbar) : ~ Rbar_lt x y -> Rbar_le y x.
Lemma Rbar_le_not_lt (x y : Rbar) : Rbar_le y x -> ~ Rbar_lt x y.
Lemma Rbar_le_refl : forall x : Rbar, Rbar_le x x.
Lemma Rbar_lt_le : forall x y : Rbar, Rbar_lt x y -> Rbar_le x y.
Lemma Rbar_total_order (x y : Rbar) : {Rbar_lt x y} + {x = y} + {Rbar_lt y x}.
Lemma Rbar_eq_dec (x y : Rbar) : {x = y} + {x <> y}.
Lemma Rbar_lt_dec (x y : Rbar) : {Rbar_lt x y} + {~Rbar_lt x y}.
Lemma Rbar_lt_le_dec (x y : Rbar) : {Rbar_lt x y} + {Rbar_le y x}.
Lemma Rbar_le_dec (x y : Rbar) : {Rbar_le x y} + {~Rbar_le x y}.
Lemma Rbar_le_lt_dec (x y : Rbar) : {Rbar_le x y} + {Rbar_lt y x}.
Lemma Rbar_le_lt_or_eq_dec (x y : Rbar) : Rbar_le x y -> { Rbar_lt x y } + { x = y }.
Lemma Rbar_lt_trans (x y z : Rbar) : Rbar_lt x y -> Rbar_lt y z -> Rbar_lt x z.
Lemma Rbar_lt_le_trans (x y z : Rbar) : Rbar_lt x y -> Rbar_le y z -> Rbar_lt x z.
Lemma Rbar_le_lt_trans (x y z : Rbar) : Rbar_le x y -> Rbar_lt y z -> Rbar_lt x z.
Lemma Rbar_le_trans (x y z : Rbar) : Rbar_le x y -> Rbar_le y z -> Rbar_le x z.
Lemma Rbar_le_antisym (x y : Rbar) : Rbar_le x y -> Rbar_le y x -> x = y.
Lemma Rbar_opp_involutive (x : Rbar) : (Rbar_opp (Rbar_opp x)) = x.
Lemma Rbar_opp_lt (x y : Rbar) : Rbar_lt (Rbar_opp x) (Rbar_opp y) <-> Rbar_lt y x.
Lemma Rbar_opp_le (x y : Rbar) : Rbar_le (Rbar_opp x) (Rbar_opp y) <-> Rbar_le y x.
Lemma Rbar_opp_eq (x y : Rbar) : (Rbar_opp x) = (Rbar_opp y) <-> x = y.
Lemma Rbar_opp_real (x : Rbar) : real (Rbar_opp x) = - real x.
Lemma Rbar_plus'_comm : forall x y, Rbar_plus' x y = Rbar_plus' y x.
Lemma ex_Rbar_plus_comm : forall x y, ex_Rbar_plus x y -> ex_Rbar_plus y x.
Lemma ex_Rbar_plus_opp (x y : Rbar) : ex_Rbar_plus x y -> ex_Rbar_plus (Rbar_opp x) (Rbar_opp y).
Lemma Rbar_plus_0_r (x : Rbar) : Rbar_plus x (Finite 0) = x.
Lemma Rbar_plus_0_l (x : Rbar) : Rbar_plus (Finite 0) x = x.
Lemma Rbar_plus_comm (x y : Rbar) : Rbar_plus x y = Rbar_plus y x.
Lemma Rbar_plus_lt_compat (a b c d : Rbar) : Rbar_lt a b -> Rbar_lt c d -> Rbar_lt (Rbar_plus a c) (Rbar_plus b d).
Lemma Rbar_plus_le_compat (a b c d : Rbar) : Rbar_le a b -> Rbar_le c d -> Rbar_le (Rbar_plus a c) (Rbar_plus b d).
Lemma Rbar_plus_opp (x y : Rbar) : Rbar_plus (Rbar_opp x) (Rbar_opp y) = Rbar_opp (Rbar_plus x y).
Lemma Rbar_minus_eq_0 (x : Rbar) : Rbar_minus x x = 0.
Lemma Rbar_opp_minus (x y : Rbar) : Rbar_opp (Rbar_minus x y) = Rbar_minus y x.
Lemma Rbar_inv_opp (x : Rbar) : x <> 0 -> Rbar_inv (Rbar_opp x) = Rbar_opp (Rbar_inv x).
Lemma Rbar_mult'_comm (x y : Rbar) : Rbar_mult' x y = Rbar_mult' y x.
Lemma Rbar_mult'_opp_r (x y : Rbar) : Rbar_mult' x (Rbar_opp y) = match Rbar_mult' x y with Some z => Some (Rbar_opp z) | None => None end.
Lemma Rbar_mult_comm (x y : Rbar) : Rbar_mult x y = Rbar_mult y x.
Lemma Rbar_mult_opp_r (x y : Rbar) : Rbar_mult x (Rbar_opp y) = (Rbar_opp (Rbar_mult x y)).
Lemma Rbar_mult_opp_l (x y : Rbar) : Rbar_mult (Rbar_opp x) y = Rbar_opp (Rbar_mult x y).
Lemma Rbar_mult_opp (x y : Rbar) : Rbar_mult (Rbar_opp x) (Rbar_opp y) = Rbar_mult x y.
Lemma Rbar_mult_0_l (x : Rbar) : Rbar_mult 0 x = 0.
Lemma Rbar_mult_0_r (x : Rbar) : Rbar_mult x 0 = 0.
Lemma Rbar_mult_eq_0 (y x : Rbar) : Rbar_mult x y = 0 -> x = 0 \/ y = 0.
Lemma ex_Rbar_mult_sym (x y : Rbar) : ex_Rbar_mult x y -> ex_Rbar_mult y x.
Lemma ex_Rbar_mult_opp_l (x y : Rbar) : ex_Rbar_mult x y -> ex_Rbar_mult (Rbar_opp x) y.
Lemma ex_Rbar_mult_opp_r (x y : Rbar) : ex_Rbar_mult x y -> ex_Rbar_mult x (Rbar_opp y).
Lemma is_Rbar_mult_sym (x y z : Rbar) : is_Rbar_mult x y z -> is_Rbar_mult y x z.
Lemma is_Rbar_mult_opp_l (x y z : Rbar) : is_Rbar_mult x y z -> is_Rbar_mult (Rbar_opp x) y (Rbar_opp z).
Lemma is_Rbar_mult_opp_r (x y z : Rbar) : is_Rbar_mult x y z -> is_Rbar_mult x (Rbar_opp y) (Rbar_opp z).
Lemma is_Rbar_mult_p_infty_pos (x : Rbar) : Rbar_lt 0 x -> is_Rbar_mult p_infty x p_infty.
Lemma is_Rbar_mult_p_infty_neg (x : Rbar) : Rbar_lt x 0 -> is_Rbar_mult p_infty x m_infty.
Lemma is_Rbar_mult_m_infty_pos (x : Rbar) : Rbar_lt 0 x -> is_Rbar_mult m_infty x m_infty.
Lemma is_Rbar_mult_m_infty_neg (x : Rbar) : Rbar_lt x 0 -> is_Rbar_mult m_infty x p_infty.
Lemma is_Rbar_div_p_infty (x : R) : is_Rbar_div x p_infty 0.
Lemma is_Rbar_div_m_infty (x : R) : is_Rbar_div x m_infty 0.
Lemma Rbar_mult_pos_eq (x y : Rbar) (z : posreal) : x = y <-> (Rbar_mult_pos x z) = (Rbar_mult_pos y z).
Lemma Rbar_mult_pos_lt (x y : Rbar) (z : posreal) : Rbar_lt x y <-> Rbar_lt (Rbar_mult_pos x z) (Rbar_mult_pos y z).
Lemma Rbar_mult_pos_le (x y : Rbar) (z : posreal) : Rbar_le x y <-> Rbar_le (Rbar_mult_pos x z) (Rbar_mult_pos y z).
Lemma Rbar_div_pos_eq (x y : Rbar) (z : posreal) : x = y <-> (Rbar_div_pos x z) = (Rbar_div_pos y z).
Lemma Rbar_div_pos_lt (x y : Rbar) (z : posreal) : Rbar_lt x y <-> Rbar_lt (Rbar_div_pos x z) (Rbar_div_pos y z).
Lemma Rbar_div_pos_le (x y : Rbar) (z : posreal) : Rbar_le x y <-> Rbar_le (Rbar_div_pos x z) (Rbar_div_pos y z).