intros r z; case z; simpl in |- *; auto; intros p H' H'1; left.
case (pow_R1 _ _ H'1); auto.
intros H'0; Contradict H'0; auto with zarith; apply convert_not_O.
rewrite Rinv_pow in H'1; auto.
case (pow_R1 _ _ H'1); auto.
intros H'0.
rewrite <- H'0.
apply Rmult_eq_reg_l with (r := 1%R); auto with real.
pattern 1%R at 1 in |- *; rewrite <- H'0; auto with real.
pattern (Rabs (/ r)) at 1 in |- *; rewrite Rabs_Rinv; try rewrite Rinv_l;
auto with real.
rewrite H'0; auto with real.
apply Rabs_no_R0; auto.
intros H'0; Contradict H'0; auto with zarith; apply convert_not_O.
Qed.

(* Specifications: *)
Theorem Rpow_eq_inv :
forall (r : R) (p q : BinInt.Z),
r <> 0%R -> Rabs r <> 1%R -> powerRZ r p = powerRZ r q -> p = q.
Theorem Rpow_eq_inv :
forall (r : R) (p q : Z),
r <> 0%R -> Rabs r <> 1%R -> powerRZ r p = powerRZ r q -> p = q.