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} :
    ∀ {inst : Mul A} [self : PreValuationRing A] (a b : A), ∃ (c : A), a * c = b b * c = a
    theorem PreValuationRing.cond {A : Type u} [Mul A] [PreValuationRing A] (a : A) (b : A) :
    ∃ (c : A), a * c = b b * c = a
    class ValuationRing (A : Type u) [CommRing A] [IsDomain A] extends PreValuationRing :

    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} [CommRing A] [IsDomain A] [ValuationRing A] (a : A) (b : A) :
        ∃ (c : A), a * c = b b * c = a
        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
          Equations
          Equations
          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

          Any valuation ring induces a valuation on its fraction field.

          Equations
          • ValuationRing.valuation A K = { toFun := Quotient.mk'', map_zero' := , map_one' := , map_mul' := , map_add_le_max' := }
          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 (ValuationRing.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 ≃+* (ValuationRing.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) :
              @[instance 100]
              Equations
              • =
              Equations
              theorem PreValuationRing.iff_dvd_total {R : Type u_1} [Monoid R] :
              PreValuationRing R IsTotal R fun (x1 x2 : R) => x1 x2
              theorem PreValuationRing.iff_ideal_total {R : Type u_1} [CommRing R] :
              PreValuationRing R IsTotal (Ideal R) fun (x1 x2 : Ideal R) => x1 x2
              theorem ValuationRing.dvd_total {R : Type u_1} [Monoid R] [h : PreValuationRing R] (x : R) (y : R) :
              x y y x
              theorem ValuationRing.iff_dvd_total {R : Type u_1} [CommRing R] [IsDomain R] :
              ValuationRing R IsTotal R fun (x1 x2 : R) => x1 x2
              theorem ValuationRing.iff_ideal_total {R : Type u_1} [CommRing R] [IsDomain R] :
              ValuationRing R IsTotal (Ideal R) fun (x1 x2 : Ideal R) => x1 x2
              theorem ValuationRing.unique_irreducible {R : Type u_1} [CommRing R] [IsDomain R] [ValuationRing R] ⦃p : R ⦃q : R (hp : Irreducible p) (hq : Irreducible q) :
              @[instance 100]
              Equations
              • =
              @[instance 100]
              Equations
              • =
              theorem ValuationRing.TFAE (R : Type u) [CommRing R] [IsDomain R] :
              [ValuationRing R, ∀ (x : FractionRing R), IsLocalization.IsInteger R x IsLocalization.IsInteger R x⁻¹, IsTotal R fun (x1 x2 : R) => x1 x2, IsTotal (Ideal R) fun (x1 x2 : Ideal R) => x1 x2, LocalRing R IsBezout R].TFAE
              theorem ValuationRing.of_integers {𝒪 : Type u} {K : Type v} {Γ : Type w} [CommRing 𝒪] [IsDomain 𝒪] [Field K] [Algebra 𝒪 K] [LinearOrderedCommGroupWithZero Γ] (v : Valuation K Γ) (hh : v.Integers 𝒪) :

              If 𝒪 satisfies v.integers 𝒪 where v is a valuation on a field, then 𝒪 is a valuation ring.

              Equations
              • =
              theorem ValuationRing.isFractionRing_iff {𝒪 : Type u} {K : Type v} [CommRing 𝒪] [IsDomain 𝒪] [Field K] [Algebra 𝒪 K] [ValuationRing 𝒪] :
              IsFractionRing 𝒪 K (∀ (x : K), ∃ (a : 𝒪), x = (algebraMap 𝒪 K) a x⁻¹ = (algebraMap 𝒪 K) a) Function.Injective (algebraMap 𝒪 K)
              instance ValuationRing.instIsFractionRingInteger {K : Type v} {Γ : Type w} [Field K] [LinearOrderedCommGroupWithZero Γ] (v : Valuation K Γ) :
              IsFractionRing (↥v.integer) K
              Equations
              • =
              @[instance 100]

              A field is a valuation ring.

              Equations
              • =