(** Well-used function called bpow for computing the power function #&beta;#^e *)
Definition bpow e :=
  match e with
  | Zpos p => Z2R (Zpower_pos r p)
  | Zneg p => Rinv (Z2R (Zpower_pos r p))
  | Z0 => 1%R
  end.

(* Specifications: *)
Theorem Z2R_Zpower_pos : forall n m, Z2R (Zpower_pos n m) = powerRZ (Z2R n) (Zpos m).
Theorem bpow_powerRZ : forall e, bpow e = powerRZ (Z2R r) e.
Theorem bpow_ge_0 : forall e : Z, (0 <= bpow e)%R.
Theorem bpow_gt_0 : forall e : Z, (0 < bpow e)%R.
Theorem bpow_plus : forall e1 e2 : Z, (bpow (e1 + e2) = bpow e1 * bpow e2)%R.
Theorem bpow_1 : bpow 1 = Z2R r.
Theorem bpow_plus1 : forall e : Z, (bpow (e + 1) = Z2R r * bpow e)%R.
Theorem bpow_opp : forall e : Z, (bpow (-e) = /bpow e)%R.
Theorem Z2R_Zpower_nat : forall e : nat, Z2R (Zpower_nat r e) = bpow (Z_of_nat e).
Theorem Z2R_Zpower : forall e : Z, (0 <= e)%Z -> Z2R (Zpower r e) = bpow e.
Theorem bpow_lt : forall e1 e2 : Z, (e1 < e2)%Z -> (bpow e1 < bpow e2)%R.
Theorem lt_bpow : forall e1 e2 : Z, (bpow e1 < bpow e2)%R -> (e1 < e2)%Z.
Theorem bpow_le : forall e1 e2 : Z, (e1 <= e2)%Z -> (bpow e1 <= bpow e2)%R.
Theorem le_bpow : forall e1 e2 : Z, (bpow e1 <= bpow e2)%R -> (e1 <= e2)%Z.
Theorem bpow_inj : forall e1 e2 : Z, bpow e1 = bpow e2 -> e1 = e2.
Theorem bpow_exp : forall e : Z, bpow e = exp (Z2R e * ln (Z2R r)).
Theorem Z2R_Zpower_pos : forall n m, Z2R (Zpower_pos n m) = powerRZ (Z2R n) (Zpos m).
Theorem bpow_powerRZ : forall e, bpow e = powerRZ (Z2R r) e.
Theorem bpow_ge_0 : forall e : Z, (0 <= bpow e)%R.
Theorem bpow_gt_0 : forall e : Z, (0 < bpow e)%R.
Theorem bpow_plus : forall e1 e2 : Z, (bpow (e1 + e2) = bpow e1 * bpow e2)%R.
Theorem bpow_1 : bpow 1 = Z2R r.
Theorem bpow_plus1 : forall e : Z, (bpow (e + 1) = Z2R r * bpow e)%R.
Theorem bpow_opp : forall e : Z, (bpow (-e) = /bpow e)%R.
Theorem Z2R_Zpower_nat : forall e : nat, Z2R (Zpower_nat r e) = bpow (Z_of_nat e).
Theorem Z2R_Zpower : forall e : Z, (0 <= e)%Z -> Z2R (Zpower r e) = bpow e.
Theorem bpow_lt : forall e1 e2 : Z, (e1 < e2)%Z -> (bpow e1 < bpow e2)%R.
Theorem lt_bpow : forall e1 e2 : Z, (bpow e1 < bpow e2)%R -> (e1 < e2)%Z.
Theorem bpow_le : forall e1 e2 : Z, (e1 <= e2)%Z -> (bpow e1 <= bpow e2)%R.
Theorem le_bpow : forall e1 e2 : Z, (bpow e1 <= bpow e2)%R -> (e1 <= e2)%Z.
Theorem bpow_inj : forall e1 e2 : Z, bpow e1 = bpow e2 -> e1 = e2.
Theorem bpow_exp : forall e : Z, bpow e = exp (Z2R e * ln (Z2R r)).