Documentation

Mathlib.Algebra.Order.Ring.Archimedean

Archimedean classes of a linearly ordered ring #

The archimedean classes of a linearly ordered ring can be given the structure of an AddCommMonoid, by defining

For a linearly ordered field, we can define a negative as

which turns them into a LinearOrderedAddCommGroupWithTop.

Implementation notes #

We give Archimedean class an additive structure, rather than a multiplicative one, for the following reasons:

Multiplication in R transfers to addition in ArchimedeanClass R.

Equations
    @[simp]
    theorem ArchimedeanClass.mk_mul {R : Type u_1} [LinearOrder R] [CommRing R] [IsStrictOrderedRing R] (x y : R) :
    mk (x * y) = mk x + mk y
    @[simp]
    theorem ArchimedeanClass.mk_pow {R : Type u_1} [LinearOrder R] [CommRing R] [IsStrictOrderedRing R] (n : ) (x : R) :
    mk (x ^ n) = n mk x

    ArchimedeanClass.mk defines an AddValuation on the ring R.

    Equations
      Instances For
        theorem ArchimedeanClass.mk_map_of_archimedean {R : Type u_1} [LinearOrder R] [CommRing R] [IsStrictOrderedRing R] {S : Type u_3} [LinearOrder S] [CommRing S] [IsStrictOrderedRing S] [Archimedean S] (f : S →+o R) {x : S} (h : x 0) :
        mk (f x) = mk (f 1)

        See mk_map_of_archimedean' for a version taking M →+*o R.

        theorem ArchimedeanClass.mk_map_of_archimedean' {R : Type u_1} [LinearOrder R] [CommRing R] [IsStrictOrderedRing R] {S : Type u_3} [LinearOrder S] [CommRing S] [IsStrictOrderedRing S] [Archimedean S] (f : S →+*o R) {x : S} (h : x 0) :
        mk (f x) = 0

        See mk_map_of_archimedean for a version taking M →+o R.

        theorem ArchimedeanClass.lt_of_pos_of_archimedean {R : Type u_1} [LinearOrder R] [CommRing R] [IsStrictOrderedRing R] {S : Type u_3} [LinearOrder S] [CommRing S] [IsStrictOrderedRing S] [Archimedean S] (f : S →+*o R) {x : R} (hx : 0 < mk x) {y : S} (hy : 0 < y) :
        x < f y
        theorem ArchimedeanClass.lt_of_neg_of_archimedean {R : Type u_1} [LinearOrder R] [CommRing R] [IsStrictOrderedRing R] {S : Type u_3} [LinearOrder S] [CommRing S] [IsStrictOrderedRing S] [Archimedean S] (f : S →+*o R) {x : R} (hx : 0 < mk x) {y : S} (hy : y < 0) :
        f y < x
        @[simp]
        theorem ArchimedeanClass.mk_intCast {S : Type u_3} [LinearOrder S] [CommRing S] [IsStrictOrderedRing S] {n : } (h : n 0) :
        mk n = 0
        @[simp]
        theorem ArchimedeanClass.mk_natCast {S : Type u_3} [LinearOrder S] [CommRing S] [IsStrictOrderedRing S] {n : } :
        n 0mk n = 0
        theorem ArchimedeanClass.exists_nat_ge_of_mk_nonneg {R : Type u_1} [LinearOrder R] [CommRing R] [IsStrictOrderedRing R] {x : R} (hx : 0 mk x) :
        ∃ (n : ), x n
        theorem ArchimedeanClass.exists_nat_gt_of_mk_nonneg {R : Type u_1} [LinearOrder R] [CommRing R] [IsStrictOrderedRing R] {x : R} (hx : 0 mk x) :
        ∃ (n : ), x < n
        theorem ArchimedeanClass.exists_int_ge_of_mk_nonneg {R : Type u_1} [LinearOrder R] [CommRing R] [IsStrictOrderedRing R] {x : R} (hx : 0 mk x) :
        ∃ (n : ), x n
        theorem ArchimedeanClass.exists_int_gt_of_mk_nonneg {R : Type u_1} [LinearOrder R] [CommRing R] [IsStrictOrderedRing R] {x : R} (hx : 0 mk x) :
        ∃ (n : ), x < n
        theorem ArchimedeanClass.exists_int_le_of_mk_nonneg {R : Type u_1} [LinearOrder R] [CommRing R] [IsStrictOrderedRing R] {x : R} (hx : 0 mk x) :
        ∃ (n : ), n x
        theorem ArchimedeanClass.exists_int_lt_of_mk_nonneg {R : Type u_1} [LinearOrder R] [CommRing R] [IsStrictOrderedRing R] {x : R} (hx : 0 mk x) :
        ∃ (n : ), n < x
        theorem ArchimedeanClass.mk_nonneg_of_le_of_le_of_archimedean {R : Type u_1} [LinearOrder R] [CommRing R] [IsStrictOrderedRing R] {S : Type u_3} [LinearOrder S] [CommRing S] [IsStrictOrderedRing S] [Archimedean S] (f : S →+*o R) {x : R} {r s : S} (hr : f r x) (hs : x f s) :
        0 mk x
        theorem ArchimedeanClass.add_left_cancel_of_ne_top {R : Type u_1} [LinearOrder R] [CommRing R] [IsStrictOrderedRing R] {x y z : ArchimedeanClass R} (hx : x ) (h : x + y = x + z) :
        y = z
        theorem ArchimedeanClass.add_right_cancel_of_ne_top {R : Type u_1} [LinearOrder R] [CommRing R] [IsStrictOrderedRing R] {x y z : ArchimedeanClass R} (hx : x ) (h : y + x = z + x) :
        y = z
        theorem ArchimedeanClass.mk_le_mk_iff_denselyOrdered {R : Type u_1} {S : Type u_2} [LinearOrder R] [LinearOrder S] [CommRing R] [IsStrictOrderedRing R] [Ring S] [IsStrictOrderedRing S] [DenselyOrdered R] [Archimedean R] {x y : S} (f : R →+* S) (hf : StrictMono f) :
        mk x mk y ∃ (q : R), 0 < f q f q * |y| |x|
        @[simp]
        theorem ArchimedeanClass.mk_inv {R : Type u_1} [LinearOrder R] [Field R] [IsOrderedRing R] (x : R) :
        @[simp]
        theorem ArchimedeanClass.mk_zpow {R : Type u_1} [LinearOrder R] [Field R] [IsOrderedRing R] (n : ) (x : R) :
        mk (x ^ n) = n mk x
        @[simp]
        theorem ArchimedeanClass.mk_div {R : Type u_1} [LinearOrder R] [Field R] [IsOrderedRing R] (x y : R) :
        mk (x / y) = mk x - mk y
        @[simp]
        theorem ArchimedeanClass.mk_ratCast {R : Type u_1} [LinearOrder R] [Field R] [IsOrderedRing R] {q : } (h : q 0) :
        mk q = 0
        theorem ArchimedeanClass.mk_le_mk_iff_ratCast {R : Type u_1} [LinearOrder R] [Field R] [IsOrderedRing R] {x y : R} :
        mk x mk y ∃ (q : ), 0 < q q * |y| |x|