Module

SUnitPowerQuotient.lean

Nyll.ClassFieldTheory.KummerTheory.Concrete.SUnitPreparation.SUnitPowerQuotient
27 declarations indexed from sourceView source ↗

Power quotients of S-unit groups

The finite n-th-power quotient of an S-unit group, its cardinality, and explicit ZMod n coordinates.

Declarations

KummerTheory.totalPlaceCard

The total place-set cardinal s = #S, with all infinite places included.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
def totalPlaceCard
    (S : Finset (HeightOneSpectrum (𝓞 K))) : ℕ
KummerTheory.totalPlaceCard_eq_sUnitLogRank_add_one

The number of places in the S-unit theorem is one more than the free rank of the S-unit group. The extra coordinate is the roots-of-unity coordinate.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
theorem totalPlaceCard_eq_sUnitLogRank_add_one
    (S : Finset (HeightOneSpectrum (𝓞 K))) :
    totalPlaceCard (K := K) S =
      SUnitGroup.logRank (K := K) S + 1
KummerTheory.multiplicativeZModProductEquivPiSucc

One roots-of-unity coordinate together with r free coordinates is the product of r + 1 copies of ZMod n, in multiplicative notation.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
def multiplicativeZModProductEquivPiSucc
    (n r : ℕ) :
    Multiplicative (ZMod n) ×
        Multiplicative (Fin r → ZMod n) ≃*
      (Fin (r + 1) → Multiplicative (ZMod n)) where
  toFun x i :=
    Fin.cases x.1
      (fun j => Multiplicative.ofAdd (x.2.toAdd j)) i
  invFun f :=
    (f 0,
      Multiplicative.ofAdd
        (fun j => (f j.succ).toAdd))
  left_inv := by
    rintro ⟨a, b⟩
    apply Prod.ext
    · rfl
    · apply Multiplicative.toAdd.injective
      funext j
      rfl
  right_inv := by
    intro f
    funext i
    refine Fin.cases ?_ (fun j => ?_) i
    · rfl
    · rfl
  map_mul' := by
    intro x y
    funext i
    refine Fin.cases ?_ (fun j => ?_) i
    · rfl
    · rfl
KummerTheory.finsuppModHom

Coordinatewise reduction of a finite free ℤ-module modulo n.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
def finsuppModHom (d n : ℕ) :
    (Fin d →₀ ℤ) →+ (Fin d → ZMod n) where
  toFun x i := x i
  map_zero' := by
    ext i
    simp
  map_add' x y := by
    ext i
    simp
KummerTheory.finsuppModHom_surjective

Every vector over ZMod n has an integral lift.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
theorem finsuppModHom_surjective (d n : ℕ) :
    Function.Surjective (finsuppModHom d n)
KummerTheory.finsuppModHom_ker

The kernel of coordinatewise reduction is exactly the subgroup of n-fold multiples.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
theorem finsuppModHom_ker (d n : ℕ) :
    (finsuppModHom d n).ker =
      LocalFieldTheory.nsmulAddSubgroup (Fin d →₀ ℤ) n
KummerTheory.finsuppNsmulQuotientEquivPiZMod

The finite-free quotient (ℤ^d) / n(ℤ^d) is (ZMod n)^d.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
def finsuppNsmulQuotientEquivPiZMod
    (d n : ℕ) :
    (Fin d →₀ ℤ) ⧸
        LocalFieldTheory.nsmulAddSubgroup (Fin d →₀ ℤ) n ≃+
      (Fin d → ZMod n)
KummerTheory.multiplicativeFinsuppNthPowerQuotientEquivPiZMod

In multiplicative notation, the free integral quotient by n-th powers is a product of copies of ZMod n.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
def multiplicativeFinsuppNthPowerQuotientEquivPiZMod
    (d n : ℕ) :
    Multiplicative (Fin d →₀ ℤ) ⧸
        (powMonoidHom n :
          Multiplicative (Fin d →₀ ℤ) →*
            Multiplicative (Fin d →₀ ℤ)).range ≃*
      Multiplicative (Fin d → ZMod n)
KummerTheory.finite_finsupp_nsmulQuotient

The quotient of a finite free integral module by a positive multiple is finite.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
instance finite_finsupp_nsmulQuotient
    (d : ℕ) (n : ℕ+) :
    Finite
      ((Fin d →₀ ℤ) ⧸
        LocalFieldTheory.nsmulAddSubgroup
          (Fin d →₀ ℤ) (n : ℕ))
KummerTheory.card_finsupp_nsmulQuotient

The cardinality of (ℤ^d) / n(ℤ^d) is n ^ d.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
theorem card_finsupp_nsmulQuotient
    (d : ℕ) (n : ℕ+) :
    Nat.card
        ((Fin d →₀ ℤ) ⧸
          LocalFieldTheory.nsmulAddSubgroup
            (Fin d →₀ ℤ) (n : ℕ)) =
      (n : ℕ) ^ d
KummerTheory.n_dvd_numberField_torsionOrder

A primitive n-th root in K embeds a cyclic subgroup of order n into the roots of unity of the integer ring.

Source context 7 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
omit [NumberField K] in
theorem n_dvd_numberField_torsionOrder
    (n : ℕ+)
    (hmu : (primitiveRoots (n : ℕ) K).Nonempty) :
    (n : ℕ) ∣ NumberField.Units.torsionOrder K
KummerTheory.card_numberField_torsion_nthPowerQuotient

If K contains a primitive n-th root, the quotient of its roots of unity by n-th powers has cardinality n.

Source context 7 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
include numberFieldK in
theorem card_numberField_torsion_nthPowerQuotient
    (n : ℕ+)
    (hmu : (primitiveRoots (n : ℕ) K).Nonempty) :
    Nat.card
        (NumberField.Units.torsion K ⧸
          (powMonoidHom (n : ℕ) :
            NumberField.Units.torsion K →*
              NumberField.Units.torsion K).range) =
      (n : ℕ)
KummerTheory.numberFieldTorsionNthPowerQuotientEquivZMod

The roots-of-unity contribution to the S-unit quotient is one copy of ZMod n.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
def numberFieldTorsionNthPowerQuotientEquivZMod
    (n : ℕ+)
    (hmu : (primitiveRoots (n : ℕ) K).Nonempty) :
    NumberField.Units.torsion K ⧸
        (powMonoidHom (n : ℕ) :
          NumberField.Units.torsion K →*
            NumberField.Units.torsion K).range ≃*
      Multiplicative (ZMod (n : ℕ))
KummerTheory.finite_sUnit_nthPowerQuotient

The n-th-power quotient of an S-unit group is finite.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
instance finite_sUnit_nthPowerQuotient
    (S : Finset (HeightOneSpectrum (𝓞 K))) (n : ℕ+) :
    Finite
      (SUnitGroup (K := K) S ⧸
        (powMonoidHom (n : ℕ) :
          SUnitGroup (K := K) S →*
            SUnitGroup (K := K) S).range)
KummerTheory.card_sUnit_nthPowerQuotient

The S-unit theorem in the form used in the finite S-unit preparation argument:

#(Kˢ / Kˢⁿ) = n ^ (#InfinitePlace K + #S).

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
theorem card_sUnit_nthPowerQuotient
    (S : Finset (HeightOneSpectrum (𝓞 K)))
    (n : ℕ+)
    (hmu : (primitiveRoots (n : ℕ) K).Nonempty) :
    Nat.card
        (SUnitGroup (K := K) S ⧸
          (powMonoidHom (n : ℕ) :
            SUnitGroup (K := K) S →*
              SUnitGroup (K := K) S).range) =
      (n : ℕ) ^ totalPlaceCard (K := K) S
KummerTheory.sUnitNthPowerQuotientCoordinates

The full S-unit quotient has one torsion coordinate and one coordinate for every logarithmic free generator.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
def sUnitNthPowerQuotientCoordinates
    (S : Finset (HeightOneSpectrum (𝓞 K)))
    (n : ℕ+)
    (hmu : (primitiveRoots (n : ℕ) K).Nonempty) :
    SUnitGroup (K := K) S ⧸
        (powMonoidHom (n : ℕ) :
          SUnitGroup (K := K) S →*
            SUnitGroup (K := K) S).range ≃*
      Multiplicative (ZMod (n : ℕ)) ×
        Multiplicative
          (Fin (SUnitGroup.logRank (K := K) S) →
            ZMod (n : ℕ))
KummerTheory.mem_sUnitGroup_of_pow_mem

If a positive power of a global unit is an S-unit, then the unit itself is an S-unit. This is the valuation-theoretic saturation needed to compare the abstract Kummer quotient with Kˢ / Kˢⁿ.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
theorem mem_sUnitGroup_of_pow_mem
    (S : Finset (HeightOneSpectrum (𝓞 K)))
    (n : ℕ+) (x : Kˣ)
    (hx : x ^ (n : ℕ) ∈ SUnitGroup (K := K) S) :
    x ∈ SUnitGroup (K := K) S
KummerTheory.fullSUnitKummerSubgroup

The admissible subgroup

Kˢ · Kˣⁿ ≤ Kˣ

whose radical extension is the field N = K(√[n]{Kˢ}) in the finite S-unit preparation argument.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
def fullSUnitKummerSubgroup
    (n : ℕ+)
    (S : Finset (HeightOneSpectrum (𝓞 K))) :
    KummerTheory.KummerSubgroup K n
KummerTheory.sUnitToFullSUnitKummerSubgroup

Include an S-unit in the full S-unit Kummer subgroup.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
def sUnitToFullSUnitKummerSubgroup
    (n : ℕ+)
    (S : Finset (HeightOneSpectrum (𝓞 K))) :
    SUnitGroup (K := K) S →*
      (fullSUnitKummerSubgroup (K := K) n S).1
KummerTheory.sUnitToFullSUnitRadicalQuotient

Map an S-unit to its class in (Kˢ · Kˣⁿ) / Kˣⁿ.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
def sUnitToFullSUnitRadicalQuotient
    (n : ℕ+)
    (S : Finset (HeightOneSpectrum (𝓞 K))) :
    SUnitGroup (K := K) S →*
      KummerTheory.RestrictedRadicalQuotient
        n (fullSUnitKummerSubgroup (K := K) n S)
KummerTheory.nthPowerSubgroup_le_ker_sUnitToFullSUnitRadicalQuotient

S-unit n-th powers vanish in the full radical quotient.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
theorem nthPowerSubgroup_le_ker_sUnitToFullSUnitRadicalQuotient
    (n : ℕ+)
    (S : Finset (HeightOneSpectrum (𝓞 K))) :
    (powMonoidHom (n : ℕ) :
        SUnitGroup (K := K) S →*
          SUnitGroup (K := K) S).range ≤
      MonoidHom.ker
        (sUnitToFullSUnitRadicalQuotient (K := K) n S)
KummerTheory.sUnitNthPowerQuotientToFullSUnitRadicalQuotient

The canonical comparison

Kˢ / Kˢⁿ → (Kˢ · Kˣⁿ) / Kˣⁿ.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
def sUnitNthPowerQuotientToFullSUnitRadicalQuotient
    (n : ℕ+)
    (S : Finset (HeightOneSpectrum (𝓞 K))) :
    SUnitGroup (K := K) S ⧸
        (powMonoidHom (n : ℕ) :
          SUnitGroup (K := K) S →*
            SUnitGroup (K := K) S).range →*
      KummerTheory.RestrictedRadicalQuotient
        n (fullSUnitKummerSubgroup (K := K) n S)
KummerTheory.sUnitNthPowerQuotientToFullSUnitRadicalQuotient_surjective

Every class in (Kˢ · Kˣⁿ) / Kˣⁿ has an S-unit representative.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
theorem sUnitNthPowerQuotientToFullSUnitRadicalQuotient_surjective
    (n : ℕ+)
    (S : Finset (HeightOneSpectrum (𝓞 K))) :
    Function.Surjective
      (sUnitNthPowerQuotientToFullSUnitRadicalQuotient
        (K := K) n S)
KummerTheory.sUnitNthPowerQuotientToFullSUnitRadicalQuotient_injective

The canonical comparison from Kˢ / Kˢⁿ is injective. The only arithmetic point is saturation of the S-unit group under positive powers, proved above from valuations.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
theorem sUnitNthPowerQuotientToFullSUnitRadicalQuotient_injective
    (n : ℕ+)
    (S : Finset (HeightOneSpectrum (𝓞 K))) :
    Function.Injective
      (sUnitNthPowerQuotientToFullSUnitRadicalQuotient
        (K := K) n S)
KummerTheory.sUnitNthPowerQuotientEquivFullSUnitRadicalQuotient

The exact quotient identification used to define N = K(√[n]{Kˢ}).

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
def sUnitNthPowerQuotientEquivFullSUnitRadicalQuotient
    (n : ℕ+)
    (S : Finset (HeightOneSpectrum (𝓞 K))) :
    SUnitGroup (K := K) S ⧸
        (powMonoidHom (n : ℕ) :
          SUnitGroup (K := K) S →*
            SUnitGroup (K := K) S).range ≃*
      KummerTheory.RestrictedRadicalQuotient
        n (fullSUnitKummerSubgroup (K := K) n S)
KummerTheory.finite_fullSUnitRadicalQuotient

The full S-unit radical quotient is finite.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
instance finite_fullSUnitRadicalQuotient
    (n : ℕ+)
    (S : Finset (HeightOneSpectrum (𝓞 K))) :
    Finite
      (KummerTheory.RestrictedRadicalQuotient
        n (fullSUnitKummerSubgroup (K := K) n S))
KummerTheory.card_fullSUnitRadicalQuotient

The radical quotient defining N has cardinality n ^ s.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField IsMulCommutative NNReal ValuativeRel
open NumberField IsDedekindDomain
open LocalFieldTheory
noncomputable section
namespace KummerTheory
variable {K : Type*} [Field K]
    [numberFieldK : NumberField K]
theorem card_fullSUnitRadicalQuotient
    (n : ℕ+)
    (S : Finset (HeightOneSpectrum (𝓞 K)))
    (hmu : (primitiveRoots (n : ℕ) K).Nonempty) :
    Nat.card
        (KummerTheory.RestrictedRadicalQuotient
          n (fullSUnitKummerSubgroup (K := K) n S)) =
      (n : ℕ) ^ totalPlaceCard (K := K) S