Documentation

Mathlib.RingTheory.Valuation.Discrete.Basic

Discrete Valuations #

Given a linearly ordered commutative group with zero Γ, a valuation v : A → Γ on a ring A is discrete, if there is an element γ : Γˣ that is < 1 and generated the range of v, implemented as MonoidWithZeroHom.valueGroup v. When Γ := ℤₘ₀ (defined in Multiplicative.termℤₘ₀), γ = ofAdd (-1) and the condition of being discrete is equivalent to asking that ofAdd (-1 : ℤ) belongs to the image, in turn equivalent to asking that 1 : ℤ belongs to the image of the corresponding additive valuation.

Note that this definition of discrete implies that the valuation is nontrivial and of rank one, as is commonly assumed in number theory. To avoid potential confusion with other definitions of discrete, we use the name IsRankOneDiscrete to refer to discrete valuations in this setting.

Main Definitions #

Main Results #

TODO #

Given a linearly ordered commutative group with zero Γ such that Γˣ is nontrivial cyclic, a valuation v : A → Γ on a ring A is discrete, if genLTOne Γˣ belongs to the image. Note that the latter is equivalent to asking that 1 : ℤ belongs to the image of the corresponding additive valuation.

Instances
    noncomputable def Valuation.IsRankOneDiscrete.generator {Γ : Type u_1} [LinearOrderedCommGroupWithZero Γ] {A : Type u_2} [Ring A] (v : Valuation A Γ) [v.IsRankOneDiscrete] :
    Γˣ

    Given a discrete valuation v, Valuation.IsRankOneDiscrete.generator is an element of Γ which is a generator of the value group that is < 1.

    Equations
    Instances For

      Given a discrete valuation v, Valuation.IsRankOneDiscrete.generator is a generator of the value group that is < 1, as an element of valueGroup v.

      Equations
      Instances For

        The generator of a discrete valuation in ℤᵐ⁰ that contains exp (-1) in its range is equal to exp (-1).

        The generator of a surjective discrete valuation in ℤᵐ⁰ is equal to exp (-1).

        @[deprecated Valuation.IsRankOneDiscrete.generator_eq_exp_neg_one_of_surjective (since := "2026-04-01")]
        def Valuation.IsUniformizer {Γ : Type u_1} [LinearOrderedCommGroupWithZero Γ] {A : Type u_2} [Ring A] (v : Valuation A Γ) [hv : v.IsRankOneDiscrete] (π : A) :

        An element π : A is a uniformizer if v π is a generator of the value group that is < 1.

        Equations
        Instances For
          theorem Valuation.IsUniformizer.ne_zero {Γ : Type u_1} [LinearOrderedCommGroupWithZero Γ] {A : Type u_2} [Ring A] {v : Valuation A Γ} [hv : v.IsRankOneDiscrete] {π : A} ( : v.IsUniformizer π) :
          π 0
          @[simp]
          theorem Valuation.IsUniformizer.val {Γ : Type u_1} [LinearOrderedCommGroupWithZero Γ] {A : Type u_2} [Ring A] {v : Valuation A Γ} [hv : v.IsRankOneDiscrete] {π : A} ( : v.IsUniformizer π) :
          theorem Valuation.IsUniformizer.val_lt_one {Γ : Type u_1} [LinearOrderedCommGroupWithZero Γ] {A : Type u_2} [Ring A] {v : Valuation A Γ} [hv : v.IsRankOneDiscrete] {π : A} ( : v.IsUniformizer π) :
          v π < 1
          theorem Valuation.IsUniformizer.val_ne_zero {Γ : Type u_1} [LinearOrderedCommGroupWithZero Γ] {A : Type u_2} [Ring A] {v : Valuation A Γ} [hv : v.IsRankOneDiscrete] {π : A} ( : v.IsUniformizer π) :
          v π 0
          theorem Valuation.IsUniformizer.val_pos {Γ : Type u_1} [LinearOrderedCommGroupWithZero Γ] {A : Type u_2} [Ring A] {v : Valuation A Γ} [hv : v.IsRankOneDiscrete] {π : A} ( : v.IsUniformizer π) :
          0 < v π
          structure Valuation.Uniformizer {Γ : Type u_1} [LinearOrderedCommGroupWithZero Γ] {A : Type u_2} [Ring A] (v : Valuation A Γ) [hv : v.IsRankOneDiscrete] :
          Type u_2

          The structure Uniformizer bundles together the term in the ring and a proof that it is a uniformizer.

          Instances For
            theorem Valuation.Uniformizer.ext_iff {Γ : Type u_1} {inst✝ : LinearOrderedCommGroupWithZero Γ} {A : Type u_2} {inst✝¹ : Ring A} {v : Valuation A Γ} {hv : v.IsRankOneDiscrete} {x y : v.Uniformizer} :
            x = y x.val = y.val
            theorem Valuation.Uniformizer.ext {Γ : Type u_1} {inst✝ : LinearOrderedCommGroupWithZero Γ} {A : Type u_2} {inst✝¹ : Ring A} {v : Valuation A Γ} {hv : v.IsRankOneDiscrete} {x y : v.Uniformizer} (val : x.val = y.val) :
            x = y
            def Valuation.Uniformizer.mk' {Γ : Type u_1} [LinearOrderedCommGroupWithZero Γ] {A : Type u_2} [Ring A] {v : Valuation A Γ} [hv : v.IsRankOneDiscrete] {x : A} (hx : v.IsUniformizer x) :

            A constructor for Uniformizer.

            Equations
            Instances For
              theorem Valuation.Uniformizer.ne_zero {Γ : Type u_1} [LinearOrderedCommGroupWithZero Γ] {A : Type u_2} [Ring A] {v : Valuation A Γ} [hv : v.IsRankOneDiscrete] (π : v.Uniformizer) :
              π.val 0
              theorem Valuation.IsUniformizer.not_isUnit {Γ : Type u_1} [LinearOrderedCommGroupWithZero Γ] {R : Type u_2} [CommRing R] {v : Valuation R Γ} [hv : v.IsRankOneDiscrete] {π : v.integer} ( : v.IsUniformizer π) :
              theorem Valuation.IsUniformizer.of_associated {Γ : Type u_1} [LinearOrderedCommGroupWithZero Γ] {K : Type u_2} [Field K] {v : Valuation K Γ} [hv : v.IsRankOneDiscrete] {π₁ π₂ : v.valuationSubring} (h1 : v.IsUniformizer π₁) (H : Associated π₁ π₂) :
              v.IsUniformizer π₂

              An element associated to a uniformizer is itself a uniformizer.

              theorem Valuation.associated_of_isUniformizer {Γ : Type u_1} [LinearOrderedCommGroupWithZero Γ] {K : Type u_2} [Field K] {v : Valuation K Γ} [hv : v.IsRankOneDiscrete] {π₁ π₂ : v.valuationSubring} (h1 : v.IsUniformizer π₁) (h2 : v.IsUniformizer π₂) :
              Associated π₁ π₂

              If two elements of K₀ are uniformizers, then they are associated.

              theorem Valuation.exists_pow_Uniformizer {Γ : Type u_1} [LinearOrderedCommGroupWithZero Γ] {K : Type u_2} [Field K] {v : Valuation K Γ} [hv : v.IsRankOneDiscrete] {r : v.valuationSubring} (hr : r 0) (π : v.Uniformizer) :
              ∃ (n : ) (u : (↥v.valuationSubring)ˣ), r = ↑(π.val ^ n) * u