Documentation

Mathlib.RingTheory.Valuation.ValuationRing

Valuation Rings #

A valuation ring is a domain such that for every pair of elements a b, either a divides b or vice-versa.

Any valuation ring induces a natural valuation on its fraction field, as we show in this file. Namely, given the following instances: [CommRing A] [IsDomain A] [ValuationRing A] [Field K] [Algebra A K] [IsFractionRing A K], there is a natural valuation Valuation A K on K with values in value_group A K where the image of A under algebraMap A K agrees with (Valuation A K).integer.

We also provide the equivalence of the following notions for a domain R in ValuationRing.TFAE.

  1. R is a valuation ring.
  2. For each x : FractionRing K, either x or xโปยน is in R.
  3. "divides" is a total relation on the elements of R.
  4. "contains" is a total relation on the ideals of R.
  5. R is a local bezout domain.

We also show that, given a valuation v on a field K, the ring of valuation integers is a valuation ring and K is the fraction field of this ring.

Implementation details #

The Mathlib definition of a valuation ring requires IsDomain A even though the condition does not mention zero divisors. Thus, there is a technical PreValuationRing A that is defined in further generality that can be used in places where the ring cannot be a domain. The ValuationRing class is kept to be in sync with the literature.

class PreValuationRing (A : Type u) [Mul A] :

A magma is called a PreValuationRing provided that for any pair of elements a b : A, either a divides b or vice versa.

  • cond' (a b : A) : โˆƒ (c : A), a * c = b โˆจ b * c = a
Instances
    theorem PreValuationRing.cond {A : Type u} [Mul A] [PreValuationRing A] (a b : A) :
    โˆƒ (c : A), a * c = b โˆจ b * c = a
    class ValuationRing (A : Type u) [CommRing A] [IsDomain A] extends PreValuationRing A :

    An integral domain is called a ValuationRing provided that for any pair of elements a b : A, either a divides b or vice versa.

    Instances
      theorem ValuationRing.cond {A : Type u} [Mul A] [PreValuationRing A] (a b : A) :
      โˆƒ (c : A), a * c = b โˆจ b * c = a

      An abbreviation for PreValuationRing.cond which should save some writing.

      def ValuationRing.ValueGroup (A : Type u) [CommRing A] (K : Type v) [Field K] [Algebra A K] :

      The value group of the valuation ring A. Note: this is actually a group with zero.

      Equations
        Instances For
          instance ValuationRing.instLEValueGroup (A : Type u) [CommRing A] (K : Type v) [Field K] [Algebra A K] :
          Equations
            noncomputable instance ValuationRing.linearOrder (A : Type u) [CommRing A] (K : Type v) [Field K] [Algebra A K] [IsDomain A] [ValuationRing A] [IsFractionRing A K] :
            Equations
              noncomputable def ValuationRing.valuation (A : Type u) [CommRing A] (K : Type v) [Field K] [Algebra A K] [IsDomain A] [ValuationRing A] [IsFractionRing A K] :

              Any valuation ring induces a valuation on its fraction field.

              Equations
                Instances For
                  theorem ValuationRing.mem_integer_iff (A : Type u) [CommRing A] (K : Type v) [Field K] [Algebra A K] [IsDomain A] [ValuationRing A] [IsFractionRing A K] (x : K) :
                  x โˆˆ (valuation A K).integer โ†” โˆƒ (a : A), (algebraMap A K) a = x
                  noncomputable def ValuationRing.equivInteger (A : Type u) [CommRing A] (K : Type v) [Field K] [Algebra A K] [IsDomain A] [ValuationRing A] [IsFractionRing A K] :
                  A โ‰ƒ+* โ†ฅ(valuation A K).integer

                  The valuation ring A is isomorphic to the ring of integers of its associated valuation.

                  Equations
                    Instances For
                      @[simp]
                      theorem ValuationRing.coe_equivInteger_apply (A : Type u) [CommRing A] (K : Type v) [Field K] [Algebra A K] [IsDomain A] [ValuationRing A] [IsFractionRing A K] (a : A) :
                      โ†‘((equivInteger A K) a) = (algebraMap A K) a
                      theorem ValuationRing.unique_irreducible {R : Type u_1} [CommRing R] [IsDomain R] [PreValuationRing R] โฆƒp q : Rโฆ„ (hp : Irreducible p) (hq : Irreducible q) :
                      theorem isFractionRing_of_exists_eq_algebraMap_or_inv_eq_algebraMap_of_injective {๐’ช : Type u} {K : Type v} [CommRing ๐’ช] [Field K] [Algebra ๐’ช K] (h : โˆ€ (x : K), โˆƒ (a : ๐’ช), x = (algebraMap ๐’ช K) a โˆจ xโปยน = (algebraMap ๐’ช K) a) (hinj : Function.Injective โ‡‘(algebraMap ๐’ช K)) :
                      IsFractionRing ๐’ช K
                      theorem Valuation.Integers.isFractionRing {๐’ช : Type u} {K : Type v} {ฮ“ : Type w} [CommRing ๐’ช] [Field K] [Algebra ๐’ช K] [LinearOrderedCommGroupWithZero ฮ“] {v : Valuation K ฮ“} (hv : v.Integers ๐’ช) :
                      IsFractionRing ๐’ช K
                      theorem ValuationRing.of_integers {๐’ช : Type u} {K : Type v} {ฮ“ : Type w} [CommRing ๐’ช] [Field K] [Algebra ๐’ช K] [LinearOrderedCommGroupWithZero ฮ“] (v : Valuation K ฮ“) (hh : v.Integers ๐’ช) :
                      ValuationRing ๐’ช

                      If ๐’ช satisfies v.integers ๐’ช where v is a valuation on a field, then ๐’ช is a valuation ring.

                      theorem ValuationRing.isFractionRing_iff {๐’ช : Type u} {K : Type v} [CommRing ๐’ช] [Field K] [Algebra ๐’ช K] [IsDomain ๐’ช] [ValuationRing ๐’ช] :
                      IsFractionRing ๐’ช K โ†” (โˆ€ (x : K), โˆƒ (a : ๐’ช), x = (algebraMap ๐’ช K) a โˆจ xโปยน = (algebraMap ๐’ช K) a) โˆง Function.Injective โ‡‘(algebraMap ๐’ช K)
                      @[instance 100]

                      A field is a valuation ring.