Module

ClassFieldCandidate.lean

Nyll.ClassFieldTheory.AbstractClassFieldTheory.Reciprocity.ClassFieldCandidate
19 declarations indexed from sourceView source ↗

A finite class-field candidate from a norm-open subgroup

This file isolates the source-producing part of finite-classification surjectivity. An open subgroup H ≤ A_K contains an actual finite Galois norm subgroup. Modulo that norm subgroup, H gives a concrete subgroup. Transporting this subgroup to the additive abelianization and pulling it back along Q → Qᵃᵇ gives a subgroup of the actual finite Galois quotient which contains its commutator. The finite Galois correspondence then cuts out an actual finite abelian intermediate extension.

The equivalence used for the transport is an explicit argument of the construction. A later specialization supplies it from finite reciprocity for the reciprocity map. No existence statement, norm-kernel equality, or classification conclusion depending on that specialization is asserted here.

The finite level beneath an open norm-topology subgroup

Transport to the abelianized finite quotient

From a subgroup above the commutator to an abelian field

Declarations

ClassFormation.normOpenAddSubgroup_contains_finiteNormSubgroup

The first step in the proof of the finite abelian classification theorem: an open subgroup in the norm topology contains the norm subgroup of an actual finite Galois extension.

Source context 6 commands

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

noncomputable section
namespace ClassFormation
open CyclicCohomology KummerTheory
open scoped commutatorElement

-- Mathlib's `Rep ℤ G` currently fixes the acting group to universe zero.
variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
omit [IsTopologicalGroup G] in
theorem normOpenAddSubgroup_contains_finiteNormSubgroup
    (A : Rep ℤ G) (K : ClosedSubgroup G)
    (H : AddSubgroup (ambientFixedAddSubgroup A K))
    (hH : IsNormOpen A K H) :
    ∃ E : FiniteGaloisSubextension K,
      ClassFormation.FiniteGaloisSubextension.normSubgroup A E ≤ H
ClassFormation.FiniteGaloisSubextension.normQuotient_extensionQuotient_finite
Source context 7 commands

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

noncomputable section
namespace ClassFormation
open CyclicCohomology KummerTheory
open scoped commutatorElement

-- Mathlib's `Rep ℤ G` currently fixes the acting group to universe zero.
variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
instance normQuotient_extensionQuotient_finite
    (E : FiniteGaloisSubextension K) :
    Finite (K.toSubgroup ⧸ extensionSubgroup K E.field E.below)
ClassFormation.FiniteGaloisSubextension.normQuotientSubgroup

The subgroup H / N_E of the actual norm quotient, represented as the image of H under the quotient map.

Source context 8 commands

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

noncomputable section
namespace ClassFormation
open CyclicCohomology KummerTheory
open scoped commutatorElement

-- Mathlib's `Rep ℤ G` currently fixes the acting group to universe zero.
variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
local instance normQuotient_extensionQuotient_finite
    (E : FiniteGaloisSubextension K) :
    Finite (K.toSubgroup ⧸ extensionSubgroup K E.field E.below) :=
  E.finite
def normQuotientSubgroup
    (A : Rep ℤ G) (E : FiniteGaloisSubextension K)
    (H : AddSubgroup (ambientFixedAddSubgroup A K)) :
    AddSubgroup (FiniteNormQuotient A K E.field E.below)
ClassFormation.FiniteGaloisSubextension.finiteNormClass_mem_normQuotientSubgroup_iff

If N_E ⊆ H, then H is exactly the full inverse image of H / N_E. This is the group-theoretic fact used in the middle of the finite-classification surjectivity proof.

Source context 9 commands

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

noncomputable section
namespace ClassFormation
open CyclicCohomology KummerTheory
open scoped commutatorElement

-- Mathlib's `Rep ℤ G` currently fixes the acting group to universe zero.
variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
local instance normQuotient_extensionQuotient_finite
    (E : FiniteGaloisSubextension K) :
    Finite (K.toSubgroup ⧸ extensionSubgroup K E.field E.below) :=
  E.finite
omit [IsTopologicalGroup G] in
theorem finiteNormClass_mem_normQuotientSubgroup_iff
    (A : Rep ℤ G) (E : FiniteGaloisSubextension K)
    (H : AddSubgroup (ambientFixedAddSubgroup A K))
    (hEH : ClassFormation.FiniteGaloisSubextension.normSubgroup A E ≤ H)
    (a : ambientFixedAddSubgroup A K) :
    letI : Finite (K.toSubgroup ⧸
        extensionSubgroup K E.field E.below) := E.finite
    finiteNormClass A K E.field E.below a ∈
        normQuotientSubgroup A E H ↔
      a ∈ H := by
  let : Finite (K.toSubgroup ⧸
      extensionSubgroup K E.field E.below) := E.finite
  constructor
  · rintro ⟨b, hb, hba⟩
    have hba' : finiteNormClass A K E.field E.below b =
        finiteNormClass A K E.field E.below a := by
      simpa [finiteNormClass] using hba
    have hzero : finiteNormClass A K E.field E.below (b - a) = 0 := by
      rw [finiteNormClass_sub, hba', sub_self]
    have hsub : b - a ∈ ClassFormation.FiniteGaloisSubextension.normSubgroup A E :=
      (finiteNormClass_eq_zero_iff A K E.field E.below (b - a)).1 hzero
    have hsubH : b - a ∈ H := hEH hsub
    have ha : a = b - (b - a) := by abel
    rw [ha]
    exact H.sub_mem hb hsubH
  · intro ha
    exact ⟨a, ha, rfl⟩
ClassFormation.FiniteGaloisSubextension.reciprocityAbelianizedSubgroup

Transport H / N_E through a specified finite reciprocity equivalence and forget additive notation. This is a genuine subgroup of the actual abelianization G(E/K)ᵃᵇ.

The argument rE is kept explicit: this definition does not construct the finite reciprocity equivalence.

Source context 8 commands

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

noncomputable section
namespace ClassFormation
open CyclicCohomology KummerTheory
open scoped commutatorElement

-- Mathlib's `Rep ℤ G` currently fixes the acting group to universe zero.
variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
local instance normQuotient_extensionQuotient_finite
    (E : FiniteGaloisSubextension K) :
    Finite (K.toSubgroup ⧸ extensionSubgroup K E.field E.below) :=
  E.finite
def reciprocityAbelianizedSubgroup
    (A : Rep ℤ G) (E : FiniteGaloisSubextension K)
    (H : AddSubgroup (ambientFixedAddSubgroup A K))
    (rE : FiniteNormQuotient A K E.field E.below ≃+
      Additive (Abelianization E.extensionQuotient)) :
    Subgroup (Abelianization E.extensionQuotient)
ClassFormation.FiniteGaloisSubextension.mem_reciprocityAbelianizedSubgroup_iff

Membership in the transported subgroup is literal membership of the corresponding reciprocity class in the image of H / N_E.

Source context 9 commands

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

noncomputable section
namespace ClassFormation
open CyclicCohomology KummerTheory
open scoped commutatorElement

-- Mathlib's `Rep ℤ G` currently fixes the acting group to universe zero.
variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
local instance normQuotient_extensionQuotient_finite
    (E : FiniteGaloisSubextension K) :
    Finite (K.toSubgroup ⧸ extensionSubgroup K E.field E.below) :=
  E.finite
omit [IsTopologicalGroup G] in
theorem mem_reciprocityAbelianizedSubgroup_iff
    (A : Rep ℤ G) (E : FiniteGaloisSubextension K)
    (H : AddSubgroup (ambientFixedAddSubgroup A K))
    (rE : FiniteNormQuotient A K E.field E.below ≃+
      Additive (Abelianization E.extensionQuotient))
    (q : Abelianization E.extensionQuotient) :
    q ∈ reciprocityAbelianizedSubgroup A E H rE ↔
      ∃ z ∈ normQuotientSubgroup A E H,
        rE z = Additive.ofMul q
ClassFormation.FiniteGaloisSubextension.reciprocityAbelianizedClassHom

The representative-level abelianized class map obtained by first passing to A_K / N_E and then applying the specified equivalence.

Source context 8 commands

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

noncomputable section
namespace ClassFormation
open CyclicCohomology KummerTheory
open scoped commutatorElement

-- Mathlib's `Rep ℤ G` currently fixes the acting group to universe zero.
variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
local instance normQuotient_extensionQuotient_finite
    (E : FiniteGaloisSubextension K) :
    Finite (K.toSubgroup ⧸ extensionSubgroup K E.field E.below) :=
  E.finite
def reciprocityAbelianizedClassHom
    (A : Rep ℤ G) (E : FiniteGaloisSubextension K)
    (rE : FiniteNormQuotient A K E.field E.below ≃+
      Additive (Abelianization E.extensionQuotient)) :
    ambientFixedAddSubgroup A K →+
      Additive (Abelianization E.extensionQuotient)
ClassFormation.FiniteGaloisSubextension.reciprocityClass_mem_abelianizedSubgroup_iff

If N_E ⊆ H, the transported subgroup has exactly H as its inverse image under the abelianized class map. This is the precise full-preimage statement used before taking the fixed field in the finite classification argument.

Source context 9 commands

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

noncomputable section
namespace ClassFormation
open CyclicCohomology KummerTheory
open scoped commutatorElement

-- Mathlib's `Rep ℤ G` currently fixes the acting group to universe zero.
variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
local instance normQuotient_extensionQuotient_finite
    (E : FiniteGaloisSubextension K) :
    Finite (K.toSubgroup ⧸ extensionSubgroup K E.field E.below) :=
  E.finite
omit [IsTopologicalGroup G] in
theorem reciprocityClass_mem_abelianizedSubgroup_iff
    (A : Rep ℤ G) (E : FiniteGaloisSubextension K)
    (H : AddSubgroup (ambientFixedAddSubgroup A K))
    (hEH : ClassFormation.FiniteGaloisSubextension.normSubgroup A E ≤ H)
    (rE : FiniteNormQuotient A K E.field E.below ≃+
      Additive (Abelianization E.extensionQuotient))
    (a : ambientFixedAddSubgroup A K) :
    Additive.toMul (reciprocityAbelianizedClassHom A E rE a) ∈
        reciprocityAbelianizedSubgroup A E H rE ↔
      a ∈ H
ClassFormation.abelianizationPreimageSubgroup

Pull a subgroup of an abelianization back to the original finite Galois group.

Source context 5 commands

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

noncomputable section
namespace ClassFormation
open CyclicCohomology KummerTheory
open scoped commutatorElement

-- Mathlib's `Rep ℤ G` currently fixes the acting group to universe zero.
variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
def abelianizationPreimageSubgroup
    {Q : Type*} [Group Q] (T : Subgroup (Abelianization Q)) :
    Subgroup Q
ClassFormation.commutator_le_abelianizationPreimageSubgroup

Every such pullback contains the commutator subgroup.

Source context 5 commands

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

noncomputable section
namespace ClassFormation
open CyclicCohomology KummerTheory
open scoped commutatorElement

-- Mathlib's `Rep ℤ G` currently fixes the acting group to universe zero.
variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
theorem commutator_le_abelianizationPreimageSubgroup
    {Q : Type*} [Group Q] (T : Subgroup (Abelianization Q)) :
    commutator Q ≤ abelianizationPreimageSubgroup T
ClassFormation.FiniteGaloisSubextension.candidate_extensionQuotient_finite
Source context 7 commands

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

noncomputable section
namespace ClassFormation
open CyclicCohomology KummerTheory
open scoped commutatorElement

-- Mathlib's `Rep ℤ G` currently fixes the acting group to universe zero.
variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
instance candidate_extensionQuotient_finite
    {G : Type*} [Group G] [TopologicalSpace G]
    {K : ClosedSubgroup G} (E : FiniteGaloisSubextension K) :
    Finite (K.toSubgroup ⧸ extensionSubgroup K E.field E.below)
ClassFormation.FiniteGaloisSubextension.intermediateFiniteAbelianOfCommutatorLe

The actual finite abelian intermediate extension cut out by a subgroup S ≤ G(E/K) containing the commutator.

Source context 8 commands

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

noncomputable section
namespace ClassFormation
open CyclicCohomology KummerTheory
open scoped commutatorElement

-- Mathlib's `Rep ℤ G` currently fixes the acting group to universe zero.
variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
local instance candidate_extensionQuotient_finite
    {G : Type*} [Group G] [TopologicalSpace G]
    {K : ClosedSubgroup G} (E : FiniteGaloisSubextension K) :
    Finite (K.toSubgroup ⧸ extensionSubgroup K E.field E.below) :=
  E.finite
def intermediateFiniteAbelianOfCommutatorLe
    {G : Type*} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    {K : ClosedSubgroup G}
    (E : FiniteGaloisSubextension K)
    (S : Subgroup E.extensionQuotient)
    (hS : commutator E.extensionQuotient ≤ S) :
    FiniteAbelianSubextension K
ClassFormation.FiniteGaloisSubextension.intermediateFiniteAbelianOfCommutatorLe_field

The field underlying the preceding package is the literal fixed field of S.

Source context 8 commands

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

noncomputable section
namespace ClassFormation
open CyclicCohomology KummerTheory
open scoped commutatorElement

-- Mathlib's `Rep ℤ G` currently fixes the acting group to universe zero.
variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
local instance candidate_extensionQuotient_finite
    {G : Type*} [Group G] [TopologicalSpace G]
    {K : ClosedSubgroup G} (E : FiniteGaloisSubextension K) :
    Finite (K.toSubgroup ⧸ extensionSubgroup K E.field E.below) :=
  E.finite
theorem intermediateFiniteAbelianOfCommutatorLe_field
    {G : Type*} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    {K : ClosedSubgroup G}
    (E : FiniteGaloisSubextension K)
    (S : Subgroup E.extensionQuotient)
    (hS : commutator E.extensionQuotient ≤ S) :
    (intermediateFiniteAbelianOfCommutatorLe E S hS).field =
      E.intermediateField S
ClassFormation.FiniteGaloisSubextension.reciprocityPreimageSubgroup

The subgroup obtained from H / N_E on the abelianization side, pulled back to the actual finite Galois quotient.

Source context 8 commands

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

noncomputable section
namespace ClassFormation
open CyclicCohomology KummerTheory
open scoped commutatorElement

-- Mathlib's `Rep ℤ G` currently fixes the acting group to universe zero.
variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
local instance candidate_extensionQuotient_finite
    {G : Type*} [Group G] [TopologicalSpace G]
    {K : ClosedSubgroup G} (E : FiniteGaloisSubextension K) :
    Finite (K.toSubgroup ⧸ extensionSubgroup K E.field E.below) :=
  E.finite
def reciprocityPreimageSubgroup
    (A : Rep ℤ G) (E : FiniteGaloisSubextension K)
    (H : AddSubgroup (ambientFixedAddSubgroup A K))
    (rE : FiniteNormQuotient A K E.field E.below ≃+
      Additive (Abelianization E.extensionQuotient)) :
    Subgroup E.extensionQuotient
ClassFormation.FiniteGaloisSubextension.commutator_le_reciprocityPreimageSubgroup

The actual subgroup used to define the intermediate field contains the commutator, independently of any kernel assertion for rE.

Source context 9 commands

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

noncomputable section
namespace ClassFormation
open CyclicCohomology KummerTheory
open scoped commutatorElement

-- Mathlib's `Rep ℤ G` currently fixes the acting group to universe zero.
variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
local instance candidate_extensionQuotient_finite
    {G : Type*} [Group G] [TopologicalSpace G]
    {K : ClosedSubgroup G} (E : FiniteGaloisSubextension K) :
    Finite (K.toSubgroup ⧸ extensionSubgroup K E.field E.below) :=
  E.finite
omit [IsTopologicalGroup G] in
theorem commutator_le_reciprocityPreimageSubgroup
    (A : Rep ℤ G) (E : FiniteGaloisSubextension K)
    (H : AddSubgroup (ambientFixedAddSubgroup A K))
    (rE : FiniteNormQuotient A K E.field E.below ≃+
      Additive (Abelianization E.extensionQuotient)) :
    commutator E.extensionQuotient ≤
      reciprocityPreimageSubgroup A E H rE
ClassFormation.FiniteGaloisSubextension.reciprocityClass_mem_preimageSubgroup_iff

The pulled-back subgroup has exactly H as the inverse image of the representative-level reciprocity class. This is the group-side form of the full-preimage assertion used in the finite-classification surjectivity proof.

Source context 9 commands

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

noncomputable section
namespace ClassFormation
open CyclicCohomology KummerTheory
open scoped commutatorElement

-- Mathlib's `Rep ℤ G` currently fixes the acting group to universe zero.
variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
local instance candidate_extensionQuotient_finite
    {G : Type*} [Group G] [TopologicalSpace G]
    {K : ClosedSubgroup G} (E : FiniteGaloisSubextension K) :
    Finite (K.toSubgroup ⧸ extensionSubgroup K E.field E.below) :=
  E.finite
omit [IsTopologicalGroup G] in
theorem reciprocityClass_mem_preimageSubgroup_iff
    (A : Rep ℤ G) (E : FiniteGaloisSubextension K)
    (H : AddSubgroup (ambientFixedAddSubgroup A K))
    (hEH : ClassFormation.FiniteGaloisSubextension.normSubgroup A E ≤ H)
    (rE : FiniteNormQuotient A K E.field E.below ≃+
      Additive (Abelianization E.extensionQuotient))
    (a : ambientFixedAddSubgroup A K) :
    Quotient.out (Additive.toMul
        (reciprocityAbelianizedClassHom A E rE a)) ∈
        reciprocityPreimageSubgroup A E H rE ↔
      a ∈ H
ClassFormation.FiniteGaloisSubextension.candidateQuotient_eq_one_iff

Equivalently, the representative of the transported reciprocity class restricts trivially to the quotient cut out by the candidate precisely for the elements of H.

Source context 9 commands

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

noncomputable section
namespace ClassFormation
open CyclicCohomology KummerTheory
open scoped commutatorElement

-- Mathlib's `Rep ℤ G` currently fixes the acting group to universe zero.
variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
local instance candidate_extensionQuotient_finite
    {G : Type*} [Group G] [TopologicalSpace G]
    {K : ClosedSubgroup G} (E : FiniteGaloisSubextension K) :
    Finite (K.toSubgroup ⧸ extensionSubgroup K E.field E.below) :=
  E.finite
omit [IsTopologicalGroup G] in
theorem candidateQuotient_eq_one_iff
    (A : Rep ℤ G) (E : FiniteGaloisSubextension K)
    (H : AddSubgroup (ambientFixedAddSubgroup A K))
    (hEH : ClassFormation.FiniteGaloisSubextension.normSubgroup A E ≤ H)
    (rE : FiniteNormQuotient A K E.field E.below ≃+
      Additive (Abelianization E.extensionQuotient))
    (a : ambientFixedAddSubgroup A K) :
    let S := reciprocityPreimageSubgroup A E H rE
    letI : S.Normal := Subgroup.Normal.of_commutator_le E.extensionQuotient
      (commutator_le_reciprocityPreimageSubgroup A E H rE)
    QuotientGroup.mk' S
        (Quotient.out (Additive.toMul
          (reciprocityAbelianizedClassHom A E rE a))) = 1 ↔
      a ∈ H := by
  dsimp only
  let : (reciprocityPreimageSubgroup A E H rE).Normal :=
    Subgroup.Normal.of_commutator_le E.extensionQuotient
      (commutator_le_reciprocityPreimageSubgroup A E H rE)
  constructor
  · intro h
    apply (reciprocityClass_mem_preimageSubgroup_iff
      A E H hEH rE a).1
    exact (QuotientGroup.eq_one_iff _).1 h
  · intro ha
    apply (QuotientGroup.eq_one_iff _).2
    exact (reciprocityClass_mem_preimageSubgroup_iff
      A E H hEH rE a).2 ha
ClassFormation.FiniteGaloisSubextension.classFieldCandidate

The finite abelian intermediate extension determined by the subgroup transported from H / N_E. This is the field candidate in the surjectivity proof of the finite abelian classification theorem. No claim that its norm subgroup equals H is made before finite reciprocity is available.

Source context 8 commands

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

noncomputable section
namespace ClassFormation
open CyclicCohomology KummerTheory
open scoped commutatorElement

-- Mathlib's `Rep ℤ G` currently fixes the acting group to universe zero.
variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
local instance candidate_extensionQuotient_finite
    {G : Type*} [Group G] [TopologicalSpace G]
    {K : ClosedSubgroup G} (E : FiniteGaloisSubextension K) :
    Finite (K.toSubgroup ⧸ extensionSubgroup K E.field E.below) :=
  E.finite
def classFieldCandidate
    (A : Rep ℤ G) (E : FiniteGaloisSubextension K)
    (H : AddSubgroup (ambientFixedAddSubgroup A K))
    (rE : FiniteNormQuotient A K E.field E.below ≃+
      Additive (Abelianization E.extensionQuotient)) :
    FiniteAbelianSubextension K
ClassFormation.FiniteGaloisSubextension.classFieldCandidate_field

The candidate is cut out by the explicit pulled-back subgroup, not by an opaque correspondence object.

Source context 8 commands

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

noncomputable section
namespace ClassFormation
open CyclicCohomology KummerTheory
open scoped commutatorElement

-- Mathlib's `Rep ℤ G` currently fixes the acting group to universe zero.
variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
local instance candidate_extensionQuotient_finite
    {G : Type*} [Group G] [TopologicalSpace G]
    {K : ClosedSubgroup G} (E : FiniteGaloisSubextension K) :
    Finite (K.toSubgroup ⧸ extensionSubgroup K E.field E.below) :=
  E.finite
theorem classFieldCandidate_field
    (A : Rep ℤ G) (E : FiniteGaloisSubextension K)
    (H : AddSubgroup (ambientFixedAddSubgroup A K))
    (rE : FiniteNormQuotient A K E.field E.below ≃+
      Additive (Abelianization E.extensionQuotient)) :
    (classFieldCandidate A E H rE).field =
      E.intermediateField
        (reciprocityPreimageSubgroup A E H rE)