ReidemeisterSchreier.Profinite.OpenSubgroups.GeneratingFamilies

6 Theorem | 6 Definition | 2 Structure | 1 Instance

This module develops the rewriting and basis constructions behind the subgroup calculations. It tracks words and relations through the chosen transversal to obtain the required presentation or basis statements.

import
Imported by

Declarations

structure FreeProCBasis
    (ProC : ProCGroups.ProC.ProCGroupPredicate.{u})
    (G : Type u) [Group G] [TopologicalSpace G] [IsTopologicalGroup G] where
  index : Type u
  inclusion : index → G
  isFree : IsFreeProCGroupOnConvergingSet (ProC := ProC) index G inclusion

A free pro-\(C\) basis on a fixed carrier.

instance instCoeFunFreeProCBasis : CoeFun (FreeProCBasis ProC G) (fun basis => basis.index → G) where
  coe basis := basis.inclusion

A free pro-\(C\) basis is coerced to its underlying family of basis elements.

@[simp] theorem inclusion_eq_coe (basis : FreeProCBasis ProC G) :
    basis.inclusion = (basis : basis.index → G)

The profinite Schreier basis has the stated cardinality or inclusion property.

Show proof
def cardinal (basis : FreeProCBasis ProC G) : Cardinal :=
  Cardinal.mk basis.index

The profinite Schreier basis has the stated cardinality or inclusion property.

def toGeneratingFamily (basis : FreeProCBasis ProC G) :
    TopologicalGeneratingFamily G where
  index := basis.index
  toFun := basis
  convergesToOne := basis.isFree.convergesToOne
  generates := basis.isFree.generates_range

A free pro-\(C\) basis forgets to a topological generating family.

def toData (basis : FreeProCBasis ProC G) :
    FreeProCGroupOnConvergingSetData (ProC := ProC) where
  basis := basis.index
  carrier := G
  instGroup := inferInstance
  instTopologicalSpace := inferInstance
  instIsTopologicalGroup := inferInstance
  inclusion := basis.inclusion
  isFree := basis.isFree

Forget the fixed-carrier basis to the existing carrier-and-basis data structure.

def ofData (data : FreeProCGroupOnConvergingSetData (ProC := ProC)) :
    FreeProCBasis ProC data.carrier where
  index := data.basis
  inclusion := data.inclusion
  isFree := data.isFree

Turn existing carrier-and-basis data plus an equivalence to the target into a basis model.

structure FreeProCBasisModel
    (ProC : ProCGroups.ProC.ProCGroupPredicate.{u})
    (G : Type u) [Group G] [TopologicalSpace G] [IsTopologicalGroup G] where
  carrier : Type u
  instGroup : Group carrier
  instTopologicalSpace : TopologicalSpace carrier
  instIsTopologicalGroup : IsTopologicalGroup carrier
  basis : FreeProCBasis ProC carrier
  equiv : carrier ≃ₜ* G

A free pro-\(C\) basis model for a target group, up to continuous multiplicative equivalence.

def basisCardinal (model : FreeProCBasisModel ProC G) : Cardinal :=
  model.basis.cardinal

The cardinality of the modeled free pro-\(C\) basis.

def ofData (data : FreeProCGroupOnConvergingSetData (ProC := ProC)) (e : data.carrier ≃ₜ* G) :
    FreeProCBasisModel ProC G where
  carrier := data.carrier
  instGroup := data.instGroup
  instTopologicalSpace := data.instTopologicalSpace
  instIsTopologicalGroup := data.instIsTopologicalGroup
  basis := FreeProCBasis.ofData data
  equiv := e

Turn existing carrier-and-basis data plus an equivalence to the target into a basis model.

theorem exists_generatingFamily_openSubnormalSubgroup_of_melnikovFormation_finiteRank
    (C : ProCGroups.FiniteGroupClass.{u})
    {X : Type u} [Finite X]
    {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
    {ι : X → F}
    (hF : IsFreeProCGroupOnConvergingSet
      (ProC := ProCGroups.ProC.finiteGroupClassProCPredicate C) X F ι)
    (H : OpenSubgroup F) :
    ∃ family : TopologicalGeneratingFamily ↥(H : Subgroup F),
      family.cardinal ≤
        (_root_.ReidemeisterSchreier.Schreier.rankTransform (Nat.card X) (Nat.card (F ⧸ (H : Subgroup F))) :
          Cardinal)

The generating-family form of the finite-rank open-subgroup result with the Schreier rank bound.

Show proof
theorem exists_freeProCBasisModel_openSubgroup_of_extensionClosed_cardinalRank
    (C : ProCGroups.FiniteGroupClass.{u})
    (hBridge :
      PointedToConvergingSetBasisBridge (ProCGroups.ProC.finiteGroupClassProCPredicate C))
    (hVar : ProCGroups.FiniteGroupClass.Variety C)
    (hIso : ProCGroups.FiniteGroupClass.IsomClosed C)
    (hExt : ProCGroups.FiniteGroupClass.ExtensionClosed C)
    (hcyc :
      ∃ (A : Type u) (_ : Group A) (_ : Finite A),
        C A ∧ IsCyclic A ∧ Nontrivial A)
    {X : Type u}
    {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
    {ι : X → F}
    [DiscreteTopology (Set.range ι)]
    (hF : IsFreeProCGroupOnConvergingSet
      (ProC := ProCGroups.ProC.finiteGroupClassProCPredicate C) X F ι)
    (H : OpenSubgroup F) :
    ∃ model : FreeProCBasisModel
        (ProCGroups.ProC.finiteGroupClassProCPredicate C) ↥(H : Subgroup F),
      model.basisCardinal =
        schreierRankTransformCardinal (Cardinal.mk X)
          (Nat.card (F ⧸ (H : Subgroup F)))

Cardinal-rank extension-closed basis theorem, with the conclusion explicitly packaged as a free pro-\(C\) basis model rather than only a generating family.

Show proof
theorem exists_freeProCBasisModel_openSubgroup_of_cardinalRank_of_schreierBasisHypotheses
    (C : ProCGroups.FiniteGroupClass.{u})
    (hC : SchreierBasisCardinalRankHypotheses C)
    {X : Type u}
    {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
    {ι : X → F}
    [DiscreteTopology (Set.range ι)]
    (hF : IsFreeProCGroupOnConvergingSet
      (ProC := ProCGroups.ProC.finiteGroupClassProCPredicate C) X F ι)
    (H : OpenSubgroup F) :
    ∃ model : FreeProCBasisModel
        (ProCGroups.ProC.finiteGroupClassProCPredicate C) ↥(H : Subgroup F),
      model.basisCardinal =
        schreierRankTransformCardinal (Cardinal.mk X)
          (Nat.card (F ⧸ (H : Subgroup F)))

Bundled-hypothesis cardinal-rank basis theorem, with a basis-model conclusion.

Show proof
theorem exists_freeProCBasisModel_openSubgroup_of_melnikovRank
    (C : ProCGroups.FiniteGroupClass.{u})
    (hBridge :
      PointedToConvergingSetBasisBridge (ProCGroups.ProC.finiteGroupClassProCPredicate C))
    (hC : ProCGroups.FiniteGroupClass.MelnikovFormation C)
    (hSub : ProCGroups.FiniteGroupClass.SubgroupClosed C)
    (hcyc :
      ∃ (A : Type u) (_ : Group A) (_ : Finite A),
        C A ∧ IsCyclic A ∧ Nontrivial A)
    {X : Type u}
    {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
    {ι : X → F}
    [DiscreteTopology (Set.range ι)]
    (hF : IsFreeProCGroupOnConvergingSet
      (ProC := ProCGroups.ProC.finiteGroupClassProCPredicate C) X F ι)
    (H : OpenSubgroup F) :
    ∃ model : FreeProCBasisModel
        (ProCGroups.ProC.finiteGroupClassProCPredicate C) ↥(H : Subgroup F),
      model.basisCardinal =
        schreierRankTransformCardinal (Cardinal.mk X)
          (Nat.card (F ⧸ (H : Subgroup F)))

Cardinal-rank Melnikov-formation variant, with a basis-model conclusion.

Show proof
theorem exists_freeProCBasisModel_openNormalSubgroup_of_melnikovFormation_cardinalRank
    (C : ProCGroups.FiniteGroupClass.{u})
    (hBridge :
      PointedToConvergingSetBasisBridge (ProCGroups.ProC.finiteGroupClassProCPredicate C))
    (hC : ProCGroups.FiniteGroupClass.MelnikovFormation C)
    (hSub : ProCGroups.FiniteGroupClass.SubgroupClosed C)
    (hcyc :
      ∃ (A : Type u) (_ : Group A) (_ : Finite A),
        C A ∧ IsCyclic A ∧ Nontrivial A)
    {X : Type u}
    {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
    {ι : X → F}
    [DiscreteTopology (Set.range ι)]
    (hF : IsFreeProCGroupOnConvergingSet
      (ProC := ProCGroups.ProC.finiteGroupClassProCPredicate C) X F ι)
    (H : OpenSubgroup F) :
    ∃ model : FreeProCBasisModel
        (ProCGroups.ProC.finiteGroupClassProCPredicate C) ↥(H : Subgroup F),
      model.basisCardinal =
        schreierRankTransformCardinal (Cardinal.mk X)
          (Nat.card (F ⧸ (H : Subgroup F)))

Cardinal-rank Melnikov-formation open-subgroup variant, with a basis-model conclusion.

Show proof