Definition inject_Q (q : Q) : CReal :=
{|
  seq := (fun n : Z => q);
  scale := Qbound_ltabs_ZExp2 q;
  cauchy := inject_Q_cauchy q;
  bound := (fun _ : Z => Qbound_ltabs_ZExp2_spec q)
|}.Definition inject_Z : Z -> CReal
  := fun n => inject_Q (n # 1).Notation "0" := (inject_Q 0) : CReal_scope.Notation "1" := (inject_Q 1) : CReal_scope.Notation "2" := (inject_Q 2) : CReal_scope.

Lemma inject_Q_compare : forall (x : CReal) (p : Z), x <= inject_Q (seq x p + (2^p)).