Module

Approximation.lean

Nyll.ClassFieldTheory.AlgebraicNumberTheory.RayClass.Approximation
22 declarations indexed from sourceView source ↗

Multiplicative weak approximation for ideles

This file extracts the simultaneous approximation statement needed for ray class groups. At finitely many finite places one may prescribe an arbitrary open multiplicative coset and move a given idele into all of those cosets by a single principal idele.

Declarations

IdeleGroup.modulusOfFinset

The full modulus whose finite part has exponent one exactly at the places of a finite set and whose infinite part is empty. It lets the ray-class approximation space serve as an arbitrary finite-place approximation space.

Source context 5 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
def modulusOfFinset
    (S : Finset (HeightOneSpectrum (𝓞 K))) :
    RayClass.Modulus K
IdeleGroup.modulusOfFinset_apply
Source context 6 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
open scoped Classical in
theorem modulusOfFinset_apply
    (S : Finset (HeightOneSpectrum (𝓞 K)))
    (v : HeightOneSpectrum (𝓞 K)) :
    (modulusOfFinset S).finitePart v = if v ∈ S then 1 else 0 := by
  classical
  rfl
IdeleGroup.modulusOfFinset_support
Source context 5 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
theorem modulusOfFinset_support
    (S : Finset (HeightOneSpectrum (𝓞 K))) :
    (modulusOfFinset S).finitePart.support = S
IdeleGroup.openLocalCosetTarget

The product of the prescribed finite local cosets and harmless nonzero cosets at the infinite places. The latter ensure that the global approximating element is nonzero.

Source context 5 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
def openLocalCosetTarget
    (m : RayClass.Modulus K) (a : IdeleGroup K)
    (U : ∀ v : ↥m.finitePart.support,
      Subgroup (v.1.adicCompletion K)ˣ) :
    ∀ i : RayClass.ApproximationPlace m,
      Set (RayClass.approximationCompletion m i)
  | Sum.inl v => RayClass.unitRatioSet (a.2 v.1) (U v)
  | Sum.inr w =>
      RayClass.unitRatioSet
        (ContinuousMulEquiv.piUnits a.1 w) ⊤
IdeleGroup.isOpen_openLocalCosetTarget

Every coordinate of openLocalCosetTarget is open.

Source context 5 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
theorem isOpen_openLocalCosetTarget
    (m : RayClass.Modulus K) (a : IdeleGroup K)
    (U : ∀ v : ↥m.finitePart.support,
      Subgroup (v.1.adicCompletion K)ˣ)
    (hU : ∀ v, IsOpen (U v : Set (v.1.adicCompletion K)ˣ)) :
    ∀ i, IsOpen (openLocalCosetTarget m a U i)
  | Sum.inl v => by
      change IsOpen (RayClass.unitRatioSet (a.2 v.1) (U v))
      exact RayClass.isOpen_unitRatioSet _ _ (hU v)
  | Sum.inr w => by
      change IsOpen
        (RayClass.unitRatioSet
          (ContinuousMulEquiv.piUnits a.1 w) ⊤)
      exact RayClass.isOpen_unitRatioSet _ _ isOpen_univ
IdeleGroup.openLocalCosetTargetPoint

The given idele supplies a point in the product of the prescribed local cosets.

Source context 5 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
def openLocalCosetTargetPoint
    (m : RayClass.Modulus K) (a : IdeleGroup K) :
    (i : RayClass.ApproximationPlace m) →
      RayClass.approximationCompletion m i
  | Sum.inl v => (a.2 v.1 : v.1.adicCompletion K)
  | Sum.inr w =>
      (ContinuousMulEquiv.piUnits a.1 w : w.Completion)
IdeleGroup.openLocalCosetTargetPoint_mem

The target product used for multiplicative weak approximation is nonempty.

Source context 5 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
theorem openLocalCosetTargetPoint_mem
    (m : RayClass.Modulus K) (a : IdeleGroup K)
    (U : ∀ v : ↥m.finitePart.support,
      Subgroup (v.1.adicCompletion K)ˣ) :
    openLocalCosetTargetPoint m a ∈
      Set.univ.pi (openLocalCosetTarget m a U)
IdeleGroup.exists_principal_quotient_mem_openLocalSubgroups

Multiplicative weak approximation at finitely many finite places.

For arbitrary open subgroups U_v ≤ K_vˣ and an idele a, a single global element x ∈ Kˣ makes every local quotient a_v / x lie in U_v. This is the precise approximation input in the proof of the cyclic prime-power norm argument, and it is also used in roots-of-unity descent.

Source context 5 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
theorem exists_principal_quotient_mem_openLocalSubgroups
    (m : RayClass.Modulus K) (a : IdeleGroup K)
    (U : ∀ v : ↥m.finitePart.support,
      Subgroup (v.1.adicCompletion K)ˣ)
    (hU : ∀ v, IsOpen (U v : Set (v.1.adicCompletion K)ˣ)) :
    ∃ x : Kˣ, ∀ v : ↥m.finitePart.support,
      a.2 v.1 *
          ((principalIdele K x).2 v.1)⁻¹ ∈ U v
IdeleGroup.exists_principal_quotient_mem_openLocalSubgroups_finset

Finset-indexed form of multiplicative weak approximation.

Source context 5 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
theorem exists_principal_quotient_mem_openLocalSubgroups_finset
    (S : Finset (HeightOneSpectrum (𝓞 K))) (a : IdeleGroup K)
    (U : ∀ v : ↥S, Subgroup (v.1.adicCompletion K)ˣ)
    (hU : ∀ v, IsOpen (U v : Set (v.1.adicCompletion K)ˣ)) :
    ∃ x : Kˣ, ∀ v : ↥S,
      a.2 v.1 *
          ((principalIdele K x).2 v.1)⁻¹ ∈ U v
IdeleGroup.openAllLocalCosetTarget

The product of prescribed open multiplicative cosets at every archimedean place and at the finite places in a modulus.

Source context 5 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
def openAllLocalCosetTarget
    (m : RayClass.Modulus K) (a : IdeleGroup K)
    (U : ∀ v : ↥m.finitePart.support,
      Subgroup (v.1.adicCompletion K)ˣ)
    (V : ∀ w : InfinitePlace K,
      Subgroup w.Completionˣ) :
    ∀ i : RayClass.ApproximationPlace m,
      Set (RayClass.approximationCompletion m i)
  | Sum.inl v => RayClass.unitRatioSet (a.2 v.1) (U v)
  | Sum.inr w =>
      RayClass.unitRatioSet
        (IdeleGroup.infiniteComponent w a) (V w)
IdeleGroup.isOpen_openAllLocalCosetTarget

Every coordinate of the all-place multiplicative target is open.

Source context 5 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
theorem isOpen_openAllLocalCosetTarget
    (m : RayClass.Modulus K) (a : IdeleGroup K)
    (U : ∀ v : ↥m.finitePart.support,
      Subgroup (v.1.adicCompletion K)ˣ)
    (V : ∀ w : InfinitePlace K,
      Subgroup w.Completionˣ)
    (hU : ∀ v, IsOpen
      (U v : Set (v.1.adicCompletion K)ˣ))
    (hV : ∀ w, IsOpen
      (V w : Set w.Completionˣ)) :
    ∀ i, IsOpen
      (openAllLocalCosetTarget m a U V i)
  | Sum.inl v => by
      change IsOpen
        (RayClass.unitRatioSet (a.2 v.1) (U v))
      exact RayClass.isOpen_unitRatioSet _ _ (hU v)
  | Sum.inr w => by
      change IsOpen
        (RayClass.unitRatioSet
          (IdeleGroup.infiniteComponent w a) (V w))
      exact RayClass.isOpen_unitRatioSet _ _ (hV w)
IdeleGroup.openLocalCosetTargetPoint_mem_all

The given idele supplies a point in the simultaneous all-place multiplicative target.

Source context 5 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
theorem openLocalCosetTargetPoint_mem_all
    (m : RayClass.Modulus K) (a : IdeleGroup K)
    (U : ∀ v : ↥m.finitePart.support,
      Subgroup (v.1.adicCompletion K)ˣ)
    (V : ∀ w : InfinitePlace K,
      Subgroup w.Completionˣ) :
    openLocalCosetTargetPoint m a ∈
      Set.univ.pi
        (openAllLocalCosetTarget m a U V)
IdeleGroup.exists_principal_quotient_mem_openAllLocalSubgroups

Multiplicative weak approximation simultaneously at all archimedean places and at the finite support of a modulus.

For prescribed open subgroups U_v ≤ K_vˣ and V_w ≤ K_wˣ, one global x ∈ Kˣ makes every quotient a_v / x lie in the corresponding subgroup.

Source context 5 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
theorem exists_principal_quotient_mem_openAllLocalSubgroups
    (m : RayClass.Modulus K) (a : IdeleGroup K)
    (U : ∀ v : ↥m.finitePart.support,
      Subgroup (v.1.adicCompletion K)ˣ)
    (V : ∀ w : InfinitePlace K,
      Subgroup w.Completionˣ)
    (hU : ∀ v, IsOpen
      (U v : Set (v.1.adicCompletion K)ˣ))
    (hV : ∀ w, IsOpen
      (V w : Set w.Completionˣ)) :
    ∃ x : Kˣ,
      (∀ v : ↥m.finitePart.support,
        a.2 v.1 *
            ((principalIdele K x).2 v.1)⁻¹ ∈ U v) ∧
      (∀ w : InfinitePlace K,
        IdeleGroup.infiniteComponent w a *
            (IdeleGroup.infiniteComponent w
              (principalIdele K x))⁻¹ ∈ V w)
IdeleGroup.exists_principal_quotient_mem_openAllLocalSubgroups_finset

Finset-indexed simultaneous finite-and-infinite multiplicative weak approximation.

Source context 5 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
theorem exists_principal_quotient_mem_openAllLocalSubgroups_finset
    (S : Finset (HeightOneSpectrum (𝓞 K)))
    (a : IdeleGroup K)
    (U : ∀ v : ↥S,
      Subgroup (v.1.adicCompletion K)ˣ)
    (V : ∀ w : InfinitePlace K,
      Subgroup w.Completionˣ)
    (hU : ∀ v, IsOpen
      (U v : Set (v.1.adicCompletion K)ˣ))
    (hV : ∀ w, IsOpen
      (V w : Set w.Completionˣ)) :
    ∃ x : Kˣ,
      (∀ v : ↥S,
        a.2 v.1 *
            ((principalIdele K x).2 v.1)⁻¹ ∈ U v) ∧
      (∀ w : InfinitePlace K,
        IdeleGroup.infiniteComponent w a *
            (IdeleGroup.infiniteComponent w
              (principalIdele K x))⁻¹ ∈ V w)
IdeleGroup.finiteIdeleOfFinset

A finite local family, extended by 1, is a finite idele.

Source context 6 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
open scoped Classical in
def finiteIdeleOfFinset
    (S : Finset (HeightOneSpectrum (𝓞 K)))
    (a : ∀ v : ↥S, (v.1.adicCompletion K)ˣ) :
    FiniteIdeleGroup K
IdeleGroup.finiteIdeleOfFinset_apply_mem
Source context 5 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
theorem finiteIdeleOfFinset_apply_mem
    (S : Finset (HeightOneSpectrum (𝓞 K)))
    (a : ∀ v : ↥S, (v.1.adicCompletion K)ˣ)
    (v : ↥S) :
    finiteIdeleOfFinset S a v.1 = a v
IdeleGroup.finiteIdeleOfFinset_apply_notMem
Source context 5 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
theorem finiteIdeleOfFinset_apply_notMem
    (S : Finset (HeightOneSpectrum (𝓞 K)))
    (a : ∀ v : ↥S, (v.1.adicCompletion K)ˣ)
    (v : HeightOneSpectrum (𝓞 K)) (hv : v ∉ S) :
    finiteIdeleOfFinset S a v = 1
IdeleGroup.ideleOfFiniteLocalFamily

The idele whose prescribed finite components are a and whose other finite and all infinite components are 1.

Source context 5 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
def ideleOfFiniteLocalFamily
    (S : Finset (HeightOneSpectrum (𝓞 K)))
    (a : ∀ v : ↥S, (v.1.adicCompletion K)ˣ) :
    IdeleGroup K
IdeleGroup.ideleOfFiniteLocalFamily_finiteComponent
Source context 5 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
theorem ideleOfFiniteLocalFamily_finiteComponent
    (S : Finset (HeightOneSpectrum (𝓞 K)))
    (a : ∀ v : ↥S, (v.1.adicCompletion K)ˣ)
    (v : ↥S) :
    (ideleOfFiniteLocalFamily S a).2 v.1 = a v
IdeleGroup.principalLocalQuotientMap

The diagonal map from Kˣ to a finite product of local multiplicative quotients.

Source context 5 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
def principalLocalQuotientMap
    (S : Finset (HeightOneSpectrum (𝓞 K)))
    (U : ∀ v : ↥S, Subgroup (v.1.adicCompletion K)ˣ) :
    Kˣ →* (∀ v : ↥S, (v.1.adicCompletion K)ˣ ⧸ U v)
IdeleGroup.principalLocalQuotientMap_apply
Source context 5 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
theorem principalLocalQuotientMap_apply
    (S : Finset (HeightOneSpectrum (𝓞 K)))
    (U : ∀ v : ↥S, Subgroup (v.1.adicCompletion K)ˣ)
    (x : Kˣ) (v : ↥S) :
    principalLocalQuotientMap S U x v =
      QuotientGroup.mk' (U v) ((principalIdele K x).2 v.1)
IdeleGroup.principalLocalQuotientMap_surjective

Multiplicative weak approximation is equivalently surjectivity of the diagonal map to every finite product of quotients by open local subgroups.

Source context 5 commands

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

open scoped NumberField
open NumberField IsDedekindDomain
noncomputable section
variable {K : Type*} [Field K] [NumberField K]
namespace IdeleGroup
theorem principalLocalQuotientMap_surjective
    (S : Finset (HeightOneSpectrum (𝓞 K)))
    (U : ∀ v : ↥S, Subgroup (v.1.adicCompletion K)ˣ)
    (hU : ∀ v, IsOpen (U v : Set (v.1.adicCompletion K)ˣ)) :
    Function.Surjective (principalLocalQuotientMap S U)