Module

FiniteGaloisSubextension.lean

Nyll.ClassFieldTheory.AbstractClassFieldTheory.Reciprocity.FiniteGaloisSubextension
33 declarations indexed from sourceView source ↗

Finite Galois extensions above an abstract field

The norm topology is indexed by the actual finite Galois extensions of a fixed abstract field. This file packages those extensions and their composita contravariantly as intersections of closed subgroups.

Declarations

ClassFormation.FiniteGaloisSubextension

A finite Galois extension L / K, represented by G_L ≤ G_K.

Source context 7 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
structure FiniteGaloisSubextension (K : ClosedSubgroup G) where
  /-- The closed subgroup representing the top field. -/
  field : ClosedSubgroup G
  /-- The top-field subgroup is contained in the base-field subgroup. -/
  below : field.toSubgroup ≤ K.toSubgroup
  /-- The top-field subgroup is normal inside the base-field subgroup. -/
  normal : (extensionSubgroup K field below).Normal
  /-- The relative Galois quotient is finite. -/
  finite : Finite (K.toSubgroup ⧸ extensionSubgroup K field below)
ClassFormation.FiniteGaloisSubextension.toGaloisSubextension

Forget only finiteness from a finite Galois subextension.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
def toGaloisSubextension (L : FiniteGaloisSubextension K) :
    DegreeData.GaloisSubextension K where
  field := L.field
  below := L.below
  normal := L.normal
ClassFormation.FiniteGaloisSubextension.toFiniteAbstractExtension

Forget normality, retaining the underlying finite abstract extension. This is the canonical bridge from a finite Galois subextension to the degree and ramification API.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
def toFiniteAbstractExtension (L : FiniteGaloisSubextension K) :
    DegreeData.FiniteAbstractExtension G where
  field := L.field
  base := K
  below := L.below
  finiteQuotient := L.finite
ClassFormation.FiniteGaloisSubextension.extensionQuotient

The actual finite quotient G(L/K), kept behind a named object boundary.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
def extensionQuotient (L : FiniteGaloisSubextension K) : Type u
ClassFormation.FiniteGaloisSubextension.IsUnramified

Structural unramifiedness of the underlying finite extension.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
def IsUnramified (L : FiniteGaloisSubextension K) (D : DegreeData G) : Prop
ClassFormation.FiniteGaloisSubextension.IsTotallyRamified

Structural total ramification of the underlying finite extension.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
def IsTotallyRamified (L : FiniteGaloisSubextension K)
    (D : DegreeData G) : Prop
ClassFormation.FiniteGaloisSubextension.extensionSubgroup_normalInstance

A finite Galois subextension is represented by a normal subgroup.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
instance extensionSubgroup_normalInstance (L : FiniteGaloisSubextension K) :
    (extensionSubgroup K L.field L.below).Normal
ClassFormation.FiniteGaloisSubextension.extensionQuotient_groupInstance

The group structure transported across the named finite quotient boundary.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
instance extensionQuotient_groupInstance (L : FiniteGaloisSubextension K) :
    Group L.extensionQuotient
ClassFormation.FiniteGaloisSubextension.extensionQuotient_finiteInstance

The quotient represented by a finite Galois subextension is finite.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
instance extensionQuotient_finiteInstance (L : FiniteGaloisSubextension K) :
    Finite L.extensionQuotient
ClassFormation.FiniteGaloisSubextension.extensionQuotientMulEquiv

Comparison with the quotient presentation used by the underlying group library.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
def extensionQuotientMulEquiv (L : FiniteGaloisSubextension K) :
    L.extensionQuotient ≃*
      (K.toSubgroup ⧸ extensionSubgroup K L.field L.below)
ClassFormation.FiniteGaloisSubextension.extensionQuotientMk

The canonical quotient projection for a finite Galois subextension.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
def extensionQuotientMk (L : FiniteGaloisSubextension K) :
    K.toSubgroup →* L.extensionQuotient
ClassFormation.FiniteGaloisSubextension.extensionQuotientMk_apply

The named finite Galois quotient projection agrees with QuotientGroup.mk.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
theorem extensionQuotientMk_apply (L : FiniteGaloisSubextension K)
    (k : K.toSubgroup) :
    L.extensionQuotientMulEquiv (L.extensionQuotientMk k) =
      (QuotientGroup.mk k :
        K.toSubgroup ⧸ extensionSubgroup K L.field L.below)
ClassFormation.FiniteGaloisSubextension.extensionQuotientMk_eq_one_iff

A quotient representative is trivial exactly when it lies in the extension subgroup.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
theorem extensionQuotientMk_eq_one_iff (L : FiniteGaloisSubextension K)
    (k : K.toSubgroup) :
    L.extensionQuotientMk k = 1 ↔
      k ∈ extensionSubgroup K L.field L.below
ClassFormation.FiniteGaloisSubextension.extensionQuotientMk_surjective

The canonical projection onto the finite Galois quotient is surjective.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
theorem extensionQuotientMk_surjective (L : FiniteGaloisSubextension K) :
    Function.Surjective L.extensionQuotientMk
ClassFormation.FiniteGaloisSubextension.toGaloisExtensionQuotientMulEquiv

The finite and non-finite Galois bundles have the same quotient; this named equivalence is the only public comparison needed by clients.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
def toGaloisExtensionQuotientMulEquiv (L : FiniteGaloisSubextension K) :
    L.extensionQuotient ≃* L.toGaloisSubextension.extensionQuotient
ClassFormation.FiniteGaloisSubextension.extensionQuotient_inductionOn

Eliminate a finite Galois quotient without exposing a chosen representative.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
theorem extensionQuotient_inductionOn
    (L : FiniteGaloisSubextension K) {motive : L.extensionQuotient → Prop}
    (q : L.extensionQuotient)
    (mk : ∀ k : K.toSubgroup, motive (L.extensionQuotientMk k)) :
    motive q
ClassFormation.FiniteGaloisSubextension.toGaloisSubextension_isUnramified_iff

Bundling a finite Galois extension preserves its unramified predicate.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
theorem toGaloisSubextension_isUnramified_iff
    (L : FiniteGaloisSubextension K) (D : DegreeData G) :
    L.toGaloisSubextension.IsUnramified D ↔ L.IsUnramified D
ClassFormation.FiniteGaloisSubextension.toGaloisSubextension_isTotallyRamified_iff

Bundling a finite Galois extension preserves its total-ramification predicate.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
theorem toGaloisSubextension_isTotallyRamified_iff
    (L : FiniteGaloisSubextension K) (D : DegreeData G) :
    L.toGaloisSubextension.IsTotallyRamified D ↔ L.IsTotallyRamified D
ClassFormation.FiniteGaloisSubextension.isUnramified_toGaloisSubextension

Transport an unramifiedness proof through the finite-to-Galois forgetful map.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
theorem isUnramified_toGaloisSubextension
    (L : FiniteGaloisSubextension K) (D : DegreeData G)
    (hL : L.IsUnramified D) :
    L.toGaloisSubextension.IsUnramified D
ClassFormation.FiniteGaloisSubextension.isTotallyRamified_toGaloisSubextension

Transport a total-ramification proof through the finite-to-Galois forgetful map.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
theorem isTotallyRamified_toGaloisSubextension
    (L : FiniteGaloisSubextension K) (D : DegreeData G)
    (hL : L.IsTotallyRamified D) :
    L.toGaloisSubextension.IsTotallyRamified D
ClassFormation.FiniteGaloisSubextension.isUnramified_iff_inertia_le

Unramifiedness is the canonical inertia-containment condition.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
theorem isUnramified_iff_inertia_le (L : FiniteGaloisSubextension K)
    (D : DegreeData G) :
    L.IsUnramified D ↔
      K.toSubgroup ⊓ D.degree.toMonoidHom.ker ≤ L.field.toSubgroup
ClassFormation.FiniteGaloisSubextension.isTotallyRamified_iff_image_le

Total ramification is the canonical equality of degree images.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
theorem isTotallyRamified_iff_image_le (L : FiniteGaloisSubextension K)
    (D : DegreeData G) :
    L.IsTotallyRamified D ↔
      K.toSubgroup.map D.degree.toMonoidHom ≤
        L.field.toSubgroup.map D.degree.toMonoidHom
ClassFormation.FiniteGaloisSubextension.toFiniteAbstractFieldExtension

Retain the finite-over-base endpoint bundles of a finite Galois subextension of an abstract field which is finite over the distinguished base.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
def toFiniteAbstractFieldExtension
    {K : FiniteAbstractField G} (L : FiniteGaloisSubextension K.field) :
    FiniteAbstractFieldExtension G
ClassFormation.FiniteGaloisSubextension.finite_extension_trans

Finiteness is transitive in a tower of abstract fields.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
theorem finite_extension_trans
    {P L K : ClosedSubgroup G}
    (hPL : P.toSubgroup ≤ L.toSubgroup)
    (hLK : L.toSubgroup ≤ K.toSubgroup)
    [hPLfinite : Finite
      (L.toSubgroup ⧸ extensionSubgroup L P hPL)]
    [hLKfinite : Finite
      (K.toSubgroup ⧸ extensionSubgroup K L hLK)] :
    Finite (K.toSubgroup ⧸ extensionSubgroup K P (hPL.trans hLK))
ClassFormation.FiniteGaloisSubextension.finite_extension_over_intermediate

A finite extension remains finite over every intermediate field.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
theorem finite_extension_over_intermediate
    {P M K : ClosedSubgroup G}
    (hPK : P.toSubgroup ≤ K.toSubgroup)
    (hMK : M.toSubgroup ≤ K.toSubgroup)
    (hPM : P.toSubgroup ≤ M.toSubgroup)
    [hPKfinite : Finite
      (K.toSubgroup ⧸ extensionSubgroup K P hPK)] :
    Finite (M.toSubgroup ⧸ extensionSubgroup M P hPM)
ClassFormation.FiniteGaloisSubextension.finite_intermediate_extension

Every intermediate field of a finite extension is finite over the base. No normality hypothesis is needed: this is the finite-index statement for an arbitrary subgroup between the two endpoint subgroups.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
theorem finite_intermediate_extension
    {P M K : ClosedSubgroup G}
    (hPK : P.toSubgroup ≤ K.toSubgroup)
    (hPM : P.toSubgroup ≤ M.toSubgroup)
    (hMK : M.toSubgroup ≤ K.toSubgroup)
    [hPKfinite : Finite
      (K.toSubgroup ⧸ extensionSubgroup K P hPK)] :
    Finite (K.toSubgroup ⧸ extensionSubgroup K M hMK)
ClassFormation.FiniteGaloisSubextension.baseChange

Base change of a finite Galois extension M / K to an arbitrary intermediate field L / K. Contravariantly, the compositum ML is the intersection G_M ∩ G_L; normality and finite index are pulled back from G_M ◁ G_K.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
def baseChange (M : FiniteGaloisSubextension K) (L : ClosedSubgroup G)
    (hLK : L.toSubgroup ≤ K.toSubgroup) : FiniteGaloisSubextension L where
  field := L ⊓ M.field
  below := inf_le_left
  normal := by
    let f : L.toSubgroup →* K.toSubgroup := Subgroup.inclusion hLK
    have heq : extensionSubgroup L (L ⊓ M.field) inf_le_left =
        (extensionSubgroup K M.field M.below).comap f := by
      ext x
      rw [mem_extensionSubgroup_iff, Subgroup.mem_comap,
        mem_extensionSubgroup_iff]
      change (x : G) ∈ L ⊓ M.field ↔ (x : G) ∈ M.field
      exact ⟨fun hx => hx.2, fun hx => ⟨x.property, hx⟩⟩
    rw [heq]
    let : (extensionSubgroup K M.field M.below).Normal := M.normal
    infer_instance
  finite := by
    let f : L.toSubgroup →* K.toSubgroup := Subgroup.inclusion hLK
    let E := extensionSubgroup K M.field M.below
    have heq : extensionSubgroup L (L ⊓ M.field) inf_le_left = E.comap f := by
      ext x
      rw [mem_extensionSubgroup_iff, Subgroup.mem_comap]
      dsimp only [E, f, Subgroup.inclusion]
      rw [mem_extensionSubgroup_iff]
      change (x : G) ∈ L ⊓ M.field ↔ (x : G) ∈ M.field
      exact ⟨fun hx => hx.2, fun hx => ⟨x.property, hx⟩⟩
    let : Finite (K.toSubgroup ⧸ E) := M.finite
    let : E.Normal := M.normal
    have hE0 : E.index ≠ 0 := Subgroup.index_ne_zero_of_finite
    have hrel0 : E.relIndex f.range ≠ 0 := by
      intro hzero
      have hdvd : E.relIndex f.range ∣ E.index :=
        E.relIndex_dvd_index_of_normal f.range
      rw [hzero, zero_dvd_iff] at hdvd
      exact hE0 hdvd
    apply Nat.finite_of_card_ne_zero
    change (extensionSubgroup L (L ⊓ M.field) inf_le_left).index ≠ 0
    rw [heq, E.index_comap f]
    exact hrel0
ClassFormation.FiniteGaloisSubextension.refl

The trivial extension K / K.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
def refl (K : ClosedSubgroup G) : FiniteGaloisSubextension K where
  field := K
  below := le_rfl
  normal := by
    have htop : extensionSubgroup K K le_rfl = ⊤ := by
      rw [eq_top_iff]
      intro x _
      exact x.2
    rw [htop]
    infer_instance
  finite := by
    have htop : extensionSubgroup K K le_rfl = ⊤ := by
      rw [eq_top_iff]
      intro x _
      exact x.2
    rw [htop]
    infer_instance
ClassFormation.FiniteGaloisSubextension.compositum

The compositum L₁L₂, represented by G_{L₁} ∩ G_{L₂}.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
def compositum (L₁ L₂ : FiniteGaloisSubextension K) :
    FiniteGaloisSubextension K where
  field := L₁.field ⊓ L₂.field
  below := fun _ h => L₁.below h.1
  normal := by
    have heq : extensionSubgroup K (L₁.field ⊓ L₂.field)
        (fun _ h => L₁.below h.1) =
        extensionSubgroup K L₁.field L₁.below ⊓
          extensionSubgroup K L₂.field L₂.below := by
      ext k
      simp only [Subgroup.mem_inf, mem_extensionSubgroup_iff]
      constructor
      · intro hk
        exact ⟨hk.1, hk.2⟩
      · rintro ⟨h₁, h₂⟩
        exact ⟨h₁, h₂⟩
    rw [heq]
    let : (extensionSubgroup K L₁.field L₁.below).Normal := L₁.normal
    let : (extensionSubgroup K L₂.field L₂.below).Normal := L₂.normal
    infer_instance
  finite := by
    have heq : extensionSubgroup K (L₁.field ⊓ L₂.field)
        (fun _ h => L₁.below h.1) =
        extensionSubgroup K L₁.field L₁.below ⊓
          extensionSubgroup K L₂.field L₂.below := by
      ext k
      simp only [Subgroup.mem_inf, mem_extensionSubgroup_iff]
      constructor
      · intro hk
        exact ⟨hk.1, hk.2⟩
      · rintro ⟨h₁, h₂⟩
        exact ⟨h₁, h₂⟩
    let : (extensionSubgroup K L₁.field L₁.below).FiniteIndex :=
      @Subgroup.finiteIndex_of_finite_quotient K.toSubgroup _
        (extensionSubgroup K L₁.field L₁.below) L₁.finite
    let : (extensionSubgroup K L₂.field L₂.below).FiniteIndex :=
      @Subgroup.finiteIndex_of_finite_quotient K.toSubgroup _
        (extensionSubgroup K L₂.field L₂.below) L₂.finite
    rw [heq]
    exact Subgroup.finite_quotient_of_finiteIndex
ClassFormation.FiniteGaloisSubextension.compositum_le_left

The constructed Galois compositum satisfies the left comparison bound.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
theorem compositum_le_left (L₁ L₂ : FiniteGaloisSubextension K) :
    (L₁.compositum L₂).field.toSubgroup ≤ L₁.field.toSubgroup
ClassFormation.FiniteGaloisSubextension.compositum_le_right

The constructed Galois compositum satisfies the right comparison bound.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section GroupOnly
variable {G : Type u} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
theorem compositum_le_right (L₁ L₂ : FiniteGaloisSubextension K) :
    (L₁.compositum L₂).field.toSubgroup ≤ L₂.field.toSubgroup
ClassFormation.FiniteGaloisSubextension.finiteNormSubgroup_compositum_le_left

The norm group from a compositum is contained in the norm group from its first factor.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section Representation

-- Mathlib's `Rep ℤ G` currently fixes the acting group to universe zero.
variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
theorem finiteNormSubgroup_compositum_le_left
    (A : Rep ℤ G) (L₁ L₂ : FiniteGaloisSubextension K) :
    letI := (L₁.compositum L₂).finite
    letI := L₁.finite
    finiteNormSubgroup A K (L₁.compositum L₂).field
        (L₁.compositum L₂).below ≤
      finiteNormSubgroup A K L₁.field L₁.below := by
  let P := L₁.compositum L₂
  let hPL₁ := L₁.compositum_le_left L₂
  let : Finite (K.toSubgroup ⧸
      extensionSubgroup K P.field P.below) := P.finite
  let : Finite (K.toSubgroup ⧸
      extensionSubgroup K L₁.field L₁.below) := L₁.finite
  have hPKindex : P.field.toSubgroup.relIndex K.toSubgroup ≠ 0 := by
    rw [Subgroup.relIndex]
    exact Subgroup.index_ne_zero_of_finite
  have hPLindex : P.field.toSubgroup.relIndex L₁.field.toSubgroup ≠ 0 := by
    intro hzero
    have hmul := Subgroup.relIndex_mul_relIndex
      P.field.toSubgroup L₁.field.toSubgroup K.toSubgroup hPL₁ L₁.below
    rw [hzero, zero_mul] at hmul
    exact hPKindex hmul.symm
  let hPLfinite : Finite (L₁.field.toSubgroup ⧸
      extensionSubgroup L₁.field P.field hPL₁) := by
    apply Nat.finite_of_card_ne_zero
    change (extensionSubgroup L₁.field P.field hPL₁).index ≠ 0
    simpa [Subgroup.relIndex] using hPLindex
  let T : DegreeData.FiniteTower G := {
    top := P.field
    middle := L₁.field
    base := K
    top_le_middle := hPL₁
    middle_le_base := L₁.below
    finiteTopQuotient := hPLfinite
    finiteBaseQuotient := L₁.finite }
  rintro x ⟨a, rfl⟩
  refine ⟨relativeNorm A L₁.field P.field hPL₁ a, ?_⟩
  exact T.norm_trans_apply A a
ClassFormation.FiniteGaloisSubextension.finiteNormSubgroup_compositum_le_right

The symmetric norm-group containment for the second factor.

Source context 9 commands

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

namespace ClassFormation
open KummerTheory
open CyclicCohomology
noncomputable section
universe u
section Representation

-- Mathlib's `Rep ℤ G` currently fixes the acting group to universe zero.
variable {G : IntegralRepGroupType} [Group G] [TopologicalSpace G]
namespace FiniteGaloisSubextension
variable {K : ClosedSubgroup G}
theorem finiteNormSubgroup_compositum_le_right
    (A : Rep ℤ G) (L₁ L₂ : FiniteGaloisSubextension K) :
    letI := (L₁.compositum L₂).finite
    letI := L₂.finite
    finiteNormSubgroup A K (L₁.compositum L₂).field
        (L₁.compositum L₂).below ≤
      finiteNormSubgroup A K L₂.field L₂.below := by
  simpa [compositum, inf_comm] using
    finiteNormSubgroup_compositum_le_left A L₂ L₁