Module

H1GeneratorRank.lean

Nyll.ProCGroups.ProP.H1GeneratorRank
16 declarations indexed from sourceView source ↗

Generator rank as continuous H¹ dimension

This file identifies continuous trivial-coefficient degree-one classes with the linear dual of the power--commutator quotient. For a finitely generated pro-p group the quotient is finite, so continuity is automatic and P06 gives the generator-rank formula.

Declarations

Source context 5 commands

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

open scoped Topology IsMulCommutative
namespace ClassFieldTower.ProP
universe u
variable {p : ℕ} {G : Type u}
variable [TopologicalSpace G] [Group G] [IsTopologicalGroup G]
instance : TopologicalSpace (ZMod p)
Source context 6 commands

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

open scoped Topology IsMulCommutative
namespace ClassFieldTower.ProP
universe u
variable {p : ℕ} {G : Type u}
variable [TopologicalSpace G] [Group G] [IsTopologicalGroup G]
local instance : TopologicalSpace (ZMod p) := ⊥
instance : DiscreteTopology (ZMod p)
Source context 7 commands

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

open scoped Topology IsMulCommutative
namespace ClassFieldTower.ProP
universe u
variable {p : ℕ} {G : Type u}
variable [TopologicalSpace G] [Group G] [IsTopologicalGroup G]
local instance : TopologicalSpace (ZMod p) := ⊥
local instance : DiscreteTopology (ZMod p) := discreteTopology_bot _
instance : (closedPowerCommutator p G).Normal
Source context 8 commands

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

open scoped Topology IsMulCommutative
namespace ClassFieldTower.ProP
universe u
variable {p : ℕ} {G : Type u}
variable [TopologicalSpace G] [Group G] [IsTopologicalGroup G]
local instance : TopologicalSpace (ZMod p) := ⊥
local instance : DiscreteTopology (ZMod p) := discreteTopology_bot _
local instance : (closedPowerCommutator p G).Normal :=
  closedPowerCommutator_normal p G
instance : IsMulCommutative (powerCommutatorQuotient p G)
Source context 9 commands

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

open scoped Topology IsMulCommutative
namespace ClassFieldTower.ProP
universe u
variable {p : ℕ} {G : Type u}
variable [TopologicalSpace G] [Group G] [IsTopologicalGroup G]
local instance : TopologicalSpace (ZMod p) := ⊥
local instance : DiscreteTopology (ZMod p) := discreteTopology_bot _
local instance : (closedPowerCommutator p G).Normal :=
  closedPowerCommutator_normal p G
local instance : IsMulCommutative (powerCommutatorQuotient p G) :=
  powerCommutatorQuotient_isMulCommutative p G
instance : Module (ZMod p) (Additive (powerCommutatorQuotient p G))
Source context 10 commands

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

open scoped Topology IsMulCommutative
namespace ClassFieldTower.ProP
universe u
variable {p : ℕ} {G : Type u}
variable [TopologicalSpace G] [Group G] [IsTopologicalGroup G]
local instance : TopologicalSpace (ZMod p) := ⊥
local instance : DiscreteTopology (ZMod p) := discreteTopology_bot _
local instance : (closedPowerCommutator p G).Normal :=
  closedPowerCommutator_normal p G
local instance : IsMulCommutative (powerCommutatorQuotient p G) :=
  powerCommutatorQuotient_isMulCommutative p G
local instance : Module (ZMod p) (Additive (powerCommutatorQuotient p G)) :=
  AddCommGroup.zmodModule fun x => by
    change (Additive.toMul x) ^ p = 1
    exact powerCommutatorQuotient_pow_eq_one p G (Additive.toMul x)
instance : Module (ZMod p) (ContinuousH1ZMod (p := p) (G := G))
ClassFieldTower.ProP.continuousPowerCommutatorDual

The continuous part of the algebraic dual of the power--commutator quotient.

Source context 11 commands

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

open scoped Topology IsMulCommutative
namespace ClassFieldTower.ProP
universe u
variable {p : ℕ} {G : Type u}
variable [TopologicalSpace G] [Group G] [IsTopologicalGroup G]
local instance : TopologicalSpace (ZMod p) := ⊥
local instance : DiscreteTopology (ZMod p) := discreteTopology_bot _
local instance : (closedPowerCommutator p G).Normal :=
  closedPowerCommutator_normal p G
local instance : IsMulCommutative (powerCommutatorQuotient p G) :=
  powerCommutatorQuotient_isMulCommutative p G
local instance : Module (ZMod p) (Additive (powerCommutatorQuotient p G)) :=
  AddCommGroup.zmodModule fun x => by
    change (Additive.toMul x) ^ p = 1
    exact powerCommutatorQuotient_pow_eq_one p G (Additive.toMul x)
local instance : Module (ZMod p) (ContinuousH1ZMod (p := p) (G := G)) :=
  continuousH1ZModModule
def continuousPowerCommutatorDual :
    Submodule (ZMod p)
      (Module.Dual (ZMod p) (Additive (powerCommutatorQuotient p G))) where
  carrier := {f | Continuous f}
  zero_mem' := continuous_const
  add_mem' hf hg := hf.add hg
  smul_mem' c f hf := by
    change Continuous fun x => c * f x
    exact continuous_const.mul hf
ClassFieldTower.ProP.quotientH1ToContinuousDual

Turn a quotient degree-one class into its underlying continuous linear functional.

Source context 11 commands

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

open scoped Topology IsMulCommutative
namespace ClassFieldTower.ProP
universe u
variable {p : ℕ} {G : Type u}
variable [TopologicalSpace G] [Group G] [IsTopologicalGroup G]
local instance : TopologicalSpace (ZMod p) := ⊥
local instance : DiscreteTopology (ZMod p) := discreteTopology_bot _
local instance : (closedPowerCommutator p G).Normal :=
  closedPowerCommutator_normal p G
local instance : IsMulCommutative (powerCommutatorQuotient p G) :=
  powerCommutatorQuotient_isMulCommutative p G
local instance : Module (ZMod p) (Additive (powerCommutatorQuotient p G)) :=
  AddCommGroup.zmodModule fun x => by
    change (Additive.toMul x) ^ p = 1
    exact powerCommutatorQuotient_pow_eq_one p G (Additive.toMul x)
local instance : Module (ZMod p) (ContinuousH1ZMod (p := p) (G := G)) :=
  continuousH1ZModModule
def quotientH1ToContinuousDual
    (f : ContinuousH1ZMod (p := p)
      (G := powerCommutatorQuotient p G)) :
    continuousPowerCommutatorDual (p := p) (G := G)
ClassFieldTower.ProP.quotientH1OfContinuousDual

Equip a continuous linear functional with its continuous additive-hom structure.

Source context 11 commands

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

open scoped Topology IsMulCommutative
namespace ClassFieldTower.ProP
universe u
variable {p : ℕ} {G : Type u}
variable [TopologicalSpace G] [Group G] [IsTopologicalGroup G]
local instance : TopologicalSpace (ZMod p) := ⊥
local instance : DiscreteTopology (ZMod p) := discreteTopology_bot _
local instance : (closedPowerCommutator p G).Normal :=
  closedPowerCommutator_normal p G
local instance : IsMulCommutative (powerCommutatorQuotient p G) :=
  powerCommutatorQuotient_isMulCommutative p G
local instance : Module (ZMod p) (Additive (powerCommutatorQuotient p G)) :=
  AddCommGroup.zmodModule fun x => by
    change (Additive.toMul x) ^ p = 1
    exact powerCommutatorQuotient_pow_eq_one p G (Additive.toMul x)
local instance : Module (ZMod p) (ContinuousH1ZMod (p := p) (G := G)) :=
  continuousH1ZModModule
def quotientH1OfContinuousDual
    (f : continuousPowerCommutatorDual (p := p) (G := G)) :
    ContinuousH1ZMod (p := p) (G := powerCommutatorQuotient p G) where
  toAddMonoidHom := f.1.toAddMonoidHom
  continuous_toFun := f.2
ClassFieldTower.ProP.quotientH1ContinuousDualLinearEquiv

Quotient degree-one classes are exactly the continuous linear dual.

Source context 11 commands

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

open scoped Topology IsMulCommutative
namespace ClassFieldTower.ProP
universe u
variable {p : ℕ} {G : Type u}
variable [TopologicalSpace G] [Group G] [IsTopologicalGroup G]
local instance : TopologicalSpace (ZMod p) := ⊥
local instance : DiscreteTopology (ZMod p) := discreteTopology_bot _
local instance : (closedPowerCommutator p G).Normal :=
  closedPowerCommutator_normal p G
local instance : IsMulCommutative (powerCommutatorQuotient p G) :=
  powerCommutatorQuotient_isMulCommutative p G
local instance : Module (ZMod p) (Additive (powerCommutatorQuotient p G)) :=
  AddCommGroup.zmodModule fun x => by
    change (Additive.toMul x) ^ p = 1
    exact powerCommutatorQuotient_pow_eq_one p G (Additive.toMul x)
local instance : Module (ZMod p) (ContinuousH1ZMod (p := p) (G := G)) :=
  continuousH1ZModModule
def quotientH1ContinuousDualLinearEquiv :
    ContinuousH1ZMod (p := p) (G := powerCommutatorQuotient p G) ≃ₗ[ZMod p]
      continuousPowerCommutatorDual (p := p) (G := G) where
  toFun := quotientH1ToContinuousDual
  invFun := quotientH1OfContinuousDual
  left_inv f := by ext x; rfl
  right_inv f := by ext x; rfl
  map_add' f g := by ext x; rfl
  map_smul' c f := by
    ext x
    let ev : ContinuousH1ZMod (p := p) (G := powerCommutatorQuotient p G) →+
        ZMod p :=
      { toFun := fun h => h x
        map_zero' := rfl
        map_add' := fun _ _ => rfl }
    exact ZMod.map_smul ev c f
ClassFieldTower.ProP.continuousH1PowerCommutatorDualEquiv

Continuous H¹ is the continuous dual of the elementary quotient.

Source context 11 commands

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

open scoped Topology IsMulCommutative
namespace ClassFieldTower.ProP
universe u
variable {p : ℕ} {G : Type u}
variable [TopologicalSpace G] [Group G] [IsTopologicalGroup G]
local instance : TopologicalSpace (ZMod p) := ⊥
local instance : DiscreteTopology (ZMod p) := discreteTopology_bot _
local instance : (closedPowerCommutator p G).Normal :=
  closedPowerCommutator_normal p G
local instance : IsMulCommutative (powerCommutatorQuotient p G) :=
  powerCommutatorQuotient_isMulCommutative p G
local instance : Module (ZMod p) (Additive (powerCommutatorQuotient p G)) :=
  AddCommGroup.zmodModule fun x => by
    change (Additive.toMul x) ^ p = 1
    exact powerCommutatorQuotient_pow_eq_one p G (Additive.toMul x)
local instance : Module (ZMod p) (ContinuousH1ZMod (p := p) (G := G)) :=
  continuousH1ZModModule
def continuousH1PowerCommutatorDualEquiv :
    ContinuousH1ZMod (p := p) (G := G) ≃ₗ[ZMod p]
      continuousPowerCommutatorDual (p := p) (G := G)
ClassFieldTower.ProP.continuousPowerCommutatorDual_eq_top
Source context 11 commands

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

open scoped Topology IsMulCommutative
namespace ClassFieldTower.ProP
universe u
variable {p : ℕ} {G : Type u}
variable [TopologicalSpace G] [Group G] [IsTopologicalGroup G]
local instance : TopologicalSpace (ZMod p) := ⊥
local instance : DiscreteTopology (ZMod p) := discreteTopology_bot _
local instance : (closedPowerCommutator p G).Normal :=
  closedPowerCommutator_normal p G
local instance : IsMulCommutative (powerCommutatorQuotient p G) :=
  powerCommutatorQuotient_isMulCommutative p G
local instance : Module (ZMod p) (Additive (powerCommutatorQuotient p G)) :=
  AddCommGroup.zmodModule fun x => by
    change (Additive.toMul x) ^ p = 1
    exact powerCommutatorQuotient_pow_eq_one p G (Additive.toMul x)
local instance : Module (ZMod p) (ContinuousH1ZMod (p := p) (G := G)) :=
  continuousH1ZModModule
theorem continuousPowerCommutatorDual_eq_top
    [DiscreteTopology (powerCommutatorQuotient p G)] :
    continuousPowerCommutatorDual (p := p) (G := G) = ⊤
ClassFieldTower.ProP.continuousH1PowerCommutatorFullDualLinearEquiv

For a discrete elementary quotient, continuous H¹ is the full algebraic dual.

Source context 11 commands

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

open scoped Topology IsMulCommutative
namespace ClassFieldTower.ProP
universe u
variable {p : ℕ} {G : Type u}
variable [TopologicalSpace G] [Group G] [IsTopologicalGroup G]
local instance : TopologicalSpace (ZMod p) := ⊥
local instance : DiscreteTopology (ZMod p) := discreteTopology_bot _
local instance : (closedPowerCommutator p G).Normal :=
  closedPowerCommutator_normal p G
local instance : IsMulCommutative (powerCommutatorQuotient p G) :=
  powerCommutatorQuotient_isMulCommutative p G
local instance : Module (ZMod p) (Additive (powerCommutatorQuotient p G)) :=
  AddCommGroup.zmodModule fun x => by
    change (Additive.toMul x) ^ p = 1
    exact powerCommutatorQuotient_pow_eq_one p G (Additive.toMul x)
local instance : Module (ZMod p) (ContinuousH1ZMod (p := p) (G := G)) :=
  continuousH1ZModModule
def continuousH1PowerCommutatorFullDualLinearEquiv
    [DiscreteTopology (powerCommutatorQuotient p G)] :
    ContinuousH1ZMod (p := p) (G := G) ≃ₗ[ZMod p]
      Module.Dual (ZMod p) (Additive (powerCommutatorQuotient p G))
ClassFieldTower.ProP.finrank_continuousH1_eq_finrank_powerCommutatorQuotient
Source context 11 commands

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

open scoped Topology IsMulCommutative
namespace ClassFieldTower.ProP
universe u
variable {p : ℕ} {G : Type u}
variable [TopologicalSpace G] [Group G] [IsTopologicalGroup G]
local instance : TopologicalSpace (ZMod p) := ⊥
local instance : DiscreteTopology (ZMod p) := discreteTopology_bot _
local instance : (closedPowerCommutator p G).Normal :=
  closedPowerCommutator_normal p G
local instance : IsMulCommutative (powerCommutatorQuotient p G) :=
  powerCommutatorQuotient_isMulCommutative p G
local instance : Module (ZMod p) (Additive (powerCommutatorQuotient p G)) :=
  AddCommGroup.zmodModule fun x => by
    change (Additive.toMul x) ^ p = 1
    exact powerCommutatorQuotient_pow_eq_one p G (Additive.toMul x)
local instance : Module (ZMod p) (ContinuousH1ZMod (p := p) (G := G)) :=
  continuousH1ZModModule
theorem finrank_continuousH1_eq_finrank_powerCommutatorQuotient
    [Fact p.Prime] [DiscreteTopology (powerCommutatorQuotient p G)] :
    Module.finrank (ZMod p) (ContinuousH1ZMod (p := p) (G := G)) =
      Module.finrank (ZMod p) (Additive (powerCommutatorQuotient p G))
Source context 13 commands

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

open scoped Topology IsMulCommutative
namespace ClassFieldTower.ProP
universe u
variable {p : ℕ} {G : Type u}
variable [TopologicalSpace G] [Group G] [IsTopologicalGroup G]
local instance : TopologicalSpace (ZMod p) := ⊥
local instance : DiscreteTopology (ZMod p) := discreteTopology_bot _
local instance : (closedPowerCommutator p G).Normal :=
  closedPowerCommutator_normal p G
local instance : IsMulCommutative (powerCommutatorQuotient p G) :=
  powerCommutatorQuotient_isMulCommutative p G
local instance : Module (ZMod p) (Additive (powerCommutatorQuotient p G)) :=
  AddCommGroup.zmodModule fun x => by
    change (Additive.toMul x) ^ p = 1
    exact powerCommutatorQuotient_pow_eq_one p G (Additive.toMul x)
local instance : Module (ZMod p) (ContinuousH1ZMod (p := p) (G := G)) :=
  continuousH1ZModModule
section Profinite
variable [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
  [Fact p.Prime]
instance : IsClosed (closedPowerCommutator p G : Set G)
ClassFieldTower.ProP.topologicalGeneratorRank_eq_finrank_continuousH1

For a finitely generated pro-p group, generator rank equals the dimension of continuous trivial-coefficient degree-one cohomology.

Source context 14 commands

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

open scoped Topology IsMulCommutative
namespace ClassFieldTower.ProP
universe u
variable {p : ℕ} {G : Type u}
variable [TopologicalSpace G] [Group G] [IsTopologicalGroup G]
local instance : TopologicalSpace (ZMod p) := ⊥
local instance : DiscreteTopology (ZMod p) := discreteTopology_bot _
local instance : (closedPowerCommutator p G).Normal :=
  closedPowerCommutator_normal p G
local instance : IsMulCommutative (powerCommutatorQuotient p G) :=
  powerCommutatorQuotient_isMulCommutative p G
local instance : Module (ZMod p) (Additive (powerCommutatorQuotient p G)) :=
  AddCommGroup.zmodModule fun x => by
    change (Additive.toMul x) ^ p = 1
    exact powerCommutatorQuotient_pow_eq_one p G (Additive.toMul x)
local instance : Module (ZMod p) (ContinuousH1ZMod (p := p) (G := G)) :=
  continuousH1ZModModule
section Profinite
variable [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
  [Fact p.Prime]
local instance : IsClosed (closedPowerCommutator p G : Set G) :=
  isClosed_closedPowerCommutator p G
theorem topologicalGeneratorRank_eq_finrank_continuousH1
    (hpG : ProCGroups.ProC.HasPGroupOpenNormalBasis p G)
    (hfg : ProCGroups.FiniteGeneration.TopologicallyFinitelyGenerated G) :
    topologicalGeneratorRank G =
      Module.finrank (ZMod p) (ContinuousH1ZMod (p := p) (G := G))