ProCGroups.Abelian.TopologicalAbelianizationLimits

11 Theorem | 6 Definition | 2 Instance

This module sets up the finite-stage and inverse-limit description of the construction. It records the stage maps, projections, and comparison lemmas used to pass back to the completed object.

import
Imported by

Declarations

noncomputable def abelianizationInverseSystem
    {I : Type u} [Preorder I]
    (S : InverseSystems.InverseSystem (I := I))
    [∀ i, Group (S.X i)] [InverseSystems.IsGroupSystem S]
    [∀ i, IsTopologicalGroup (S.X i)] :
    InverseSystems.InverseSystem (I := I) where
  X := fun i => TopologicalAbelianization (S.X i)
  topologicalSpace := fun i => inferInstance
  map := fun {i j} hij =>
    TopologicalAbelianization.map
      { toMonoidHom :=
          { toFun := S.map hij
            map_one' := InverseSystems.IsGroupSystem.map_one (S := S) hij
            map_mul' := InverseSystems.IsGroupSystem.map_mul (S := S) hij }
        continuous_toFun := S.continuous_map hij }
  continuous_map := by
    intro i j hij
    exact (TopologicalAbelianization.map
      { toMonoidHom :=
          { toFun := S.map hij
            map_one' := InverseSystems.IsGroupSystem.map_one (S := S) hij
            map_mul' := InverseSystems.IsGroupSystem.map_mul (S := S) hij }
        continuous_toFun := S.continuous_map hij }).continuous_toFun
  map_id := by
    intro i
    funext x
    refine Quotient.inductionOn' x ?_
    intro a
    change
      QuotientGroup.mk'
          (Subgroup.topologicalClosure (commutator (S.X i)))
          (S.map (le_rfl : i ≤ i) a) =
        QuotientGroup.mk'
          (Subgroup.topologicalClosure (commutator (S.X i)))
          a
    exact congrArg
      (QuotientGroup.mk' (Subgroup.topologicalClosure (commutator (S.X i))))
      (S.map_id_apply i a)
  map_comp := by
    intro i j k hij hjk
    funext x
    refine Quotient.inductionOn' x ?_
    intro a
    change
      QuotientGroup.mk'
          (Subgroup.topologicalClosure (commutator (S.X i)))
          (S.map hij (S.map hjk a)) =
        QuotientGroup.mk'
          (Subgroup.topologicalClosure (commutator (S.X i)))
          (S.map (hij.trans hjk) a)
    exact congrArg
      (QuotientGroup.mk' (Subgroup.topologicalClosure (commutator (S.X i))))
      (S.map_comp_apply hij hjk a)

The stagewise inverse system obtained by applying topological abelianization.

instance abelianizationInverseSystem_stageGroup
    {I : Type u} [Preorder I]
    (S : InverseSystems.InverseSystem (I := I))
    [∀ i, Group (S.X i)] [InverseSystems.IsGroupSystem S]
    [∀ i, IsTopologicalGroup (S.X i)] (i : I) :
    Group ((abelianizationInverseSystem S).X i) := by
  change Group (TopologicalAbelianization (S.X i))
  infer_instance

Each stage of the abelianization inverse system inherits its quotient group structure.

instance abelianizationInverseSystem_isGroupSystem
    {I : Type u} [Preorder I]
    (S : InverseSystems.InverseSystem (I := I))
    [∀ i, Group (S.X i)] [InverseSystems.IsGroupSystem S]
    [∀ i, IsTopologicalGroup (S.X i)] :
    InverseSystems.IsGroupSystem (abelianizationInverseSystem S) where
  map_one := by
    intro i j hij
    simp only [abelianizationInverseSystem, Lean.Elab.WF.paramLet, map_one]
  map_mul := by
    intro i j hij x y
    simp only [abelianizationInverseSystem, Lean.Elab.WF.paramLet, map_mul]
  map_inv := by
    intro i j hij x
    exact (TopologicalAbelianization.map
      { toMonoidHom :=
          { toFun := S.map hij
            map_one' := InverseSystems.IsGroupSystem.map_one (S := S) hij
            map_mul' := InverseSystems.IsGroupSystem.map_mul (S := S) hij }
        continuous_toFun := S.continuous_map hij }).map_inv x

The abelianization inverse system is a group-valued inverse system.

def toAbelianizationInverseSystem
    {I : Type u} [Preorder I]
    (S : InverseSystems.InverseSystem (I := I))
    [∀ i, Group (S.X i)] [InverseSystems.IsGroupSystem S]
    [∀ i, IsTopologicalGroup (S.X i)] :
    S.Morphism (abelianizationInverseSystem S) where
  map := fun i => TopologicalAbelianization.mk (S.X i)
  continuous_map := fun _ => continuous_quotient_mk'
  comm := by
    intro i j hij
    funext x
    rfl

The stagewise quotient maps assemble into a morphism from an inverse system to its stagewise topological abelianization.

noncomputable def closedCommutatorCompatibleClosedNormalSubgroups
    {I : Type u} [Preorder I]
    (S : InverseSystems.InverseSystem (I := I))
    [∀ i, Group (S.X i)] [InverseSystems.IsGroupSystem S]
    [∀ i, IsTopologicalGroup (S.X i)] :
    S.CompatibleClosedNormalSubgroups where
  N := fun i => Subgroup.closedCommutator (S.X i)
  normal := fun i => by infer_instance
  closed := fun i => Subgroup.isClosed_closedCommutator (S.X i)
  map_le := by
    intro i j hij x hx
    let f : S.X j →ₜ* S.X i :=
      { toMonoidHom := S.transitionHom hij
        continuous_toFun :=
          InverseSystems.InverseSystem.continuous_transitionHom (S := S) hij }
    have hxmap :
        S.transitionHom hij x ∈
          (Subgroup.closedCommutator (S.X j)).map f.toMonoidHom :=
      Subgroup.mem_map_of_mem f.toMonoidHom hx
    exact Subgroup.closedCommutator_map_le f hxmap

The stagewise closed commutator subgroups form a compatible closed-normal family in any group-valued inverse system of topological groups.

noncomputable def topologicalAbelianizationInverseLimitComparison
    {I : Type u} [Preorder I]
    (S : InverseSystems.InverseSystem (I := I))
    [∀ i, Group (S.X i)] [InverseSystems.IsGroupSystem S]
    [∀ i, IsTopologicalGroup (S.X i)] :
    TopologicalAbelianization S.inverseLimit →ₜ*
      (abelianizationInverseSystem S).inverseLimit := by
  let T := abelianizationInverseSystem S
  let ψ : ∀ i, TopologicalAbelianization S.inverseLimit →ₜ* T.X i := fun i =>
    TopologicalAbelianization.map
      { toMonoidHom :=
          { toFun := S.projection i
            map_one' := rfl
            map_mul' := by intro x y; rfl }
        continuous_toFun := S.continuous_projection i }
  let ψFun : ∀ i, TopologicalAbelianization S.inverseLimit → T.X i := fun i => ψ i
  have hψ : ∀ i, Continuous (ψFun i) := by
    intro i
    exact (ψ i).continuous_toFun
  have hcompat : T.CompatibleMaps ψFun := by
    intro i j hij
    funext x
    refine Quotient.inductionOn' x ?_
    intro a
    change
      QuotientGroup.mk'
          (Subgroup.topologicalClosure (commutator (S.X i)))
          (S.map hij (S.projection j a)) =
        QuotientGroup.mk'
          (Subgroup.topologicalClosure (commutator (S.X i)))
          (S.projection i a)
    simpa using congrArg
      (QuotientGroup.mk' (Subgroup.topologicalClosure (commutator (S.X i))))
      (S.projection_compatible a i j hij)
  refine
    { toMonoidHom :=
        { toFun := T.inverseLimitLift ψFun hcompat
          map_one' := by
            apply T.ext
            intro i
            change ψFun i 1 = 1
            exact (ψ i).map_one
          map_mul' := by
            intro x y
            apply T.ext
            intro i
            change ψFun i (x * y) = ψFun i x * ψFun i y
            exact (ψ i).map_mul x y }
      continuous_toFun := T.continuous_inverseLimitLift ψFun hψ hcompat }

The canonical comparison map from the abelianization of an inverse limit to the inverse limit of the stagewise abelianizations.

@[simp 900] theorem π_topologicalAbelianizationInverseLimitComparison
    {I : Type u} [Preorder I]
    (S : InverseSystems.InverseSystem (I := I))
    [∀ i, Group (S.X i)] [InverseSystems.IsGroupSystem S]
    [∀ i, IsTopologicalGroup (S.X i)]
    (i : I) :
    (abelianizationInverseSystem S).projection i ∘
        topologicalAbelianizationInverseLimitComparison S =
      TopologicalAbelianization.map
        { toMonoidHom :=
            { toFun := S.projection i
              map_one' := rfl
              map_mul' := by intro x y; rfl }
          continuous_toFun := S.continuous_projection i }

The projection from the topological abelianization inverse-limit comparison to a finite stage.

Show proof
@[simp 900] theorem π_topologicalAbelianizationInverseLimitComparison_mk
    {I : Type u} [Preorder I]
    (S : InverseSystems.InverseSystem (I := I))
    [∀ i, Group (S.X i)] [InverseSystems.IsGroupSystem S]
    [∀ i, IsTopologicalGroup (S.X i)]
    (i : I) (x : S.inverseLimit) :
    (abelianizationInverseSystem S).projection i
        (topologicalAbelianizationInverseLimitComparison S
          (QuotientGroup.mk' (Subgroup.topologicalClosure (commutator S.inverseLimit)) x)) =
      QuotientGroup.mk' (Subgroup.topologicalClosure (commutator (S.X i))) (S.projection i x)

The finite-stage projection of the topological abelianization comparison has the stated value on representatives.

Show proof
@[simp 900] theorem limMap_toAbelianizationInverseSystem_apply
    {I : Type u} [Preorder I]
    (S : InverseSystems.InverseSystem (I := I))
    [∀ i, Group (S.X i)] [InverseSystems.IsGroupSystem S]
    [∀ i, IsTopologicalGroup (S.X i)]
    (x : S.inverseLimit) :
    S.limMap (toAbelianizationInverseSystem S) x =
      topologicalAbelianizationInverseLimitComparison S
        (TopologicalAbelianization.mk S.inverseLimit x)

The inverse-limit map induced by stagewise abelianization factors as the limit quotient map followed by the abelianization comparison map.

Show proof
private theorem inj_topologicalAbelianizationInverseLimitComparison_of_profinite_inverse_system
    {I : Type u} [Preorder I] [Nonempty I]
    (S : InverseSystems.InverseSystem (I := I))
    [∀ i, Group (S.X i)] [InverseSystems.IsGroupSystem S]
    [∀ i, IsTopologicalGroup (S.X i)]
    [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
    [∀ i, TotallyDisconnectedSpace (S.X i)]
    (hdir : Directed (· ≤ ·) (id : I → I)) :
    Function.Injective (topologicalAbelianizationInverseLimitComparison S)

Proof-level injectivity of the canonical comparison map, used to build the continuous equivalence. The main formulation is \(injective_topologicalAbelianizationInverseLimitComparison\).

Show proof
theorem mem_closedCommutator_inverseLimit_iff
      {I : Type u} [Preorder I] [Nonempty I]
      (S : InverseSystems.InverseSystem (I := I))
      [∀ i, Group (S.X i)] [InverseSystems.IsGroupSystem S]
      [∀ i, IsTopologicalGroup (S.X i)]
      [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
      [∀ i, TotallyDisconnectedSpace (S.X i)]
      (hdir : Directed (· ≤ ·) (id : I → I)) {x : S.inverseLimit} :
      x ∈ Subgroup.closedCommutator S.inverseLimit ↔
        ∀ i, S.projection i x ∈ Subgroup.closedCommutator (S.X i)

Membership in the inverse-limit closed commutator subgroup is equivalent to the displayed coordinate condition.

Show proof
theorem closedCommutator_inverseLimit_eq_iInf_comap
      {I : Type u} [Preorder I] [Nonempty I]
      (S : InverseSystems.InverseSystem (I := I))
      [∀ i, Group (S.X i)] [InverseSystems.IsGroupSystem S]
      [∀ i, IsTopologicalGroup (S.X i)]
      [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
      [∀ i, TotallyDisconnectedSpace (S.X i)]
      (hdir : Directed (· ≤ ·) (id : I → I)) :
      Subgroup.closedCommutator S.inverseLimit =
        ⨅ i, (Subgroup.closedCommutator (S.X i)).comap
          ({ toFun := S.projection i
             map_one' := rfl
             map_mul' := by intro x y; rfl } : S.inverseLimit →* S.X i)

The closed commutator subgroup of a profinite inverse limit is the infimum of the pullbacks of the stagewise closed commutator subgroups.

Show proof
theorem closedCommutatorCompatibleClosedNormalSubgroups_inverseLimitKernel
      {I : Type u} [Preorder I] [Nonempty I]
      (S : InverseSystems.InverseSystem (I := I))
      [∀ i, Group (S.X i)] [InverseSystems.IsGroupSystem S]
      [∀ i, IsTopologicalGroup (S.X i)]
      [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
      [∀ i, TotallyDisconnectedSpace (S.X i)]
      (hdir : Directed (· ≤ ·) (id : I → I)) :
      (closedCommutatorCompatibleClosedNormalSubgroups S).inverseLimitKernel =
        Subgroup.closedCommutator S.inverseLimit

For the closed-commutator compatible family, the generic quotient-limit kernel is the closed commutator subgroup of the inverse limit.

Show proof
noncomputable def closedCommutatorQuotientInverseLimitContinuousMulEquiv
    {I : Type u} [Preorder I] [Nonempty I]
    (S : InverseSystems.InverseSystem (I := I))
    [∀ i, Group (S.X i)] [InverseSystems.IsGroupSystem S]
    [∀ i, IsTopologicalGroup (S.X i)]
    [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
    [∀ i, TotallyDisconnectedSpace (S.X i)]
    (hdir : Directed (· ≤ ·) (id : I → I)) :
    TopologicalAbelianization S.inverseLimit ≃ₜ*
      (closedCommutatorCompatibleClosedNormalSubgroups S).quotientInverseSystem.inverseLimit := by
  let Q := closedCommutatorCompatibleClosedNormalSubgroups S
  have hkernel :
      (Subgroup.closedCommutator S.inverseLimit).map
          (ContinuousMulEquiv.refl S.inverseLimit).toMulEquiv.toMonoidHom =
        Q.inverseLimitKernel := by
    rw [closedCommutatorCompatibleClosedNormalSubgroups_inverseLimitKernel (S := S) hdir]
    ext x
    constructor
    · intro hx
      rcases hx with ⟨y, hy, hyx⟩
      simpa using hyx ▸ hy
    · intro hx
      exact ⟨x, hx, rflexact (QuotientGroup.congrₜ
    (Subgroup.closedCommutator S.inverseLimit) Q.inverseLimitKernel
    (ContinuousMulEquiv.refl S.inverseLimit) hkernel).trans
      (Q.quotientInverseLimitContinuousMulEquiv hdir)

The generic quotient inverse-limit theorem specialized to the closed commutator family.

@[simp 900] theorem projection_closedCommutatorQuotientInverseLimitContinuousMulEquiv_mk
    {I : Type u} [Preorder I] [Nonempty I]
    (S : InverseSystems.InverseSystem (I := I))
    [∀ i, Group (S.X i)] [InverseSystems.IsGroupSystem S]
    [∀ i, IsTopologicalGroup (S.X i)]
    [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
    [∀ i, TotallyDisconnectedSpace (S.X i)]
    (hdir : Directed (· ≤ ·) (id : I → I))
    (i : I) (x : S.inverseLimit) :
    (closedCommutatorCompatibleClosedNormalSubgroups S).quotientInverseSystem.projection i
        (closedCommutatorQuotientInverseLimitContinuousMulEquiv (S := S) hdir
          (QuotientGroup.mk' (Subgroup.closedCommutator S.inverseLimit) x)) =
      QuotientGroup.mk'
        ((closedCommutatorCompatibleClosedNormalSubgroups S).N i)
        (S.projection i x)

The projection closed commutator quotient inverse limit continuous multiplicative equivalence mk is compatible with the profinite topology and gives the continuous map or equivalence determined by the finite-quotient data.

Show proof
noncomputable def topologicalAbelianizationInverseLimitContinuousMulEquiv
    {I : Type u} [Preorder I] [Nonempty I]
    (S : InverseSystems.InverseSystem (I := I))
    [∀ i, Group (S.X i)] [InverseSystems.IsGroupSystem S]
    [∀ i, IsTopologicalGroup (S.X i)]
    [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
    [∀ i, TotallyDisconnectedSpace (S.X i)]
    (hdir : Directed (· ≤ ·) (id : I → I)) :
    TopologicalAbelianization S.inverseLimit ≃ₜ*
      (abelianizationInverseSystem S).inverseLimit := by
  let Q := closedCommutatorCompatibleClosedNormalSubgroups S
  let E : InverseSystems.InverseSystem.InverseSystemIso Q.quotientInverseSystem
      (abelianizationInverseSystem S) :=
    { stageEquiv := fun _ => ContinuousMulEquiv.refl _
      comm := by intro i j hij x; rfl }
  exact (closedCommutatorQuotientInverseLimitContinuousMulEquiv (S := S) hdir).trans
    E.inverseLimitContinuousMulEquiv

Topological abelianization commutes with profinite inverse limits as a topological-group isomorphism.

@[simp 900] theorem topologicalAbelianizationInverseLimitContinuousMulEquiv_apply
    {I : Type u} [Preorder I] [Nonempty I]
    (S : InverseSystems.InverseSystem (I := I))
    [∀ i, Group (S.X i)] [InverseSystems.IsGroupSystem S]
    [∀ i, IsTopologicalGroup (S.X i)]
    [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
    [∀ i, TotallyDisconnectedSpace (S.X i)]
    (hdir : Directed (· ≤ ·) (id : I → I))
    (x : TopologicalAbelianization S.inverseLimit) :
    topologicalAbelianizationInverseLimitContinuousMulEquiv (S := S) hdir x =
      topologicalAbelianizationInverseLimitComparison S x

The inverse-limit comparison for topological abelianization evaluates coordinatewise.

Show proof
theorem injective_topologicalAbelianizationInverseLimitComparison
    {I : Type u} [Preorder I] [Nonempty I]
    (S : InverseSystems.InverseSystem (I := I))
    [∀ i, Group (S.X i)] [InverseSystems.IsGroupSystem S]
    [∀ i, IsTopologicalGroup (S.X i)]
    [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
    [∀ i, TotallyDisconnectedSpace (S.X i)]
    (hdir : Directed (· ≤ ·) (id : I → I)) :
    Function.Injective (topologicalAbelianizationInverseLimitComparison S)

The inverse-limit comparison is injective, as a corollary of the continuous equivalence.

Show proof
theorem surjective_topologicalAbelianizationInverseLimitComparison
    {I : Type u} [Preorder I] [Nonempty I]
    (S : InverseSystems.InverseSystem (I := I))
    [∀ i, Group (S.X i)] [InverseSystems.IsGroupSystem S]
    [∀ i, IsTopologicalGroup (S.X i)]
    [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
    [∀ i, TotallyDisconnectedSpace (S.X i)]
    (hdir : Directed (· ≤ ·) (id : I → I)) :
    Function.Surjective (topologicalAbelianizationInverseLimitComparison S)

The inverse-limit comparison is surjective, as a corollary of the continuous equivalence.

Show proof