ProCGroups.ProC.OpenNormalSubgroups.LimitPresentation

5 Theorem | 2 Definition

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 openNormalSubgroupInClassMulEquivInverseLimit
    (hForm : FiniteGroupClass.Formation C) (hG : IsProCGroup C G) :
    G ≃ₜ* (openNormalSubgroupInClassSystem C G).inverseLimit := by
  let S := openNormalSubgroupInClassSystem C G
  letI : Nonempty (OpenNormalSubgroupInClass C G) := openNormalSubgroupInClass_nonempty hG
  letI : Nonempty (OrderDual (OpenNormalSubgroupInClass C G)) := inferInstance
  letI : CompactSpace G := IsProCGroup.compactSpace hG
  letI : T2Space G := IsProCGroup.t2Space hG
  letI : ∀ U : OrderDual (OpenNormalSubgroupInClass C G), Group (S.X U) := fun U => by
    dsimp [S, openNormalSubgroupInClassSystem]
    infer_instance
  letI : InverseSystems.IsGroupSystem S := by
    dsimp [S]
    infer_instance
  letI : ∀ U : OrderDual (OpenNormalSubgroupInClass C G), T2Space (S.X U) := fun U => by
    letI : DiscreteTopology (S.X U) := by
      dsimp [S, openNormalSubgroupInClassSystem]
      exact QuotientGroup.discreteTopology
        (openNormalSubgroup_isOpen (G := G) ((OrderDual.ofDual U).1 : OpenNormalSubgroup G))
    infer_instance
  letI : Group S.inverseLimit := by infer_instance
  letI : T2Space S.inverseLimit := S.t2Space_inverseLimit
  let φ : G →* S.inverseLimit :=
    { toFun := S.inverseLimitLift
        (fun U : OrderDual (OpenNormalSubgroupInClass C G) =>
          openNormalSubgroupInClassProj (C := C) (G := G) U)
        (openNormalSubgroupInClassProj_compatible (C := C) (G := G))
      map_one' := by
        apply S.ext
        intro i
        rfl
      map_mul' := by
        intro x y
        apply S.ext
        intro i
        rfl }
  have hφcont : Continuous φ :=
    S.continuous_inverseLimitLift
      (fun U : OrderDual (OpenNormalSubgroupInClass C G) =>
        openNormalSubgroupInClassProj (C := C) (G := G) U)
      (fun _ => continuous_quotient_mk')
      (openNormalSubgroupInClassProj_compatible (C := C) (G := G))
  have hφinj : Function.Injective φ := by
    intro x y hxy
    have hmem :
        x⁻¹ * y ∈ iInf (fun U : OpenNormalSubgroupInClass C G => (U.1 : Subgroup G)) := by
      rw [Subgroup.mem_iInf]
      intro U
      let i : OrderDual (OpenNormalSubgroupInClass C G) := OrderDual.toDual U
      have hi :
          openNormalSubgroupInClassProj (C := C) (G := G) i x =
            openNormalSubgroupInClassProj (C := C) (G := G) i y := by
        simpa [φ] using congrArg (fun z : S.inverseLimit => S.projection i z) hxy
      exact QuotientGroup.eq.1 (by
        simpa [openNormalSubgroupInClassProj] using hi)
    have hone : x⁻¹ * y = 1 := by
      have : x⁻¹ * y ∈ (⊥ : Subgroup G) := by
        simpa [hG.iInf_openNormalSubgroupInClass_eq_bot] using hmem
      simpa using this
    calc
      x = x * 1 := by simp only [mul_one]
      _ = x * (x⁻¹ * y) := by rw [hone]
      _ = y := by simp only [mul_inv_cancel_left]
  have hφsurj : Function.Surjective φ :=
    InverseSystems.InverseSystem.surjective_inverseLimitLift (S := S)
      (fun U : OrderDual (OpenNormalSubgroupInClass C G) =>
        openNormalSubgroupInClassProj (C := C) (G := G) U)
      (fun _ => continuous_quotient_mk')
      (openNormalSubgroupInClassProj_compatible (C := C) (G := G))
      (fun U => openNormalSubgroupInClassProj_surjective (C := C) (G := G) U)
      (directed_openNormalSubgroupInClass (C := C) (G := G) hForm)
  exact ContinuousMulEquiv.ofBijectiveCompactToT2 φ hφcont ⟨hφinj, hφsurj⟩

A pro-\(C\) group is canonically the inverse limit of its quotients by open normal subgroups whose quotients lie in \(C\).

@[simp] theorem openNormalSubgroupInClassMulEquivInverseLimit_projection
    (hForm : FiniteGroupClass.Formation C) (hG : IsProCGroup C G)
    (U : OrderDual (OpenNormalSubgroupInClass C G)) (g : G) :
    (openNormalSubgroupInClassSystem C G).projection U
        (openNormalSubgroupInClassMulEquivInverseLimit
          (C := C) (G := G) hForm hG g) =
      openNormalSubgroupInClassProj (C := C) (G := G) U g

Under the canonical equivalence from a pro-\(C\) group to the inverse limit of its open-normal \(C\)-quotients, the \(U\)-coordinate of an element is its quotient class modulo \(U\).

Show proof
theorem isomorphic_to_inverseLimit_finiteGroupsInClass
    (hForm : FiniteGroupClass.Formation C) (hG : IsProCGroup C G) :
    let S

A pro-\(C\) group is topologically isomorphic to an inverse limit of finite groups in \(C\), realized using the quotient system indexed by the open normal subgroups whose quotients lie in \(C\).

Show proof
def HasExactOpenNormalQuotientBasisInClass (C : FiniteGroupClass.{u})
    (G : Type u) [Group G] [TopologicalSpace G] : Prop :=
  CompactSpace G ∧
    ∃ ι : Type u, ∃ U : ι → OpenNormalSubgroup G,
      (∀ i, C (G ⧸ (U i : Subgroup G))) ∧
      (∀ W : Set G, IsOpen W → (1 : G) ∈ W →
        ∃ i, (((U i : Subgroup G) : Set G)) ⊆ W) ∧
      iInf (fun i => (U i : Subgroup G)) = (⊥ : Subgroup G)

Existence of an open-normal subgroup basis whose quotients lie in \(C\) and whose quotient presentations are exact.

theorem t2Space_of_exactOpenNormalQuotientBasisInClass
    (hC : HasExactOpenNormalQuotientBasisInClass C G) : T2Space G

An open-normal family with trivial intersection makes the group Hausdorff.

Show proof
theorem totallyDisconnectedSpace_of_exactOpenNormalQuotientBasisInClass
    (hC : HasExactOpenNormalQuotientBasisInClass C G) : TotallyDisconnectedSpace G

An open-normal family yields a clopen basis and hence total disconnectedness.

Show proof
theorem isProCGroup_of_hasExactOpenNormalQuotientBasisInClass
    (hC : HasExactOpenNormalQuotientBasisInClass C G) : IsProCGroup C G

An open-normal family with quotients in \(C\) implies the working notion of a pro-\(C\) group. This direction needs no formation closure because the chosen basis already supplies the required open-normal quotients in \(C\).

Show proof