Local Notation ring_for T b := (@GRing.Ring.Pack T b).Record class_of T := Class {
  base : GRing.IntegralDomain.class_of T;
  mixin : mixin_of (ring_for T base)
}.Record class_of T := Class {
  base : GRing.IntegralDomain.class_of T;
  mixin : mixin_of (ring_for T base)
}.Record class_of T := Class {
  base : GRing.IntegralDomain.class_of T;
  mixin : mixin_of (ring_for T base)
}.Record class_of T := Class {
  base : GRing.IntegralDomain.class_of T;
  mixin : mixin_of (ring_for T base)
}.Structure type := Pack {sort; _ : class_of sort}.Structure type := Pack {sort; _ : class_of sort}.Structure type := Pack {sort; _ : class_of sort}.Notation xclass := (class : class_of xT).Definition clone c of phant_id class c := @Pack T c.Definition eqType := @Equality.Pack cT xclass.Definition choiceType := @Choice.Pack cT xclass.Definition zmodType := @GRing.Zmodule.Pack cT xclass.Definition ringType := @GRing.Ring.Pack cT xclass.Definition comRingType := @GRing.ComRing.Pack cT xclass.Definition unitRingType := @GRing.UnitRing.Pack cT xclass.Definition comUnitRingType := @GRing.ComUnitRing.Pack cT xclass.Definition idomainType := @GRing.IntegralDomain.Pack cT xclass.Notation numDomainType := type.Notation NumMixin := Mixin.Notation NumDomainType T m := (@pack T _ m _ _ id _ id).Notation "[ 'rcfType' 'of' T ]" :=  (@clone T _ _ id)
  (at level 0, format "[ 'rcfType'  'of'  T ]") : form_scope.Implicit Types (x y : R) (C : bool).Definition normr : R -> R := norm_op (class R).Definition ler : rel R := le_op (class R).Definition ltr : rel R := lt_op (class R).Notation "x <= y ?= 'iff' C" := (lerif x y C) : ring_scope.Definition minr x y : R := if x <= y then x else y.Definition maxr x y : R := if y <= x then x else y.(* Shorter qualified names, when Num.Def is not imported. *)
Notation norm := normr.Notation le := ler.Notation lt := ltr.Notation ge := ger.Notation gt := gtr.Notation sg := sgr.Notation max := maxr.Notation min := minr.Notation pos := Rpos.Notation neg := Rneg.Notation nneg := Rnneg.Notation real := Rreal.Fact Rpos_key : pred_key (@pos R).Definition Rpos_keyed := KeyedQualifier Rpos_key.Fact Rneg_key : pred_key (@real R).Definition Rneg_keyed := KeyedQualifier Rneg_key.Fact Rnneg_key : pred_key (@nneg R).Definition Rnneg_keyed := KeyedQualifier Rnneg_key.Fact Rreal_key : pred_key (@real R).Definition Rreal_keyed := KeyedQualifier Rreal_key.Local Notation num_for T b := (@NumDomain.Pack T b).Record class_of R :=
  Class { base : GRing.Field.class_of R; mixin : mixin_of (ring_for R base) }.Record class_of R :=
  Class { base : GRing.Field.class_of R; mixin : mixin_of (ring_for R base) }.Record class_of R :=
  Class { base : GRing.Field.class_of R; mixin : mixin_of (ring_for R base) }.Record class_of R :=
  Class { base : GRing.Field.class_of R; mixin : mixin_of (ring_for R base) }.Definition base2 R (c : class_of R) := NumDomain.Class (mixin c).Structure type := Pack {sort; _ : class_of sort}.Structure type := Pack {sort; _ : class_of sort}.Structure type := Pack {sort; _ : class_of sort}.Definition eqType := @Equality.Pack cT xclass.Definition choiceType := @Choice.Pack cT xclass.Definition zmodType := @GRing.Zmodule.Pack cT xclass.Definition ringType := @GRing.Ring.Pack cT xclass.Definition comRingType := @GRing.ComRing.Pack cT xclass.Definition unitRingType := @GRing.UnitRing.Pack cT xclass.Definition comUnitRingType := @GRing.ComUnitRing.Pack cT xclass.Definition idomainType := @GRing.IntegralDomain.Pack cT xclass.Definition numDomainType := @NumDomain.Pack cT xclass.Definition fieldType := @GRing.Field.Pack cT xclass.Definition join_numDomainType := @NumDomain.Pack fieldType xclass.Notation numFieldType := type.Record class_of R := Class {
  base : GRing.ClosedField.class_of R;
  mixin : mixin_of (ring_for R base);
  conj_mixin : imaginary_mixin_of (num_for R (NumDomain.Class mixin))
}.Record class_of R := Class {
  base : GRing.ClosedField.class_of R;
  mixin : mixin_of (ring_for R base);
  conj_mixin : imaginary_mixin_of (num_for R (NumDomain.Class mixin))
}.Record class_of R := Class {
  base : GRing.ClosedField.class_of R;
  mixin : mixin_of (ring_for R base);
  conj_mixin : imaginary_mixin_of (num_for R (NumDomain.Class mixin))
}.Record class_of R := Class {
  base : GRing.ClosedField.class_of R;
  mixin : mixin_of (ring_for R base);
  conj_mixin : imaginary_mixin_of (num_for R (NumDomain.Class mixin))
}.Record class_of R := Class {
  base : GRing.ClosedField.class_of R;
  mixin : mixin_of (ring_for R base);
  conj_mixin : imaginary_mixin_of (num_for R (NumDomain.Class mixin))
}.Definition base2 R (c : class_of R) := NumField.Class (mixin c).Structure type := Pack {sort; _ : class_of sort}.Structure type := Pack {sort; _ : class_of sort}.Structure type := Pack {sort; _ : class_of sort}.Definition eqType := @Equality.Pack cT xclass.Definition choiceType := @Choice.Pack cT xclass.Definition zmodType := @GRing.Zmodule.Pack cT xclass.Definition ringType := @GRing.Ring.Pack cT xclass.Definition comRingType := @GRing.ComRing.Pack cT xclass.Definition unitRingType := @GRing.UnitRing.Pack cT xclass.Definition comUnitRingType := @GRing.ComUnitRing.Pack cT xclass.Definition idomainType := @GRing.IntegralDomain.Pack cT xclass.Definition numDomainType := @NumDomain.Pack cT xclass.Definition fieldType := @GRing.Field.Pack cT xclass.Definition numFieldType := @NumField.Pack cT xclass.Definition decFieldType := @GRing.DecidableField.Pack cT xclass.Definition closedFieldType := @GRing.ClosedField.Pack cT xclass.Definition join_dec_numDomainType := @NumDomain.Pack decFieldType xclass.Definition join_dec_numFieldType := @NumField.Pack decFieldType xclass.Definition join_numDomainType := @NumDomain.Pack closedFieldType xclass.Definition join_numFieldType := @NumField.Pack closedFieldType xclass.Notation numClosedFieldType := type.Notation NumClosedFieldType T m := (@pack T _ _ id _ _ id m).Record class_of R :=
  Class {base : NumDomain.class_of R; _ : @real_axiom (num_for R base)}.Record class_of R :=
  Class {base : NumDomain.class_of R; _ : @real_axiom (num_for R base)}.Record class_of R :=
  Class {base : NumDomain.class_of R; _ : @real_axiom (num_for R base)}.Structure type := Pack {sort; _ : class_of sort}.Structure type := Pack {sort; _ : class_of sort}.Structure type := Pack {sort; _ : class_of sort}.Definition clone c of phant_id class c := @Pack T c.Definition eqType := @Equality.Pack cT xclass.Definition choiceType := @Choice.Pack cT xclass.Definition zmodType := @GRing.Zmodule.Pack cT xclass.Definition ringType := @GRing.Ring.Pack cT xclass.Definition comRingType := @GRing.ComRing.Pack cT xclass.Definition unitRingType := @GRing.UnitRing.Pack cT xclass.Definition comUnitRingType := @GRing.ComUnitRing.Pack cT xclass.Definition idomainType := @GRing.IntegralDomain.Pack cT xclass.Definition numDomainType := @NumDomain.Pack cT xclass.Notation realDomainType := type.Notation RealDomainType T m := (@pack T _ m _ _ id _ id).Record class_of R :=
  Class { base : NumField.class_of R; mixin : real_axiom (num_for R base) }.Record class_of R :=
  Class { base : NumField.class_of R; mixin : real_axiom (num_for R base) }.Record class_of R :=
  Class { base : NumField.class_of R; mixin : real_axiom (num_for R base) }.Record class_of R :=
  Class { base : NumField.class_of R; mixin : real_axiom (num_for R base) }.Definition base2 R (c : class_of R) := RealDomain.Class (@mixin R c).Structure type := Pack {sort; _ : class_of sort}.Structure type := Pack {sort; _ : class_of sort}.Structure type := Pack {sort; _ : class_of sort}.Definition eqType := @Equality.Pack cT xclass.Definition choiceType := @Choice.Pack cT xclass.Definition zmodType := @GRing.Zmodule.Pack cT xclass.Definition ringType := @GRing.Ring.Pack cT xclass.Definition comRingType := @GRing.ComRing.Pack cT xclass.Definition unitRingType := @GRing.UnitRing.Pack cT xclass.Definition comUnitRingType := @GRing.ComUnitRing.Pack cT xclass.Definition idomainType := @GRing.IntegralDomain.Pack cT xclass.Definition numDomainType := @NumDomain.Pack cT xclass.Definition realDomainType := @RealDomain.Pack cT xclass.Definition fieldType := @GRing.Field.Pack cT xclass.Definition numFieldType := @NumField.Pack cT xclass.Definition join_realDomainType := @RealDomain.Pack numFieldType xclass.Notation realFieldType := type.Record class_of R :=
  Class { base : RealField.class_of R; _ : archimedean_axiom (num_for R base) }.Record class_of R :=
  Class { base : RealField.class_of R; _ : archimedean_axiom (num_for R base) }.Record class_of R :=
  Class { base : RealField.class_of R; _ : archimedean_axiom (num_for R base) }.Structure type := Pack {sort; _ : class_of sort}.Structure type := Pack {sort; _ : class_of sort}.Structure type := Pack {sort; _ : class_of sort}.Definition clone c of phant_id class c := @Pack T c.Definition eqType := @Equality.Pack cT xclass.Definition choiceType := @Choice.Pack cT xclass.Definition zmodType := @GRing.Zmodule.Pack cT xclass.Definition ringType := @GRing.Ring.Pack cT xclass.Definition comRingType := @GRing.ComRing.Pack cT xclass.Definition unitRingType := @GRing.UnitRing.Pack cT xclass.Definition comUnitRingType := @GRing.ComUnitRing.Pack cT xclass.Definition idomainType := @GRing.IntegralDomain.Pack cT xclass.Definition numDomainType := @NumDomain.Pack cT xclass.Definition realDomainType := @RealDomain.Pack cT xclass.Definition fieldType := @GRing.Field.Pack cT xclass.Definition numFieldType := @NumField.Pack cT xclass.Definition realFieldType := @RealField.Pack cT xclass.Notation archiFieldType := type.Notation ArchiFieldType T m := (@pack T _ m _ _ id _ id).Record class_of R :=
  Class { base : RealField.class_of R; _ : real_closed_axiom (num_for R base) }.Record class_of R :=
  Class { base : RealField.class_of R; _ : real_closed_axiom (num_for R base) }.Record class_of R :=
  Class { base : RealField.class_of R; _ : real_closed_axiom (num_for R base) }.Structure type := Pack {sort; _ : class_of sort}.Structure type := Pack {sort; _ : class_of sort}.Structure type := Pack {sort; _ : class_of sort}.Definition clone c of phant_id class c := @Pack T c.Definition eqType := @Equality.Pack cT xclass.Definition choiceType := @Choice.Pack cT xclass.Definition zmodType := @GRing.Zmodule.Pack cT xclass.Definition ringType := @GRing.Ring.Pack cT xclass.Definition comRingType := @GRing.ComRing.Pack cT xclass.Definition unitRingType := @GRing.UnitRing.Pack cT xclass.Definition comUnitRingType := @GRing.ComUnitRing.Pack cT xclass.Definition idomainType := @GRing.IntegralDomain.Pack cT xclass.Definition numDomainType := @NumDomain.Pack cT xclass.Definition realDomainType := @RealDomain.Pack cT xclass.Definition fieldType := @GRing.Field.Pack cT xclass.Definition numFieldType := @NumField.Pack cT xclass.Definition realFieldType := @RealField.Pack cT xclass.Notation rcfType := Num.RealClosedField.type.Notation RcfType T m := (@pack T _ m _ _ id _ id).Implicit Types x y : R.

(* Specifications: *)
Lemma addr_gt0 x y : 0 < x -> 0 < y -> 0 < x + y.
Lemma ger_leVge x y : 0 <= x -> 0 <= y -> (x <= y) || (y <= x).
Lemma subr_ge0 x y : (0 <= x - y) = (y <= x).
Lemma oppr_ge0 x : (0 <= - x) = (x <= 0).
Lemma ler01 : 0 <= 1 :> R.
Lemma ltr01 : 0 < 1 :> R.
Lemma ltrW x y : x < y -> x <= y.
Lemma lerr x : x <= x.
Lemma addr_ge0 x y : 0 <= x -> 0 <= y -> 0 <= x + y.
Lemma pmulr_rgt0 x y : 0 < x -> (0 < x * y) = (0 < y).