(** Note on the convergence modulus for x when computing 1/x: Thinking in terms of absolute and relative errors and scales we get: - 2^n is absolute error of 1/x (the requested error) - 2^k is a lower bound of x -> 2^-k is an upper bound of 1/x For simplicity lets’ say 2^k is the scale of x and 2^-k is the scale of 1/x.  With this we get: - relative error of 1/x = absolute error of 1/x / scale of 1/x = 2^n / 2^-k = 2^(n+k) - 1/x maintains relative error - relative error of x = relative error 1/x = 2^(n+k) - absolute error of x = relative error x * scale of x = 2^(n+k) * 2^k - absolute error of x = 2^(n+2*k) *)
Definition CReal_inv_pos_cm (x : CReal) (xPos : 0 < x) (n : Z):=
(Z.min (CRealLowerBound x xPos) (n + 2 * (CRealLowerBound x xPos)))%Z.
Definition CReal_inv_pos_seq (x : CReal) (xPos : 0 < x) (n : Z) :=
(/ seq x (CReal_inv_pos_cm x xPos n))%Q.
Definition CReal_inv_pos_scale (x : CReal) (xPos : 0 < x) : Z :=
(- (CRealLowerBound x xPos))%Z.

(* Specifications: *)
Lemma CReal_inv_pos_cauchy: forall (x : CReal) (xPos : 0 < x),
QCauchySeq (CReal_inv_pos_seq x xPos).
Lemma CReal_inv_pos_bound : forall (x : CReal) (Hxpos : 0 < x),
QBound (CReal_inv_pos_seq x Hxpos) (CReal_inv_pos_scale x Hxpos).