Module

FiniteTransgressionLinear.lean

Nyll.GaloisCohomology.ProP.FiniteTransgressionLinear
27 declarations indexed from sourceView source ↗

Linearity of finite transgression

Packages ambient-conjugation-invariant finite characters as a ZMod p-module and proves that the explicit finite transgression construction is linear. The kernel extension theorem then gives a criterion for linear independence of finite families of transgression classes.

Declarations

ClassFieldTower.Cohomology.linearQuotientTopology
Source context 7 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N)
ClassFieldTower.Cohomology.linearQuotientDiscrete
Source context 8 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N)
ClassFieldTower.Cohomology.FiniteCharacter

Additive presentation of ZMod p-valued group characters.

Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
abbrev FiniteCharacter (p : ℕ) (N : Type u) [Monoid N]
ClassFieldTower.Cohomology.finiteCharacterModule
Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
instance finiteCharacterModule (N : Type u) [Monoid N] :
    Module (ZMod p) (FiniteCharacter p N)
ClassFieldTower.Cohomology.invariantFiniteCharacterAddSubgroup

Ambient-conjugation-invariant finite characters, as an additive subgroup.

Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
def invariantFiniteCharacterAddSubgroup (N : Subgroup P) [N.Normal] :
    AddSubgroup (FiniteCharacter p N) where
  carrier := {χ | ∀ (g : P) (n : N),
    χ.toMul (MulAut.conjNormal g n) = χ.toMul n}
  zero_mem' := by
    intro g n
    rfl
  add_mem' := by
    intro χ ψ hχ hψ g n
    change χ.toMul (MulAut.conjNormal g n) * ψ.toMul (MulAut.conjNormal g n) =
      χ.toMul n * ψ.toMul n
    rw [hχ g n, hψ g n]
  neg_mem' := by
    intro χ hχ g n
    change (χ.toMul (MulAut.conjNormal g n))⁻¹ = (χ.toMul n)⁻¹
    rw [hχ g n]
ClassFieldTower.Cohomology.invariantFiniteCharacterSubmodule

Ambient-conjugation-invariant finite characters, as a ZMod p-module.

Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
def invariantFiniteCharacterSubmodule (N : Subgroup P) [N.Normal] :
    Submodule (ZMod p) (FiniteCharacter p N)
ClassFieldTower.Cohomology.InvariantFiniteCharacter

An ambient-conjugation-invariant finite character.

Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
abbrev InvariantFiniteCharacter (N : Subgroup P) [N.Normal]
ClassFieldTower.Cohomology.InvariantFiniteCharacter.toMonoidHom

The multiplicative presentation of an invariant finite character.

Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
def InvariantFiniteCharacter.toMonoidHom (N : Subgroup P) [N.Normal]
    (χ : InvariantFiniteCharacter (p := p) N) :
    MonoidHom N (Multiplicative (ZMod p))
ClassFieldTower.Cohomology.InvariantFiniteCharacter.isInvariant
Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
theorem InvariantFiniteCharacter.isInvariant (N : Subgroup P) [N.Normal]
    (χ : InvariantFiniteCharacter (p := p) N) :
    ∀ (g : P) (n : N),
      InvariantFiniteCharacter.toMonoidHom N χ (MulAut.conjNormal g n) =
        InvariantFiniteCharacter.toMonoidHom N χ n
ClassFieldTower.Cohomology.transgressionFactor_zero
Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
theorem transgressionFactor_zero (N : Subgroup P) [N.Normal]
    (q r : P ⧸ N) :
    transgressionFactor N
      ((0 : FiniteCharacter p N).toMul) q r = 0
ClassFieldTower.Cohomology.transgressionFactor_add
Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
theorem transgressionFactor_add (N : Subgroup P) [N.Normal]
    (χ ψ : FiniteCharacter p N) (q r : P ⧸ N) :
    transgressionFactor N ((χ + ψ).toMul) q r =
      transgressionFactor N χ.toMul q r +
        transgressionFactor N ψ.toMul q r
ClassFieldTower.Cohomology.transgressionHomogeneousCochain_zero
Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
theorem transgressionHomogeneousCochain_zero (N : Subgroup P) [N.Normal] :
    transgressionHomogeneousCochain N
      ((0 : FiniteCharacter p N).toMul) = 0
ClassFieldTower.Cohomology.transgressionHomogeneousCochain_add
Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
theorem transgressionHomogeneousCochain_add (N : Subgroup P) [N.Normal]
    (χ ψ : FiniteCharacter p N) :
    transgressionHomogeneousCochain N ((χ + ψ).toMul) =
      transgressionHomogeneousCochain N χ.toMul +
        transgressionHomogeneousCochain N ψ.toMul
ClassFieldTower.Cohomology.transgressionHomogeneousCocycle_zero
Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
theorem transgressionHomogeneousCocycle_zero (N : Subgroup P) [N.Normal] :
    transgressionHomogeneousCocycle N
      (InvariantFiniteCharacter.toMonoidHom N
        (0 : InvariantFiniteCharacter (p := p) N))
      (InvariantFiniteCharacter.isInvariant N 0) = 0
ClassFieldTower.Cohomology.transgressionHomogeneousCocycle_add
Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
theorem transgressionHomogeneousCocycle_add (N : Subgroup P) [N.Normal]
    (χ ψ : InvariantFiniteCharacter (p := p) N) :
    transgressionHomogeneousCocycle N
        (InvariantFiniteCharacter.toMonoidHom N (χ + ψ))
        (InvariantFiniteCharacter.isInvariant N (χ + ψ)) =
      transgressionHomogeneousCocycle N
          (InvariantFiniteCharacter.toMonoidHom N χ)
          (InvariantFiniteCharacter.isInvariant N χ) +
        transgressionHomogeneousCocycle N
          (InvariantFiniteCharacter.toMonoidHom N ψ)
          (InvariantFiniteCharacter.isInvariant N ψ)
ClassFieldTower.Cohomology.finiteTransgressionClass_zero
Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
theorem finiteTransgressionClass_zero (N : Subgroup P) [N.Normal] :
    finiteTransgressionClass N
      (InvariantFiniteCharacter.toMonoidHom N
        (0 : InvariantFiniteCharacter (p := p) N))
      (InvariantFiniteCharacter.isInvariant N 0) = 0
ClassFieldTower.Cohomology.finiteTransgressionClass_add
Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
theorem finiteTransgressionClass_add (N : Subgroup P) [N.Normal]
    (χ ψ : InvariantFiniteCharacter (p := p) N) :
    finiteTransgressionClass N
        (InvariantFiniteCharacter.toMonoidHom N (χ + ψ))
        (InvariantFiniteCharacter.isInvariant N (χ + ψ)) =
      finiteTransgressionClass N
          (InvariantFiniteCharacter.toMonoidHom N χ)
          (InvariantFiniteCharacter.isInvariant N χ) +
        finiteTransgressionClass N
          (InvariantFiniteCharacter.toMonoidHom N ψ)
          (InvariantFiniteCharacter.isInvariant N ψ)
ClassFieldTower.Cohomology.finiteTransgressionAddHom

Finite transgression as an additive homomorphism.

Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
def finiteTransgressionAddHom (N : Subgroup P) [N.Normal] :
    InvariantFiniteCharacter (p := p) N →+
      continuousCohomologyZModPLifted p (P ⧸ N) 2 where
  toFun χ := finiteTransgressionClass N
    (InvariantFiniteCharacter.toMonoidHom N χ)
    (InvariantFiniteCharacter.isInvariant N χ)
  map_zero' := finiteTransgressionClass_zero N
  map_add' := finiteTransgressionClass_add N
ClassFieldTower.Cohomology.finiteTransgressionLinearMap

Finite transgression as a ZMod p-linear map.

Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
def finiteTransgressionLinearMap (N : Subgroup P) [N.Normal] :
    InvariantFiniteCharacter (p := p) N →ₗ[ZMod p]
      continuousCohomologyZModPLifted p (P ⧸ N) 2
ClassFieldTower.Cohomology.finiteTransgressionLinearMap_apply
Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
theorem finiteTransgressionLinearMap_apply (N : Subgroup P) [N.Normal]
    (χ : InvariantFiniteCharacter (p := p) N) :
    finiteTransgressionLinearMap N χ = finiteTransgressionClass N
      (InvariantFiniteCharacter.toMonoidHom N χ)
      (InvariantFiniteCharacter.isInvariant N χ)
ClassFieldTower.Cohomology.finiteTransgressionLinearMap_zero
Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
theorem finiteTransgressionLinearMap_zero (N : Subgroup P) [N.Normal] :
    finiteTransgressionLinearMap N
      (0 : InvariantFiniteCharacter (p := p) N) = 0
ClassFieldTower.Cohomology.finiteTransgressionLinearMap_add
Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
theorem finiteTransgressionLinearMap_add (N : Subgroup P) [N.Normal]
    (χ ψ : InvariantFiniteCharacter (p := p) N) :
    finiteTransgressionLinearMap N (χ + ψ) =
      finiteTransgressionLinearMap N χ + finiteTransgressionLinearMap N ψ
ClassFieldTower.Cohomology.finiteTransgressionLinearMap_smul
Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
theorem finiteTransgressionLinearMap_smul (N : Subgroup P) [N.Normal]
    (a : ZMod p) (χ : InvariantFiniteCharacter (p := p) N) :
    finiteTransgressionLinearMap N (a • χ) =
      a • finiteTransgressionLinearMap N χ
ClassFieldTower.Cohomology.InvariantFiniteCharacter.ExtendsToAmbient

A character extends to the ambient group if it is the restriction of an ambient character.

Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
def InvariantFiniteCharacter.ExtendsToAmbient (N : Subgroup P) [N.Normal]
    (χ : InvariantFiniteCharacter (p := p) N) : Prop
ClassFieldTower.Cohomology.InvariantFiniteCharacter.extendsToAmbient_of_transgression_eq_zero

The kernel of finite transgression consists of extendable invariant characters.

Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
theorem InvariantFiniteCharacter.extendsToAmbient_of_transgression_eq_zero
    (N : Subgroup P) [N.Normal]
    (χ : InvariantFiniteCharacter (p := p) N)
    (hχ : finiteTransgressionLinearMap N χ = 0) :
    InvariantFiniteCharacter.ExtendsToAmbient N χ
ClassFieldTower.Cohomology.linearIndependent_finiteTransgressionLinearMap_of_no_extendableCombination

A family has linearly independent transgression classes if no nonzero finite linear combination of its characters extends to the ambient group.

Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
theorem linearIndependent_finiteTransgressionLinearMap_of_no_extendableCombination
    {ι : Type*} (N : Subgroup P) [N.Normal]
    (v : ι → InvariantFiniteCharacter (p := p) N)
    (hno : ∀ l : ι →₀ ZMod p,
      InvariantFiniteCharacter.ExtendsToAmbient N
        (Finsupp.linearCombination (ZMod p) v l) → l = 0) :
    LinearIndependent (ZMod p) (fun i ↦ finiteTransgressionLinearMap N (v i)) := by
  rw [linearIndependent_iff]
  intro l hl
  apply hno l
  apply InvariantFiniteCharacter.extendsToAmbient_of_transgression_eq_zero N
  rw [LinearMap.map_finsupp_linearCombination]
  exact hl
ClassFieldTower.Cohomology.linearIndependent_finiteTransgressionClass_of_no_extendableCombination

The preceding criterion, stated directly for explicit finite transgression classes.

Source context 9 commands

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

open CategoryTheory TopRep ContRepresentation
open scoped Topology
namespace ClassFieldTower.Cohomology
noncomputable section
universe u
variable {p : ℕ}
variable {P : Type u} [Group P]
local instance linearQuotientTopology (N : Subgroup P) : TopologicalSpace (P ⧸ N) := ⊥
local instance linearQuotientDiscrete (N : Subgroup P) : DiscreteTopology (P ⧸ N) :=
  discreteTopology_bot _
theorem linearIndependent_finiteTransgressionClass_of_no_extendableCombination
    {ι : Type*} (N : Subgroup P) [N.Normal]
    (v : ι → InvariantFiniteCharacter (p := p) N)
    (hno : ∀ l : ι →₀ ZMod p,
      InvariantFiniteCharacter.ExtendsToAmbient N
        (Finsupp.linearCombination (ZMod p) v l) → l = 0) :
    LinearIndependent (ZMod p) (fun i ↦ finiteTransgressionClass N
      (InvariantFiniteCharacter.toMonoidHom N (v i))
      (InvariantFiniteCharacter.isInvariant N (v i))) := by
  simpa only [finiteTransgressionLinearMap_apply] using
    linearIndependent_finiteTransgressionLinearMap_of_no_extendableCombination N v hno