Infix "* " := rmul.Infix "==" := req.Fixpoint pow_pos (x:R) (i:positive) : R :=
  match i with
  | xH => x
  | xO i => let p := pow_pos x i in p * p
  | xI i => let p := pow_pos x i in x * (p * p)
  end.

(* Specifications: *)
Lemma pow_pos_swap x j : pow_pos x j * x == x * pow_pos x j.
Lemma pow_pos_succ x j : pow_pos x (Pos.succ j) == x * pow_pos x j.
Lemma pow_pos_add x i j : pow_pos x (i + j) == pow_pos x i * pow_pos x j.