FenchelNielsenZomorrodian.Profinite.FGroup

34 Theorem | 22 Definition | 2 Abbreviation | 1 Structure | 1 Inductive | 4 Instance

This module develops Fenchel--Nielsen--Zomorrodian presentation reductions, period relations, reindexings, and quotient maps.

import
Imported by

Declarations

noncomputable def liftOfSurjective
    [CompactSpace F] [T2Space G]
    (π : F →ₜ* G) (hπ : Function.Surjective π)
    (φ : F →ₜ* A) (hker : π.toMonoidHom.ker ≤ φ.toMonoidHom.ker) :
    G →ₜ* A := by
  let ψ : G →* A :=
    (π.toMonoidHom.liftOfSurjective hπ) ⟨φ.toMonoidHom, hker⟩
  have hψcomp : ψ.comp π.toMonoidHom = φ.toMonoidHom := by
    ext x
    simp only [ContinuousMonoidHom.coe_toMonoidHom, MonoidHom.liftOfSurjective, MonoidHom.coe_coe,
  MonoidHom.liftOfRightInverse_comp, ψ]
  have hcomp_continuous : Continuous fun x : F => ψ (π x) := by
    convert φ.continuous_toFun using 1
    funext x
    exact MonoidHom.ext_iff.mp hψcomp x
  exact
    { toMonoidHom := ψ
      continuous_toFun :=
        (IsQuotientMap.of_surjective_continuous
          hπ π.continuous_toFun).continuous_iff.2 hcomp_continuous }

Descend a continuous homomorphism along a continuous surjection, using a kernel inclusion. This is the presentation quotient bridge used for profinite F-groups: a continuous homomorphism out of the free profinite source descends to the presented group once it kills the presentation kernel.

@[simp] theorem liftOfSurjective_apply
    [CompactSpace F] [T2Space G]
    (π : F →ₜ* G) (hπ : Function.Surjective π)
    (φ : F →ₜ* A) (hker : π.toMonoidHom.ker ≤ φ.toMonoidHom.ker)
    (x : F) :
    liftOfSurjective π hπ φ hker (π x) = φ x

The descended homomorphism is evaluated by applying the original homomorphism to any chosen preimage.

Show proof
@[simp] theorem liftOfSurjective_comp
    [CompactSpace F] [T2Space G]
    (π : F →ₜ* G) (hπ : Function.Surjective π)
    (φ : F →ₜ* A) (hker : π.toMonoidHom.ker ≤ φ.toMonoidHom.ker) :
    (liftOfSurjective π hπ φ hker).toMonoidHom.comp π.toMonoidHom =
      φ.toMonoidHom

Composing the descended homomorphism with the quotient map recovers the original homomorphism.

Show proof
abbrev profiniteDerivedSeries
    (G : Type u) [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    (m : ℕ) : Subgroup G :=
  ProCGroups.FiniteStepSolvableQuotients.topDerivedTop G m

The closed derived series of a profinite group, starting from the whole group.

theorem profiniteDerivedSeries_one_eq_bot_of_commGroup
    (G : Type u) [CommGroup G] [TopologicalSpace G] [T1Space G]
    [IsTopologicalGroup G] :
    profiniteDerivedSeries G 1 = ⊥

In a commutative \(T_1\) topological group, the first closed derived subgroup is trivial.

Show proof
theorem profiniteDerivedSeries_eq_derivedSeries_of_discrete
    (G : Type u) [Group G] [TopologicalSpace G] [DiscreteTopology G]
    [IsTopologicalGroup G] :
    ∀ m : ℕ, profiniteDerivedSeries G m = derivedSeries G m

For a discrete topological group, the closed profinite derived series agrees with the ordinary derived series.

Show proof
def profiniteFenchelGeneratorSet
    {G : Type u} {σ : FenchelSignature}
    (surfaceA surfaceB : Fin σ.orbitGenus → G)
    (cusp : Fin σ.numCusps → G)
    (inertia : Fin σ.numPeriods → G) : Set G :=
  Set.range surfaceA ∪ Set.range surfaceB ∪ Set.range cusp ∪ Set.range inertia

The Fenchel--Nielsen generator set for a profinite F-group presentation.

def profiniteFenchelTotalRelation
    {G : Type u} [Group G] {σ : FenchelSignature}
    (surfaceA surfaceB : Fin σ.orbitGenus → G)
    (cusp : Fin σ.numCusps → G)
    (inertia : Fin σ.numPeriods → G) : G :=
  ((List.finRange σ.orbitGenus).map fun i => ⁅surfaceA i, surfaceB i⁆).prod *
    ((List.finRange σ.numCusps).map fun j => cusp j).prod *
      ((List.finRange σ.numPeriods).map fun k => inertia k).prod

The single Fenchel--Nielsen surface relation is \(\prod_i [\alpha_i,\beta_i]\,\prod_j \gamma_j\,\prod_k \delta_k=1\).

inductive ProfiniteFenchelGenerator (σ : FenchelSignature)
  | surfaceA : Fin σ.orbitGenus → ProfiniteFenchelGenerator σ
  | surfaceB : Fin σ.orbitGenus → ProfiniteFenchelGenerator σ
  | cusp : Fin σ.numCusps → ProfiniteFenchelGenerator σ
  | inertia : Fin σ.numPeriods → ProfiniteFenchelGenerator σ

Formal indices for the Fenchel--Nielsen profinite F-group generators.

instance instTopologicalSpaceProfiniteFenchelGenerator (σ : FenchelSignature) :
    TopologicalSpace (ProfiniteFenchelGenerator σ) :=
  ⊥

The profinite Fenchel generator type carries the topology induced by its finite quotient construction.

instance instDiscreteTopologyProfiniteFenchelGenerator (σ : FenchelSignature) :
    DiscreteTopology (ProfiniteFenchelGenerator σ) :=
  ⟨rfl

The profinite Fenchel generator type carries the discrete topology at each finite quotient stage.

abbrev ProfiniteFenchelGeneratorIndex (σ : FenchelSignature) : Type v :=
  ULift.{v, 0} (ProfiniteFenchelGenerator σ)

A universe-lifted Fenchel--Nielsen generator index, suitable as a free pro-\(C\) basis.

instance instTopologicalSpaceProfiniteFenchelGeneratorIndex (σ : FenchelSignature) :
    TopologicalSpace (ProfiniteFenchelGeneratorIndex.{v} σ) :=
  ⊥

The profinite Fenchel generator-index type carries the topology induced by its finite quotient construction.

instance instDiscreteTopologyProfiniteFenchelGeneratorIndex (σ : FenchelSignature) :
    DiscreteTopology (ProfiniteFenchelGeneratorIndex.{v} σ) :=
  ⟨rfl

The profinite Fenchel generator-index type carries the discrete topology at each finite quotient stage.

def profiniteFenchelRelatorSet
    {F : Type u} [Group F] (σ : FenchelSignature)
    (basis : ProfiniteFenchelGeneratorIndex.{u} σ → F) : Set F :=
  {profiniteFenchelTotalRelation
      (fun i => basis (ULift.up (ProfiniteFenchelGenerator.surfaceA i)))
      (fun i => basis (ULift.up (ProfiniteFenchelGenerator.surfaceB i)))
      (fun j => basis (ULift.up (ProfiniteFenchelGenerator.cusp j)))
      (fun k => basis (ULift.up (ProfiniteFenchelGenerator.inertia k)))} ∪
    Set.range fun k : Fin σ.numPeriods =>
      basis (ULift.up (ProfiniteFenchelGenerator.inertia k)) ^ σ.periods k

The Fenchel--Nielsen relator set: the total surface relation and all inertia-period relations.

def ProfiniteFenchelGenerator.eval
    {G : Type u} {σ : FenchelSignature}
    (surfaceA surfaceB : Fin σ.orbitGenus → G)
    (cusp : Fin σ.numCusps → G)
    (inertia : Fin σ.numPeriods → G) :
    ProfiniteFenchelGenerator σ → G
  | .surfaceA i => surfaceA i
  | .surfaceB i => surfaceB i
  | .cusp j => cusp j
  | .inertia k => inertia k

A profinite Fenchel generator evaluates to its prescribed target element.

structure ProfiniteFGroup where
  carrier : Type u
  [group : Group carrier]
  [topologicalSpace : TopologicalSpace carrier]
  [isTopologicalGroup : IsTopologicalGroup carrier]
  presentationSource : Type u
  [presentationSourceGroup : Group presentationSource]
  [presentationSourceTopologicalSpace : TopologicalSpace presentationSource]
  [presentationSourceIsTopologicalGroup : IsTopologicalGroup presentationSource]
  isProfinite : ProCGroups.IsProfiniteGroup carrier
  topologicallyFinitelyGenerated :
    ProCGroups.FiniteGeneration.TopologicallyFinitelyGenerated carrier
  signature : FenchelSignature
  firstDerivedSignature : FenchelSignature
  surfaceA : Fin signature.orbitGenus → carrier
  surfaceB : Fin signature.orbitGenus → carrier
  cusp : Fin signature.numCusps → carrier
  inertia : Fin signature.numPeriods → carrier
  presentation_relation :
    profiniteFenchelTotalRelation surfaceA surfaceB cusp inertia = 1
  presentation_generates :
    ProCGroups.Generation.TopologicallyGenerates
      (G := carrier)
      (profiniteFenchelGeneratorSet surfaceA surfaceB cusp inertia)
  presentationBasis : ProfiniteFenchelGeneratorIndex.{u} signature → presentationSource
  presentationRelators : Set presentationSource
  presentationRelators_eq :
    presentationRelators =
      profiniteFenchelRelatorSet signature presentationBasis
  presentation :
    ProCGroups.Presentations.IsFreePresentationOfClass
      (ProCGroups.FiniteGroupClass.allFinite :
        ProCGroups.FiniteGroupClass.{u})
      (X := ProfiniteFenchelGeneratorIndex.{u} signature)
      (F := presentationSource) (G := carrier)
      presentationBasis presentationRelators
  presentation_π_surfaceA :
    ∀ i : Fin signature.orbitGenus,
      ProCGroups.Presentations.IsFreePresentationOf.π presentation
        (presentationBasis
          (ULift.up (ProfiniteFenchelGenerator.surfaceA i))) = surfaceA i
  presentation_π_surfaceB :
    ∀ i : Fin signature.orbitGenus,
      ProCGroups.Presentations.IsFreePresentationOf.π presentation
        (presentationBasis
          (ULift.up (ProfiniteFenchelGenerator.surfaceB i))) = surfaceB i
  presentation_π_cusp :
    ∀ j : Fin signature.numCusps,
      ProCGroups.Presentations.IsFreePresentationOf.π presentation
        (presentationBasis
          (ULift.up (ProfiniteFenchelGenerator.cusp j))) = cusp j
  presentation_π_inertia :
    ∀ k : Fin signature.numPeriods,
      ProCGroups.Presentations.IsFreePresentationOf.π presentation
        (presentationBasis
          (ULift.up (ProfiniteFenchelGenerator.inertia k))) = inertia k
  inertia_order : ∀ i, orderOf (inertia i) = signature.periods i

The profinite Fenchel--Nielsen group is the profinite group associated with the compact Fuchsian presentation.

theorem finiteOpenSubgroupsOfIndex (Δ : ProfiniteFGroup.{u}) :
    ProCGroups.FiniteGeneration.HasFiniteOpenSubgroupsOfIndex Δ.carrier

A profinite Fenchel group has only finitely many open subgroups of each fixed index. This is the standard finite-generation consequence used by characteristic-closure arguments. Keeping it as a named lemma avoids rebuilding the finite-generation proof in the public Fenchel--Nielsen theorems.

Show proof
noncomputable def presentationMap (Δ : ProfiniteFGroup.{u}) :
    Δ.presentationSource →ₜ* Δ.carrier :=
  ProCGroups.Presentations.IsFreePresentationOf.π Δ.presentation

The presentation map from the free profinite Fenchel source onto the profinite F-group.

theorem presentationMap_surjective (Δ : ProfiniteFGroup.{u}) :
    Function.Surjective Δ.presentationMap

The presentation map of the profinite F-group is surjective.

Show proof
theorem presentationMap_ker_eq_closedNormalClosure
    (Δ : ProfiniteFGroup.{u}) :
    Δ.presentationMap.toMonoidHom.ker =
      ProCGroups.Presentations.closedNormalClosure Δ.presentationRelators

The kernel of the profinite Fuchsian presentation map is the closed normal closure of the presentation relators.

Show proof
theorem presentationMap_eq_one_of_mem_relators
    (Δ : ProfiniteFGroup.{u}) {x : Δ.presentationSource}
    (hx : x ∈ Δ.presentationRelators) :
    Δ.presentationMap x = 1

The profinite F-group presentation map sends every defining presentation relator to the identity.

Show proof
@[simp] theorem presentationMap_surfaceA (Δ : ProfiniteFGroup.{u})
    (i : Fin Δ.signature.orbitGenus) :
    Δ.presentationMap
        (Δ.presentationBasis
          (ULift.up (ProfiniteFenchelGenerator.surfaceA i))) =
      Δ.surfaceA i

The presentation map sends a surface \(A\)-generator to its image in the profinite F-group.

Show proof
@[simp] theorem presentationMap_surfaceB (Δ : ProfiniteFGroup.{u})
    (i : Fin Δ.signature.orbitGenus) :
    Δ.presentationMap
        (Δ.presentationBasis
          (ULift.up (ProfiniteFenchelGenerator.surfaceB i))) =
      Δ.surfaceB i

The presentation map sends a surface \(B\)-generator to its image in the profinite F-group.

Show proof
@[simp] theorem presentationMap_cusp (Δ : ProfiniteFGroup.{u})
    (j : Fin Δ.signature.numCusps) :
    Δ.presentationMap
        (Δ.presentationBasis
          (ULift.up (ProfiniteFenchelGenerator.cusp j))) =
      Δ.cusp j

The presentation map sends a cusp generator to its image in the profinite F-group.

Show proof
@[simp] theorem presentationMap_inertia (Δ : ProfiniteFGroup.{u})
    (k : Fin Δ.signature.numPeriods) :
    Δ.presentationMap
        (Δ.presentationBasis
          (ULift.up (ProfiniteFenchelGenerator.inertia k))) =
      Δ.inertia k

The presentation map sends an inertia generator to its image in the profinite F-group.

Show proof
theorem presentationMap_totalRelator_eq_one
    (Δ : ProfiniteFGroup.{u}) :
    Δ.presentationMap
        (profiniteFenchelTotalRelation
          (fun i => Δ.presentationBasis
            (ULift.up (ProfiniteFenchelGenerator.surfaceA i)))
          (fun i => Δ.presentationBasis
            (ULift.up (ProfiniteFenchelGenerator.surfaceB i)))
          (fun j => Δ.presentationBasis
            (ULift.up (ProfiniteFenchelGenerator.cusp j)))
          (fun k => Δ.presentationBasis
            (ULift.up (ProfiniteFenchelGenerator.inertia k)))) = 1

Under the profinite F-group presentation map, the total surface relator maps to the identity.

Show proof
theorem presentationMap_periodRelator_eq_one
    (Δ : ProfiniteFGroup.{u}) (k : Fin Δ.signature.numPeriods) :
    Δ.presentationMap
        (Δ.presentationBasis
          (ULift.up (ProfiniteFenchelGenerator.inertia k)) ^
          Δ.signature.periods k) = 1

Under the profinite F-group presentation map, each inertia period relator maps to the identity.

Show proof
noncomputable def presentationLift
    (Δ : ProfiniteFGroup.{u})
    {A : Type u} [Group A] [TopologicalSpace A] [T1Space A]
    (φ : Δ.presentationSource →ₜ* A)
    (hφ :
      Δ.presentationRelators ⊆ φ.toMonoidHom.ker) :
    Δ.carrier →ₜ* A := by
  have hSourceProfinite :
      ProCGroups.IsProfiniteGroup Δ.presentationSource :=
    ProCGroups.ProC.isProfiniteGroup_of_finiteGroupClassProCPredicate
      (ProCGroups.FiniteGroupClass.allFinite :
        ProCGroups.FiniteGroupClass.{u})
      Δ.presentation.1.isProC
  letI : CompactSpace Δ.presentationSource :=
    ProCGroups.IsProfiniteGroup.compactSpace hSourceProfinite
  letI : T2Space Δ.carrier :=
    ProCGroups.IsProfiniteGroup.t2Space Δ.isProfinite
  have hClosedKer :
      IsClosed ((φ.toMonoidHom.ker : Subgroup Δ.presentationSource) :
        Set Δ.presentationSource) := by
    change IsClosed (φ ⁻¹' ({1} : Set A))
    exact isClosed_singleton.preimage φ.continuous_toFun
  have hClosedNormal :
      ProCGroups.Presentations.closedNormalClosure Δ.presentationRelators ≤
        φ.toMonoidHom.ker :=
    ProCGroups.Presentations.closedNormalClosure_le_closed_normal
      (F := Δ.presentationSource) hClosedKer hφ
  have hker : Δ.presentationMap.toMonoidHom.ker ≤ φ.toMonoidHom.ker := by
    rw [presentationMap_ker_eq_closedNormalClosure Δ]
    exact hClosedNormal
  exact
    ContinuousMonoidHom.liftOfSurjective
      Δ.presentationMap (presentationMap_surjective Δ) φ hker

A continuous homomorphism from the presentation source whose relators vanish descends to a continuous homomorphism from the profinite F-group.

@[simp] theorem presentationLift_comp_presentationMap
    (Δ : ProfiniteFGroup.{u})
    {A : Type u} [Group A] [TopologicalSpace A] [T1Space A]
    (φ : Δ.presentationSource →ₜ* A)
    (hφ :
      Δ.presentationRelators ⊆ φ.toMonoidHom.ker) :
    (Δ.presentationLift φ hφ).toMonoidHom.comp
        Δ.presentationMap.toMonoidHom =
      φ.toMonoidHom

Composing a descended presentation lift with the presentation map recovers the original source homomorphism.

Show proof
@[simp] theorem presentationLift_surfaceA
    (Δ : ProfiniteFGroup.{u})
    {A : Type u} [Group A] [TopologicalSpace A] [T1Space A]
    (φ : Δ.presentationSource →ₜ* A)
    (hφ :
      Δ.presentationRelators ⊆ φ.toMonoidHom.ker)
    (i : Fin Δ.signature.orbitGenus) :
    Δ.presentationLift φ hφ (Δ.surfaceA i) =
      φ (Δ.presentationBasis
        (ULift.up (ProfiniteFenchelGenerator.surfaceA i)))

The descended presentation lift sends the surface \(A\)-generator to its prescribed image.

Show proof
@[simp] theorem presentationLift_surfaceB
    (Δ : ProfiniteFGroup.{u})
    {A : Type u} [Group A] [TopologicalSpace A] [T1Space A]
    (φ : Δ.presentationSource →ₜ* A)
    (hφ :
      Δ.presentationRelators ⊆ φ.toMonoidHom.ker)
    (i : Fin Δ.signature.orbitGenus) :
    Δ.presentationLift φ hφ (Δ.surfaceB i) =
      φ (Δ.presentationBasis
        (ULift.up (ProfiniteFenchelGenerator.surfaceB i)))

The descended presentation lift sends the surface \(B\)-generator to its prescribed image.

Show proof
@[simp] theorem presentationLift_cusp
    (Δ : ProfiniteFGroup.{u})
    {A : Type u} [Group A] [TopologicalSpace A] [T1Space A]
    (φ : Δ.presentationSource →ₜ* A)
    (hφ :
      Δ.presentationRelators ⊆ φ.toMonoidHom.ker)
    (j : Fin Δ.signature.numCusps) :
    Δ.presentationLift φ hφ (Δ.cusp j) =
      φ (Δ.presentationBasis
        (ULift.up (ProfiniteFenchelGenerator.cusp j)))

The descended presentation lift sends the cusp generator to its prescribed image.

Show proof
@[simp 900] theorem presentationLift_inertia
    (Δ : ProfiniteFGroup.{u})
    {A : Type u} [Group A] [TopologicalSpace A] [T1Space A]
    (φ : Δ.presentationSource →ₜ* A)
    (hφ :
      Δ.presentationRelators ⊆ φ.toMonoidHom.ker)
    (k : Fin Δ.signature.numPeriods) :
    Δ.presentationLift φ hφ (Δ.inertia k) =
      φ (Δ.presentationBasis
        (ULift.up (ProfiniteFenchelGenerator.inertia k)))

The descended presentation lift sends the inertia generator to its prescribed image.

Show proof
noncomputable def presentationSourceLiftToFinite
    (Δ : ProfiniteFGroup.{u})
    {A : Type u} [Group A] [TopologicalSpace A] [DiscreteTopology A] [Finite A]
    (χ : ProfiniteFenchelGeneratorIndex.{u} Δ.signature → A) :
    Δ.presentationSource →ₜ* A := by
  letI : IsTopologicalGroup A := inferInstance
  have hCG :
      (ProCGroups.FiniteGroupClass.allFinite :
        ProCGroups.FiniteGroupClass.{u}).pred A := by
    change Finite A
    infer_instance
  have hA :
      (ProCGroups.ProC.finiteGroupClassProCPredicate
        (ProCGroups.FiniteGroupClass.allFinite :
          ProCGroups.FiniteGroupClass.{u})).holds (G := A) := by
    exact
      ProCGroups.ProC.IsProCGroup.of_finite_discrete
        (C := (ProCGroups.FiniteGroupClass.allFinite :
          ProCGroups.FiniteGroupClass.{u}))
        ProCGroups.FiniteGroupClass.allFinite_quotientClosed hCG
  have hχ : Continuous χ := continuous_of_discreteTopology
  exact
    { toMonoidHom := Δ.presentation.1.lift hA χ hχ
      continuous_toFun := (Δ.presentation.1.lift_spec hA χ hχ).1 }

An arbitrary assignment of the Fenchel--Nielsen presentation generators to a finite discrete group lifts to the free profinite presentation source.

@[simp 900] theorem presentationSourceLiftToFinite_basis
    (Δ : ProfiniteFGroup.{u})
    {A : Type u} [Group A] [TopologicalSpace A] [DiscreteTopology A] [Finite A]
    (χ : ProfiniteFenchelGeneratorIndex.{u} Δ.signature → A)
    (x : ProfiniteFenchelGeneratorIndex.{u} Δ.signature) :
    Δ.presentationSourceLiftToFinite χ (Δ.presentationBasis x) = χ x

The finite-target source lift sends each presentation basis generator to its prescribed value.

Show proof
theorem presentationSourceLiftToFinite_totalRelator
    (Δ : ProfiniteFGroup.{u})
    {A : Type u} [Group A] [TopologicalSpace A] [DiscreteTopology A] [Finite A]
    (χ : ProfiniteFenchelGeneratorIndex.{u} Δ.signature → A) :
    Δ.presentationSourceLiftToFinite χ
        (profiniteFenchelTotalRelation
          (fun i => Δ.presentationBasis
            (ULift.up (ProfiniteFenchelGenerator.surfaceA i)))
          (fun i => Δ.presentationBasis
            (ULift.up (ProfiniteFenchelGenerator.surfaceB i)))
          (fun j => Δ.presentationBasis
            (ULift.up (ProfiniteFenchelGenerator.cusp j)))
          (fun k => Δ.presentationBasis
            (ULift.up (ProfiniteFenchelGenerator.inertia k)))) =
      profiniteFenchelTotalRelation
        (fun i => χ (ULift.up (ProfiniteFenchelGenerator.surfaceA i)))
        (fun i => χ (ULift.up (ProfiniteFenchelGenerator.surfaceB i)))
        (fun j => χ (ULift.up (ProfiniteFenchelGenerator.cusp j)))
        (fun k => χ (ULift.up (ProfiniteFenchelGenerator.inertia k)))

The lifted finite presentation satisfies the total relator.

Show proof
theorem presentationSourceLiftToFinite_periodRelator
    (Δ : ProfiniteFGroup.{u})
    {A : Type u} [Group A] [TopologicalSpace A] [DiscreteTopology A] [Finite A]
    (χ : ProfiniteFenchelGeneratorIndex.{u} Δ.signature → A)
    (k : Fin Δ.signature.numPeriods) :
    Δ.presentationSourceLiftToFinite χ
        (Δ.presentationBasis
          (ULift.up (ProfiniteFenchelGenerator.inertia k)) ^
          Δ.signature.periods k) =
      χ (ULift.up (ProfiniteFenchelGenerator.inertia k)) ^
        Δ.signature.periods k

The finite lift of the profinite Fenchel presentation satisfies each period relator.

Show proof
theorem presentationSourceLiftToFinite_relators_subset_ker
    (Δ : ProfiniteFGroup.{u})
    {A : Type u} [Group A] [TopologicalSpace A] [DiscreteTopology A] [Finite A]
    (χ : ProfiniteFenchelGeneratorIndex.{u} Δ.signature → A)
    (hTotal :
      profiniteFenchelTotalRelation
          (fun i => χ (ULift.up (ProfiniteFenchelGenerator.surfaceA i)))
          (fun i => χ (ULift.up (ProfiniteFenchelGenerator.surfaceB i)))
          (fun j => χ (ULift.up (ProfiniteFenchelGenerator.cusp j)))
          (fun k => χ (ULift.up (ProfiniteFenchelGenerator.inertia k))) = 1)
    (hPeriod :
      ∀ k : Fin Δ.signature.numPeriods,
        χ (ULift.up (ProfiniteFenchelGenerator.inertia k)) ^
          Δ.signature.periods k = 1) :
    Δ.presentationRelators ⊆
      (Δ.presentationSourceLiftToFinite χ).toMonoidHom.ker

The lifted presentation relators lie in the kernel of the finite quotient map.

Show proof
noncomputable def presentationLiftToFinite
    (Δ : ProfiniteFGroup.{u})
    {A : Type u} [Group A] [TopologicalSpace A] [DiscreteTopology A] [Finite A]
    (χ : ProfiniteFenchelGeneratorIndex.{u} Δ.signature → A)
    (hχ :
      Δ.presentationRelators ⊆
        (Δ.presentationSourceLiftToFinite χ).toMonoidHom.ker) :
    Δ.carrier →ₜ* A :=
  Δ.presentationLift (Δ.presentationSourceLiftToFinite χ) hχ

Descend a finite-generator assignment to the presented profinite F-group once the presentation relators vanish under the induced free-source map.

noncomputable def presentationLiftToFiniteOfRelations
    (Δ : ProfiniteFGroup.{u})
    {A : Type u} [Group A] [TopologicalSpace A] [DiscreteTopology A] [Finite A]
    (χ : ProfiniteFenchelGeneratorIndex.{u} Δ.signature → A)
    (hTotal :
      profiniteFenchelTotalRelation
          (fun i => χ (ULift.up (ProfiniteFenchelGenerator.surfaceA i)))
          (fun i => χ (ULift.up (ProfiniteFenchelGenerator.surfaceB i)))
          (fun j => χ (ULift.up (ProfiniteFenchelGenerator.cusp j)))
          (fun k => χ (ULift.up (ProfiniteFenchelGenerator.inertia k))) = 1)
    (hPeriod :
      ∀ k : Fin Δ.signature.numPeriods,
        χ (ULift.up (ProfiniteFenchelGenerator.inertia k)) ^
          Δ.signature.periods k = 1) :
    Δ.carrier →ₜ* A :=
  Δ.presentationLiftToFinite χ
    (presentationSourceLiftToFinite_relators_subset_ker Δ χ hTotal hPeriod)

A finite target assignment satisfying exactly the Fenchel--Nielsen total and period relations descends to the profinite F-group.

@[simp] theorem presentationLiftToFinite_surfaceA
    (Δ : ProfiniteFGroup.{u})
    {A : Type u} [Group A] [TopologicalSpace A] [DiscreteTopology A] [Finite A]
    (χ : ProfiniteFenchelGeneratorIndex.{u} Δ.signature → A)
    (hχ :
      Δ.presentationRelators ⊆
        (Δ.presentationSourceLiftToFinite χ).toMonoidHom.ker)
    (i : Fin Δ.signature.orbitGenus) :
    Δ.presentationLiftToFinite χ hχ (Δ.surfaceA i) =
      χ (ULift.up (ProfiniteFenchelGenerator.surfaceA i))

The finite-target presentation lift sends the surface \(A\)-generator to its prescribed finite-target value.

Show proof
@[simp] theorem presentationLiftToFinite_surfaceB
    (Δ : ProfiniteFGroup.{u})
    {A : Type u} [Group A] [TopologicalSpace A] [DiscreteTopology A] [Finite A]
    (χ : ProfiniteFenchelGeneratorIndex.{u} Δ.signature → A)
    (hχ :
      Δ.presentationRelators ⊆
        (Δ.presentationSourceLiftToFinite χ).toMonoidHom.ker)
    (i : Fin Δ.signature.orbitGenus) :
    Δ.presentationLiftToFinite χ hχ (Δ.surfaceB i) =
      χ (ULift.up (ProfiniteFenchelGenerator.surfaceB i))

The finite-target presentation lift sends the surface \(B\)-generator to its prescribed finite-target value.

Show proof
@[simp] theorem presentationLiftToFinite_cusp
    (Δ : ProfiniteFGroup.{u})
    {A : Type u} [Group A] [TopologicalSpace A] [DiscreteTopology A] [Finite A]
    (χ : ProfiniteFenchelGeneratorIndex.{u} Δ.signature → A)
    (hχ :
      Δ.presentationRelators ⊆
        (Δ.presentationSourceLiftToFinite χ).toMonoidHom.ker)
    (j : Fin Δ.signature.numCusps) :
    Δ.presentationLiftToFinite χ hχ (Δ.cusp j) =
      χ (ULift.up (ProfiniteFenchelGenerator.cusp j))

The finite-target presentation lift sends the cusp generator to its prescribed finite-target value.

Show proof
@[simp] theorem presentationLiftToFinite_inertia
    (Δ : ProfiniteFGroup.{u})
    {A : Type u} [Group A] [TopologicalSpace A] [DiscreteTopology A] [Finite A]
    (χ : ProfiniteFenchelGeneratorIndex.{u} Δ.signature → A)
    (hχ :
      Δ.presentationRelators ⊆
        (Δ.presentationSourceLiftToFinite χ).toMonoidHom.ker)
    (k : Fin Δ.signature.numPeriods) :
    Δ.presentationLiftToFinite χ hχ (Δ.inertia k) =
      χ (ULift.up (ProfiniteFenchelGenerator.inertia k))

The finite-target presentation lift sends the inertia generator to its prescribed finite-target value.

Show proof
def IsHyperbolic (Δ : ProfiniteFGroup) : Prop :=
  Δ.signature.IsHyperbolic

A profinite F-group is hyperbolic when its signature is hyperbolic.

def IsPerfect (Δ : ProfiniteFGroup) : Prop :=
  profiniteDerivedSeries Δ.carrier 1 = ⊤

A profinite F-group is perfect when its first profinite derived subgroup is the whole carrier.

def IsNonPerfect (Δ : ProfiniteFGroup) : Prop :=
  ¬ Δ.IsPerfect

A profinite F-group is nonperfect when it is not perfect.

def PairwiseCoprimePeriods (Δ : ProfiniteFGroup) : Prop :=
  ∀ i j : Fin Δ.signature.numPeriods,
    i ≠ j → Nat.Coprime (Δ.signature.periods i) (Δ.signature.periods j)

The profinite F-group signature has pairwise coprime periods.

def CharPerfectNumericalCondition (Δ : ProfiniteFGroup) : Prop :=
  Δ.signature.orbitGenus = 0 ∧
    Δ.signature.numCusps = 0 ∧
      Δ.PairwiseCoprimePeriods

The characteristic perfectness numerical condition says: orbit genus zero, no cusps, and pairwise coprime periods.

def ProfiniteOpenNormalQuotientHasDerivedLengthAtMost
    (G : Type u) [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    (U : OpenNormalSubgroup G) (m : ℕ) : Prop :=
  profiniteDerivedSeries (G ⧸ (U : Subgroup G)) m = ⊥

The selected open normal quotient has derived length bounded by the given parameter.

def ProfiniteOpenNormalSubgroupTorsionFree
    (G : Type u) [Group G] [TopologicalSpace G]
    (U : OpenNormalSubgroup G) : Prop :=
  ∀ x : G, x ∈ (U : Subgroup G) → IsOfFinOrder x → x = 1

The selected open normal subgroup is torsion-free for the finite-index reduction.

def ProfiniteOpenCharacteristicSubgroup
    (G : Type u) [Group G] [TopologicalSpace G] : Type u :=
  { U : OpenNormalSubgroup G //
    ProCGroups.FiniteGeneration.IsTopologicallyCharacteristic (G := G) (U : Subgroup G) }

The profinite open characteristic subgroup is the open normal subgroup selected by the finite-quotient data in the construction.

def ProfiniteOpenCharacteristicSubgroup.toOpenNormalSubgroup
    {G : Type u} [Group G] [TopologicalSpace G]
    (U : ProfiniteOpenCharacteristicSubgroup G) :
    OpenNormalSubgroup G :=
  U.1

An open characteristic subgroup is, in particular, an open normal subgroup.

def ProfiniteOpenCharacteristicQuotientHasDerivedLengthAtMost
    (G : Type u) [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    (U : ProfiniteOpenCharacteristicSubgroup G) (m : ℕ) : Prop :=
  ProfiniteOpenNormalQuotientHasDerivedLengthAtMost G U.toOpenNormalSubgroup m

The selected open characteristic quotient has derived length bounded by the given parameter.

def HasTorsionFreeOpenNormalSubgroupQuotientDerivedLengthAtMost
    (G : Type u) [Group G] [TopologicalSpace G] [IsTopologicalGroup G] (m : ℕ) : Prop :=
  ∃ U : OpenNormalSubgroup G,
    ProfiniteOpenNormalSubgroupTorsionFree G U ∧
      ProfiniteOpenNormalQuotientHasDerivedLengthAtMost G U m

The predicate records a torsion-free open normal subgroup whose quotient has derived length at most the given bound.

def HasTorsionFreeOpenCharacteristicSubgroupQuotientDerivedLengthAtMost
    (G : Type u) [Group G] [TopologicalSpace G] [IsTopologicalGroup G] (m : ℕ) : Prop :=
  ∃ U : ProfiniteOpenCharacteristicSubgroup G,
    ProfiniteOpenNormalSubgroupTorsionFree G U.toOpenNormalSubgroup ∧
      ProfiniteOpenCharacteristicQuotientHasDerivedLengthAtMost G U m

The predicate records a torsion-free open characteristic subgroup whose quotient has derived length at most the given bound.

theorem ProfiniteOpenNormalQuotientHasDerivedLengthAtMost.of_topDerived_le
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    (U : OpenNormalSubgroup G) {m : ℕ}
    (hU : profiniteDerivedSeries G m ≤ (U : Subgroup G)) :
    ProfiniteOpenNormalQuotientHasDerivedLengthAtMost G U m

A containment of the top derived subgroup gives the corresponding open-normal quotient derived-length bound.

Show proof
theorem ProfiniteOpenNormalQuotientHasDerivedLengthAtMost.topDerived_le
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    (U : OpenNormalSubgroup G) {m : ℕ}
    (hU : ProfiniteOpenNormalQuotientHasDerivedLengthAtMost G U m) :
    profiniteDerivedSeries G m ≤ (U : Subgroup G)

A profinite open-normal quotient derived-length bound implies containment of the top derived subgroup.

Show proof
theorem profiniteOpenNormalQuotientHasDerivedLengthAtMost_iff_topDerived_le
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    {U : OpenNormalSubgroup G} {m : ℕ} :
    ProfiniteOpenNormalQuotientHasDerivedLengthAtMost G U m ↔
      profiniteDerivedSeries G m ≤ (U : Subgroup G)

A profinite open-normal quotient has derived length at most the given bound exactly when its top derived subgroup is contained in the given subgroup.

Show proof
theorem ProfiniteOpenNormalQuotientHasDerivedLengthAtMost.mono
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    {U : OpenNormalSubgroup G} {m n : ℕ}
    (hmn : m ≤ n)
    (hU : ProfiniteOpenNormalQuotientHasDerivedLengthAtMost G U m) :
    ProfiniteOpenNormalQuotientHasDerivedLengthAtMost G U n

Increasing the derived-length bound preserves the profinite open-normal quotient derived-length condition.

Show proof
theorem HasTorsionFreeOpenNormalSubgroupQuotientDerivedLengthAtMost.mono
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    {m n : ℕ} (hmn : m ≤ n)
    (h :
      HasTorsionFreeOpenNormalSubgroupQuotientDerivedLengthAtMost G m) :
    HasTorsionFreeOpenNormalSubgroupQuotientDerivedLengthAtMost G n

Increasing the derived-length bound preserves the existence of a torsion-free open normal subgroup whose quotient has derived length at most that bound.

Show proof
theorem HasTorsionFreeOpenCharacteristicSubgroupQuotientDerivedLengthAtMost.mono
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    {m n : ℕ} (hmn : m ≤ n)
    (h :
      HasTorsionFreeOpenCharacteristicSubgroupQuotientDerivedLengthAtMost
        G m) :
    HasTorsionFreeOpenCharacteristicSubgroupQuotientDerivedLengthAtMost
      G n

Increasing the derived-length bound preserves the existence of a torsion-free open characteristic subgroup whose quotient has derived length at most that bound.

Show proof
theorem hasTorsionFreeOpenNormal_of_characteristic
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G] {m : ℕ}
    (h :
      HasTorsionFreeOpenCharacteristicSubgroupQuotientDerivedLengthAtMost
        G m) :
    HasTorsionFreeOpenNormalSubgroupQuotientDerivedLengthAtMost G m

A torsion-free open characteristic subgroup with a quotient derived-length bound gives the corresponding open-normal-subgroup statement.

Show proof