ProCGroups.FreeProC.Abelianization
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
- Mathlib.Topology.Constructions
- Mathlib.Topology.Instances.ZMod
- ProCGroups.Abelian.TopologicalAbelianization
- ProCGroups.FreeProC.Basic
theorem exists_freeAbelianizationCyclicCoordinate
{sigma : Set ℕ}
{F : Type u} [TopologicalSpace F] [Group F] [IsTopologicalGroup F]
{r L : ℕ} (hLpos : 0 < L)
(hLsigma : ProCGroups.FiniteGroupClass.IsSigmaNumber sigma L)
(X : Fin r → F)
(hFree :
IsFreeProCGroupOnConvergingSet
(ProC := ProCGroups.ProC.finiteGroupClassProCPredicate
(ProCGroups.FiniteGroupClass.sigmaGroup sigma)) (Fin r) F X)
(i : Fin r) :
∃ χ : TopologicalAbelianization F →ₜ* Multiplicative (ZMod L),
χ (ProCGroups.Abelian.TopologicalAbelianization.mk F (X i)) =
Multiplicative.ofAdd (1 : ZMod L)Show proof
by
classical
let C : ProCGroups.FiniteGroupClass.{u} := ProCGroups.FiniteGroupClass.sigmaGroup sigma
letI : NeZero L := ⟨Nat.ne_of_gt hLpos⟩
let T : Type u := ULift.{u} (Multiplicative (ZMod L))
letI : Group T := inferInstance
letI : CommGroup T := inferInstance
letI : TopologicalSpace T := ⊥
letI : DiscreteTopology T := ⟨rfl⟩
letI : IsTopologicalGroup T := by infer_instance
let φ : Fin r → T :=
fun j => if j = i then ULift.up (Multiplicative.ofAdd (1 : ZMod L)) else 1
have hφ : FamilyConvergesToOne (G := T) φ :=
FamilyConvergesToOne.of_finite_domain φ
have htarget :
(ProCGroups.ProC.finiteGroupClassProCPredicate C)
(G := T) := by
letI : Finite T := by
exact Finite.of_equiv (Multiplicative (ZMod L)) Equiv.ulift.symm
exact
ProCGroups.ProC.IsProCGroup.of_finite_discrete
(C := C) (G := T)
(ProCGroups.FiniteGroupClass.sigmaGroup_quotientClosed sigma)
(ProCGroups.FiniteGroupClass.sigmaGroup_cyclicZMod (sigma := sigma) hLpos hLsigma)
rcases
hFree.existsUnique_liftHom_of_convergesToOne_of_finiteGroupClass
C
(ProCGroups.FiniteGroupClass.sigmaGroup_isomClosed sigma)
(ProCGroups.FiniteGroupClass.sigmaGroup_subgroupClosed sigma)
(ProCGroups.FiniteGroupClass.sigmaGroup_quotientClosed sigma)
htarget φ hφ with
⟨χF, hχF, _⟩
letI : TopologicalSpace (Multiplicative (ZMod L)) := ⊥
letI : DiscreteTopology (Multiplicative (ZMod L)) := ⟨rfl⟩
letI : IsTopologicalGroup (Multiplicative (ZMod L)) := by infer_instance
let down : T →ₜ* Multiplicative (ZMod L) :=
{ toMonoidHom := (MulEquiv.ulift : T ≃* Multiplicative (ZMod L)).toMonoidHom
continuous_toFun := continuous_of_discreteTopology }
refine ⟨down.comp (ProCGroups.Abelian.TopologicalAbelianization.lift χF), ?_⟩
change down (ProCGroups.Abelian.TopologicalAbelianization.lift χF
(ProCGroups.Abelian.TopologicalAbelianization.mk F (X i))) =
Multiplicative.ofAdd (1 : ZMod L)
rw [ProCGroups.Abelian.TopologicalAbelianization.lift_apply_mk, hχF]
change (MulEquiv.ulift : T ≃* Multiplicative (ZMod L)) (φ i) =
Multiplicative.ofAdd (1 : ZMod L)
simp only [↓reduceIte, φ]
rflProof. Work with open normal subgroups and finite quotients of the profinite or pro-\(C\) group. Finite quotients separate points, and continuous homomorphisms are determined by their compatible quotient-level maps. For pro-\(C\) claims, the resulting finite quotients lie in \(C\) by the closure property used in the construction: closure under quotients, subgroups, finite products, or extensions. Continuity is checked by composing with all finite quotient projections; each composite is a continuous map between finite or profinite quotient spaces. Compatibility under refinement then assembles the finite-quotient data and proves the required profinite or pro-\(C\) statement. The quotient-level assertions are stable under passing to smaller open normal subgroups, so they define compatible data in the inverse system of finite quotients. For pro-\(C\) permanence, the construction uses only operations for which the chosen finite group class is closed. Hence the finite verification assembles to the desired profinite map, subgroup, or quotient statement. For categorical constructions such as products, pullbacks, and inverse limits, the universal property is checked by composing with the coordinate projections. The uniqueness part follows because any two candidate maps with the same finite quotient composites have the same value on every separating finite quotient. Existence is obtained by assembling the compatible coordinate maps supplied by the finite quotient construction. The topological assertion is checked by the initial topology of the inverse limit. After composing with each finite-stage projection, the relevant map is a continuous finite-stage homomorphism or an operation on a finite product; compactness, Hausdorffness, total disconnectedness, and profiniteness are then inherited from the finite stages by the standard inverse-limit argument.
□