Module

TopologicalGlobalNormResidueAbelianization.lean

Nyll.ClassFieldTheory.GlobalClassFieldTheory.Reciprocity.TopologicalGlobalNormResidueAbelianization
14 declarations indexed from sourceView source ↗

Topological global reciprocity for finite Galois extensions

For a finite Galois extension L / K, global norm-residue reciprocity identifies the native idele-class norm quotient with the abelianization of the finite Krull Galois group. This file records the identification as a ContinuousMulEquiv in both mathematical directions:

  • norm-residue: C_K / N_{L/K}(C_L) ≃ₜ* Gal(L / K)ᵃᵇ;
  • reciprocity: Gal(L / K)ᵃᵇ ≃ₜ* C_K / N_{L/K}(C_L).

The evaluation lemmas below ensure that these are the already constructed actual global symbols, rather than unrelated abstract isomorphisms between finite groups.

Declarations

GlobalClassFieldTheory.Reciprocity.topologicalGlobalNormResidueAbelianization_ideleClassGroupIsMulCommutative

Keep quotient normality out of every exported declaration type.

Source context 6 commands

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

open scoped IsMulCommutative NumberField
open NumberField
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
variable
    (K L : Type) [Field K] [NumberField K]
    [Field L] [NumberField L] [Algebra K L]
    [FiniteDimensional K L] [IsGalois K L]
instance
    topologicalGlobalNormResidueAbelianization_ideleClassGroupIsMulCommutative :
    IsMulCommutative (IdeleClassGroup K)
GlobalClassFieldTheory.Reciprocity.topologicalGlobalNormResidueAbelianization_galoisAbelianizationTopology

Abelianization is an opaque quotient alias, so install its native quotient topology explicitly before asking for topological properties.

Source context 7 commands

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

open scoped IsMulCommutative NumberField
open NumberField
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
variable
    (K L : Type) [Field K] [NumberField K]
    [Field L] [NumberField L] [Algebra K L]
    [FiniteDimensional K L] [IsGalois K L]
/-- Keep quotient normality out of every exported declaration type. -/
local instance
    topologicalGlobalNormResidueAbelianization_ideleClassGroupIsMulCommutative :
    IsMulCommutative (IdeleClassGroup K) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationTopology :
    TopologicalSpace (Abelianization (Gal(L / K)))
GlobalClassFieldTheory.Reciprocity.ideleClassNormAbelianizationQuotient_discreteTopology

The native topology on the actual idele-class norm quotient is discrete. The openness used here is the genuine ordinary norm-range theorem for the given finite Galois extension.

Source context 8 commands

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

open scoped IsMulCommutative NumberField
open NumberField
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
variable
    (K L : Type) [Field K] [NumberField K]
    [Field L] [NumberField L] [Algebra K L]
    [FiniteDimensional K L] [IsGalois K L]
/-- Keep quotient normality out of every exported declaration type. -/
local instance
    topologicalGlobalNormResidueAbelianization_ideleClassGroupIsMulCommutative :
    IsMulCommutative (IdeleClassGroup K) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
/-- `Abelianization` is an opaque quotient alias, so install its native
quotient topology explicitly before asking for topological properties. -/
local instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationTopology :
    TopologicalSpace (Abelianization (Gal(L / K))) := by
  change
    TopologicalSpace
      (Gal(L / K) ⧸ commutator (Gal(L / K)))
  infer_instance
theorem ideleClassNormAbelianizationQuotient_discreteTopology :
    DiscreteTopology
      (IdeleClassGroup K ⧸
        (_root_.ideleClassNorm K L).range)
GlobalClassFieldTheory.Reciprocity.finiteGaloisAbelianization_discreteTopology

The abelianization of a finite Krull Galois group carries the discrete quotient topology.

Source context 9 commands

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

open scoped IsMulCommutative NumberField
open NumberField
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
variable
    (K L : Type) [Field K] [NumberField K]
    [Field L] [NumberField L] [Algebra K L]
    [FiniteDimensional K L] [IsGalois K L]
/-- Keep quotient normality out of every exported declaration type. -/
local instance
    topologicalGlobalNormResidueAbelianization_ideleClassGroupIsMulCommutative :
    IsMulCommutative (IdeleClassGroup K) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
/-- `Abelianization` is an opaque quotient alias, so install its native
quotient topology explicitly before asking for topological properties. -/
local instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationTopology :
    TopologicalSpace (Abelianization (Gal(L / K))) := by
  change
    TopologicalSpace
      (Gal(L / K) ⧸ commutator (Gal(L / K)))
  infer_instance
omit [NumberField K] [NumberField L] [IsGalois K L] in
theorem finiteGaloisAbelianization_discreteTopology :
    DiscreteTopology
      (Abelianization (Gal(L / K)))
GlobalClassFieldTheory.Reciprocity.topologicalGlobalNormResidueAbelianization_normQuotientDiscreteTopology
Source context 8 commands

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

open scoped IsMulCommutative NumberField
open NumberField
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
variable
    (K L : Type) [Field K] [NumberField K]
    [Field L] [NumberField L] [Algebra K L]
    [FiniteDimensional K L] [IsGalois K L]
/-- Keep quotient normality out of every exported declaration type. -/
local instance
    topologicalGlobalNormResidueAbelianization_ideleClassGroupIsMulCommutative :
    IsMulCommutative (IdeleClassGroup K) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
/-- `Abelianization` is an opaque quotient alias, so install its native
quotient topology explicitly before asking for topological properties. -/
local instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationTopology :
    TopologicalSpace (Abelianization (Gal(L / K))) := by
  change
    TopologicalSpace
      (Gal(L / K) ⧸ commutator (Gal(L / K)))
  infer_instance
instance
    topologicalGlobalNormResidueAbelianization_normQuotientDiscreteTopology :
    DiscreteTopology
      (IdeleClassGroup K ⧸
        (_root_.ideleClassNorm K L).range)
GlobalClassFieldTheory.Reciprocity.topologicalGlobalNormResidueAbelianization_galoisAbelianizationDiscreteTopology
Source context 9 commands

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

open scoped IsMulCommutative NumberField
open NumberField
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
variable
    (K L : Type) [Field K] [NumberField K]
    [Field L] [NumberField L] [Algebra K L]
    [FiniteDimensional K L] [IsGalois K L]
/-- Keep quotient normality out of every exported declaration type. -/
local instance
    topologicalGlobalNormResidueAbelianization_ideleClassGroupIsMulCommutative :
    IsMulCommutative (IdeleClassGroup K) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
/-- `Abelianization` is an opaque quotient alias, so install its native
quotient topology explicitly before asking for topological properties. -/
local instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationTopology :
    TopologicalSpace (Abelianization (Gal(L / K))) := by
  change
    TopologicalSpace
      (Gal(L / K) ⧸ commutator (Gal(L / K)))
  infer_instance
local instance
    topologicalGlobalNormResidueAbelianization_normQuotientDiscreteTopology :
    DiscreteTopology
      (IdeleClassGroup K ⧸
        (_root_.ideleClassNorm K L).range) :=
  ideleClassNormAbelianizationQuotient_discreteTopology K L
instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationDiscreteTopology :
    DiscreteTopology (Abelianization (Gal(L / K)))
GlobalClassFieldTheory.Reciprocity.globalNormResidueAbelianizationContinuousMulEquiv

The full finite-Galois norm-residue isomorphism with its native topologies:

C_K / N_{L/K}(C_L) ≃ₜ* Gal(L / K)ᵃᵇ.

Source context 10 commands

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

open scoped IsMulCommutative NumberField
open NumberField
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
variable
    (K L : Type) [Field K] [NumberField K]
    [Field L] [NumberField L] [Algebra K L]
    [FiniteDimensional K L] [IsGalois K L]
/-- Keep quotient normality out of every exported declaration type. -/
local instance
    topologicalGlobalNormResidueAbelianization_ideleClassGroupIsMulCommutative :
    IsMulCommutative (IdeleClassGroup K) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
/-- `Abelianization` is an opaque quotient alias, so install its native
quotient topology explicitly before asking for topological properties. -/
local instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationTopology :
    TopologicalSpace (Abelianization (Gal(L / K))) := by
  change
    TopologicalSpace
      (Gal(L / K) ⧸ commutator (Gal(L / K)))
  infer_instance
local instance
    topologicalGlobalNormResidueAbelianization_normQuotientDiscreteTopology :
    DiscreteTopology
      (IdeleClassGroup K ⧸
        (_root_.ideleClassNorm K L).range) :=
  ideleClassNormAbelianizationQuotient_discreteTopology K L
local instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationDiscreteTopology :
    DiscreteTopology (Abelianization (Gal(L / K))) :=
  finiteGaloisAbelianization_discreteTopology K L
def globalNormResidueAbelianizationContinuousMulEquiv :
    (IdeleClassGroup K ⧸
        (_root_.ideleClassNorm K L).range) ≃ₜ*
      Abelianization (Gal(L / K))
GlobalClassFieldTheory.Reciprocity.globalNormResidueAbelianizationContinuousMulEquiv_apply

Evaluation of the topological finite-Galois norm-residue equivalence is the previously constructed actual norm-residue equivalence.

Source context 10 commands

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

open scoped IsMulCommutative NumberField
open NumberField
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
variable
    (K L : Type) [Field K] [NumberField K]
    [Field L] [NumberField L] [Algebra K L]
    [FiniteDimensional K L] [IsGalois K L]
/-- Keep quotient normality out of every exported declaration type. -/
local instance
    topologicalGlobalNormResidueAbelianization_ideleClassGroupIsMulCommutative :
    IsMulCommutative (IdeleClassGroup K) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
/-- `Abelianization` is an opaque quotient alias, so install its native
quotient topology explicitly before asking for topological properties. -/
local instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationTopology :
    TopologicalSpace (Abelianization (Gal(L / K))) := by
  change
    TopologicalSpace
      (Gal(L / K) ⧸ commutator (Gal(L / K)))
  infer_instance
local instance
    topologicalGlobalNormResidueAbelianization_normQuotientDiscreteTopology :
    DiscreteTopology
      (IdeleClassGroup K ⧸
        (_root_.ideleClassNorm K L).range) :=
  ideleClassNormAbelianizationQuotient_discreteTopology K L
local instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationDiscreteTopology :
    DiscreteTopology (Abelianization (Gal(L / K))) :=
  finiteGaloisAbelianization_discreteTopology K L
theorem globalNormResidueAbelianizationContinuousMulEquiv_apply
    (c :
      IdeleClassGroup K ⧸
        (_root_.ideleClassNorm K L).range) :
    globalNormResidueAbelianizationContinuousMulEquiv K L c =
      Additive.toMul
        (globalNormResidueAbelianizationEquiv K L
          (Additive.ofMul c))
GlobalClassFieldTheory.Reciprocity.globalReciprocityAbelianizationContinuousMulEquiv

Global reciprocity for a finite Galois extension in the direction used by the class-field correspondence:

Gal(L / K)ᵃᵇ ≃ₜ* C_K / N_{L/K}(C_L).

Source context 10 commands

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

open scoped IsMulCommutative NumberField
open NumberField
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
variable
    (K L : Type) [Field K] [NumberField K]
    [Field L] [NumberField L] [Algebra K L]
    [FiniteDimensional K L] [IsGalois K L]
/-- Keep quotient normality out of every exported declaration type. -/
local instance
    topologicalGlobalNormResidueAbelianization_ideleClassGroupIsMulCommutative :
    IsMulCommutative (IdeleClassGroup K) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
/-- `Abelianization` is an opaque quotient alias, so install its native
quotient topology explicitly before asking for topological properties. -/
local instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationTopology :
    TopologicalSpace (Abelianization (Gal(L / K))) := by
  change
    TopologicalSpace
      (Gal(L / K) ⧸ commutator (Gal(L / K)))
  infer_instance
local instance
    topologicalGlobalNormResidueAbelianization_normQuotientDiscreteTopology :
    DiscreteTopology
      (IdeleClassGroup K ⧸
        (_root_.ideleClassNorm K L).range) :=
  ideleClassNormAbelianizationQuotient_discreteTopology K L
local instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationDiscreteTopology :
    DiscreteTopology (Abelianization (Gal(L / K))) :=
  finiteGaloisAbelianization_discreteTopology K L
def globalReciprocityAbelianizationContinuousMulEquiv :
    Abelianization (Gal(L / K)) ≃ₜ*
      (IdeleClassGroup K ⧸
        (_root_.ideleClassNorm K L).range)
GlobalClassFieldTheory.Reciprocity.globalReciprocityAbelianizationContinuousMulEquiv_apply

Evaluation in the reciprocity direction is exactly the inverse actual finite-Galois norm-residue map.

Source context 10 commands

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

open scoped IsMulCommutative NumberField
open NumberField
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
variable
    (K L : Type) [Field K] [NumberField K]
    [Field L] [NumberField L] [Algebra K L]
    [FiniteDimensional K L] [IsGalois K L]
/-- Keep quotient normality out of every exported declaration type. -/
local instance
    topologicalGlobalNormResidueAbelianization_ideleClassGroupIsMulCommutative :
    IsMulCommutative (IdeleClassGroup K) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
/-- `Abelianization` is an opaque quotient alias, so install its native
quotient topology explicitly before asking for topological properties. -/
local instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationTopology :
    TopologicalSpace (Abelianization (Gal(L / K))) := by
  change
    TopologicalSpace
      (Gal(L / K) ⧸ commutator (Gal(L / K)))
  infer_instance
local instance
    topologicalGlobalNormResidueAbelianization_normQuotientDiscreteTopology :
    DiscreteTopology
      (IdeleClassGroup K ⧸
        (_root_.ideleClassNorm K L).range) :=
  ideleClassNormAbelianizationQuotient_discreteTopology K L
local instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationDiscreteTopology :
    DiscreteTopology (Abelianization (Gal(L / K))) :=
  finiteGaloisAbelianization_discreteTopology K L
theorem globalReciprocityAbelianizationContinuousMulEquiv_apply
    (σ : Abelianization (Gal(L/K))) :
    globalReciprocityAbelianizationContinuousMulEquiv K L σ =
      Additive.toMul
        ((globalNormResidueAbelianizationEquiv K L).symm
          (Additive.ofMul σ))
GlobalClassFieldTheory.Reciprocity.ideleClassNormAbelianizationQuotientContinuousMonoidHom

The native quotient projection C_K → C_K / N_{L/K}(C_L) as a continuous homomorphism.

Source context 10 commands

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

open scoped IsMulCommutative NumberField
open NumberField
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
variable
    (K L : Type) [Field K] [NumberField K]
    [Field L] [NumberField L] [Algebra K L]
    [FiniteDimensional K L] [IsGalois K L]
/-- Keep quotient normality out of every exported declaration type. -/
local instance
    topologicalGlobalNormResidueAbelianization_ideleClassGroupIsMulCommutative :
    IsMulCommutative (IdeleClassGroup K) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
/-- `Abelianization` is an opaque quotient alias, so install its native
quotient topology explicitly before asking for topological properties. -/
local instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationTopology :
    TopologicalSpace (Abelianization (Gal(L / K))) := by
  change
    TopologicalSpace
      (Gal(L / K) ⧸ commutator (Gal(L / K)))
  infer_instance
local instance
    topologicalGlobalNormResidueAbelianization_normQuotientDiscreteTopology :
    DiscreteTopology
      (IdeleClassGroup K ⧸
        (_root_.ideleClassNorm K L).range) :=
  ideleClassNormAbelianizationQuotient_discreteTopology K L
local instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationDiscreteTopology :
    DiscreteTopology (Abelianization (Gal(L / K))) :=
  finiteGaloisAbelianization_discreteTopology K L
def
    ideleClassNormAbelianizationQuotientContinuousMonoidHom :
    IdeleClassGroup K →ₜ*
      (IdeleClassGroup K ⧸
        (_root_.ideleClassNorm K L).range)
GlobalClassFieldTheory.Reciprocity.globalNormResidueAbelianizationContinuousMonoidHom

The global norm-residue symbol C_K → Gal(L / K)ᵃᵇ as a continuous homomorphism in the natural idele-class and finite Krull quotient topologies.

Source context 10 commands

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

open scoped IsMulCommutative NumberField
open NumberField
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
variable
    (K L : Type) [Field K] [NumberField K]
    [Field L] [NumberField L] [Algebra K L]
    [FiniteDimensional K L] [IsGalois K L]
/-- Keep quotient normality out of every exported declaration type. -/
local instance
    topologicalGlobalNormResidueAbelianization_ideleClassGroupIsMulCommutative :
    IsMulCommutative (IdeleClassGroup K) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
/-- `Abelianization` is an opaque quotient alias, so install its native
quotient topology explicitly before asking for topological properties. -/
local instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationTopology :
    TopologicalSpace (Abelianization (Gal(L / K))) := by
  change
    TopologicalSpace
      (Gal(L / K) ⧸ commutator (Gal(L / K)))
  infer_instance
local instance
    topologicalGlobalNormResidueAbelianization_normQuotientDiscreteTopology :
    DiscreteTopology
      (IdeleClassGroup K ⧸
        (_root_.ideleClassNorm K L).range) :=
  ideleClassNormAbelianizationQuotient_discreteTopology K L
local instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationDiscreteTopology :
    DiscreteTopology (Abelianization (Gal(L / K))) :=
  finiteGaloisAbelianization_discreteTopology K L
def
    globalNormResidueAbelianizationContinuousMonoidHom :
    IdeleClassGroup K →ₜ*
      Abelianization (Gal(L / K))
GlobalClassFieldTheory.Reciprocity.globalNormResidueAbelianizationContinuousMonoidHom_apply

Forgetting continuity from the topological finite-Galois norm-residue map recovers the previously constructed actual symbol.

Source context 10 commands

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

open scoped IsMulCommutative NumberField
open NumberField
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
variable
    (K L : Type) [Field K] [NumberField K]
    [Field L] [NumberField L] [Algebra K L]
    [FiniteDimensional K L] [IsGalois K L]
/-- Keep quotient normality out of every exported declaration type. -/
local instance
    topologicalGlobalNormResidueAbelianization_ideleClassGroupIsMulCommutative :
    IsMulCommutative (IdeleClassGroup K) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
/-- `Abelianization` is an opaque quotient alias, so install its native
quotient topology explicitly before asking for topological properties. -/
local instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationTopology :
    TopologicalSpace (Abelianization (Gal(L / K))) := by
  change
    TopologicalSpace
      (Gal(L / K) ⧸ commutator (Gal(L / K)))
  infer_instance
local instance
    topologicalGlobalNormResidueAbelianization_normQuotientDiscreteTopology :
    DiscreteTopology
      (IdeleClassGroup K ⧸
        (_root_.ideleClassNorm K L).range) :=
  ideleClassNormAbelianizationQuotient_discreteTopology K L
local instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationDiscreteTopology :
    DiscreteTopology (Abelianization (Gal(L / K))) :=
  finiteGaloisAbelianization_discreteTopology K L
theorem globalNormResidueAbelianizationContinuousMonoidHom_apply
    (c : IdeleClassGroup K) :
    globalNormResidueAbelianizationContinuousMonoidHom K L c =
      globalNormResidueAbelianizationMonoidHom K L c
GlobalClassFieldTheory.Reciprocity.globalNormResidueAbelianizationMonoidHom_continuous

The actual finite-Galois norm-residue symbol is continuous.

Source context 10 commands

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

open scoped IsMulCommutative NumberField
open NumberField
noncomputable section
namespace GlobalClassFieldTheory
namespace Reciprocity
variable
    (K L : Type) [Field K] [NumberField K]
    [Field L] [NumberField L] [Algebra K L]
    [FiniteDimensional K L] [IsGalois K L]
/-- Keep quotient normality out of every exported declaration type. -/
local instance
    topologicalGlobalNormResidueAbelianization_ideleClassGroupIsMulCommutative :
    IsMulCommutative (IdeleClassGroup K) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
/-- `Abelianization` is an opaque quotient alias, so install its native
quotient topology explicitly before asking for topological properties. -/
local instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationTopology :
    TopologicalSpace (Abelianization (Gal(L / K))) := by
  change
    TopologicalSpace
      (Gal(L / K) ⧸ commutator (Gal(L / K)))
  infer_instance
local instance
    topologicalGlobalNormResidueAbelianization_normQuotientDiscreteTopology :
    DiscreteTopology
      (IdeleClassGroup K ⧸
        (_root_.ideleClassNorm K L).range) :=
  ideleClassNormAbelianizationQuotient_discreteTopology K L
local instance
    topologicalGlobalNormResidueAbelianization_galoisAbelianizationDiscreteTopology :
    DiscreteTopology (Abelianization (Gal(L / K))) :=
  finiteGaloisAbelianization_discreteTopology K L
theorem globalNormResidueAbelianizationMonoidHom_continuous :
    Continuous
      (globalNormResidueAbelianizationMonoidHom K L)