ProCGroups.Order.Basic

24 Theorem | 9 Definition | 8 Instance

This module develops the maps induced by continuous homomorphisms. It organizes the relevant quotient pullbacks and finite-stage maps, then proves the compatibility statements needed for the completed construction.

import
Imported by

Declarations

instance instTopClosedSubgroup : Top (ClosedSubgroup G) :=
  ⟨{ toSubgroup := ⊤, isClosed' := isClosed_univ }⟩

Closed subgroups have a top element: the whole group.

instance instBotClosedSubgroup [T1Space G] : Bot (ClosedSubgroup G) :=
  ⟨{ toSubgroup := ⊥
     isClosed' := by
       change IsClosed ({(1 : G)} : Set G)
       exact isClosed_singleton }⟩

Closed subgroups have a bottom element: the trivial subgroup, closed in a \(T_1\) topological group.

noncomputable def map [CompactSpace G] [T2Space K] (H : ClosedSubgroup G)
    (φ : G →* K) (hφ : Continuous φ) : ClosedSubgroup K where
  toSubgroup := (H : Subgroup G).map φ
  isClosed' := by
    let f : H → K := fun x => φ x
    have hcont : Continuous f := hφ.comp continuous_subtype_val
    have hcompact : IsCompact (Set.range f) := isCompact_range hcont
    have hEq : Set.range f = ((H : Subgroup G).map φ : Set K) := by
      ext y
      constructor
      · rintro ⟨x, rflexact (Subgroup.mem_map).2 ⟨x.1, x.2, rfl⟩
      · intro hy
        rcases (Subgroup.mem_map).1 hy with ⟨x, hx, rflexact ⟨⟨x, hx⟩, rfl⟩
    simpa [hEq] using hcompact.isClosed

The image of a closed subgroup under a continuous homomorphism from a compact domain into a Hausdorff codomain.

theorem toSubgroup_map [CompactSpace G] [T2Space K] (H : ClosedSubgroup G)
    (φ : G →* K) (hφ : Continuous φ) :
    ((map H φ hφ : ClosedSubgroup K) : Subgroup K) = (H : Subgroup G).map φ

The underlying subgroup of the image closed subgroup is the image of the underlying subgroup.

Show proof
theorem mem_map [CompactSpace G] [T2Space K] {H : ClosedSubgroup G}
    {φ : G →* K} (hφ : Continuous φ) {y : K} :
    y ∈ map H φ hφ ↔ ∃ x ∈ (H : Subgroup G), φ x = y

Membership in the image closed subgroup is membership in the subgroup map.

Show proof
theorem map_id [CompactSpace G] [T2Space G] (H : ClosedSubgroup G) :
    map H (MonoidHom.id G) continuous_id = H

Mapping a closed subgroup along the identity homomorphism gives the same closed subgroup.

Show proof
theorem map_comp
    {L : Type w} [Group L] [TopologicalSpace L]
    [CompactSpace G] [T2Space K] [CompactSpace K] [T2Space L]
    (H : ClosedSubgroup G) (φ : G →* K) (hφ : Continuous φ)
    (ψ : K →* L) (hψ : Continuous ψ) :
    map (map H φ hφ) ψ hψ = map H (ψ.comp φ) (hψ.comp hφ)

Images of closed subgroups compose under composition of continuous homomorphisms.

Show proof
theorem map_mono [CompactSpace G] [T2Space K] {H H' : ClosedSubgroup G}
    (hHH' : (H : Subgroup G) ≤ (H' : Subgroup G))
    (φ : G →* K) (hφ : Continuous φ) :
    ((map H φ hφ : ClosedSubgroup K) : Subgroup K) ≤
      ((map H' φ hφ : ClosedSubgroup K) : Subgroup K)

The image construction on closed subgroups is monotone.

Show proof
theorem map_bot [CompactSpace G] [T1Space G] [T2Space K]
    (φ : G →* K) (hφ : Continuous φ) :
    map (⊥ : ClosedSubgroup G) φ hφ = (⊥ : ClosedSubgroup K)

The image of the bottom closed subgroup is the bottom closed subgroup.

Show proof
theorem map_eq_top_of_surjective [CompactSpace G] [T2Space K] (H : ClosedSubgroup G)
    (φ : G →* K) (hφ : Continuous φ)
    (hφH : ∀ y : K, ∃ x ∈ (H : Subgroup G), φ x = y) :
    map H φ hφ = (⊤ : ClosedSubgroup K)

The image of the top closed subgroup under a surjective homomorphism is top.

Show proof
theorem map_le_iff_le_comap [CompactSpace G] [T2Space K]
    {H : ClosedSubgroup G} {L : ClosedSubgroup K}
    {φ : G →* K} (hφ : Continuous φ) :
    ((map H φ hφ : ClosedSubgroup K) : Subgroup K) ≤ (L : Subgroup K) ↔
      (H : Subgroup G) ≤ Subgroup.comap φ (L : Subgroup K)

Image containment for closed subgroups is equivalent to containment in the comap.

Show proof
def IsSurjectiveInverseSystem {I : Type v} [Preorder I]
    (S : ProCGroups.InverseSystems.InverseSystem (I := I)) : Prop :=
  ∀ ⦃i j : I⦄ (hij : i ≤ j), Function.Surjective (S.map hij)

The surjectivity hypothesis for transition maps in a group-valued inverse system.

noncomputable def inverseLimitProjectionImage
    {I : Type v} [Preorder I]
    (S : ProCGroups.InverseSystems.InverseSystem (I := I))
    [∀ i, Group (S.X i)] [ProCGroups.InverseSystems.IsGroupSystem S]
    [∀ i, TopologicalSpace (S.X i)] [∀ i, T2Space (S.X i)]
    [CompactSpace S.inverseLimit]
    (H : ClosedSubgroup S.inverseLimit) (i : I) : ClosedSubgroup (S.X i) :=
  let πi : S.inverseLimit →* S.X i := {
    toFun := fun x => S.projection i x
    map_one' := rfl
    map_mul' := by
      intro x y
      rfl
  }
  have hπi : Continuous (fun x : S.inverseLimit => S.projection i x) := by
    exact (continuous_apply i).comp continuous_subtype_val
  ClosedSubgroup.map H πi hπi

The image of a closed subgroup under a projection from a group-valued inverse limit.

noncomputable def quotientImage [CompactSpace G] (H : ClosedSubgroup G)
    (U : OpenNormalSubgroup G) : ClosedSubgroup (G ⧸ (U : Subgroup G)) :=
  ClosedSubgroup.map H (QuotientGroup.mk' (U : Subgroup G)) continuous_quotient_mk'

The image of a closed subgroup in an open-normal finite quotient.

theorem toSubgroup_quotientImage [CompactSpace G] (H : ClosedSubgroup G)
    (U : OpenNormalSubgroup G) :
    ((quotientImage (G := G) H U : ClosedSubgroup (G ⧸ (U : Subgroup G))) :
      Subgroup (G ⧸ (U : Subgroup G))) =
        (H : Subgroup G).map (QuotientGroup.mk' (U : Subgroup G))

The subgroup underlying a quotient image is the image of the closed subgroup in the quotient.

Show proof
theorem mem_quotientImage [CompactSpace G] {H : ClosedSubgroup G}
    {U : OpenNormalSubgroup G} {y : G ⧸ (U : Subgroup G)} :
    y ∈ quotientImage (G := G) H U ↔
      ∃ x ∈ (H : Subgroup G), QuotientGroup.mk' (U : Subgroup G) x = y

Membership in a quotient image is membership in the image of the underlying closed subgroup.

Show proof
theorem mem_closedSubgroup_iff_forall_quotientImage_mem [CompactSpace G]
    (hG : IsProfiniteGroup G) {H : ClosedSubgroup G} {x : G} :
    x ∈ H ↔
      ∀ U : OpenNormalSubgroup G,
        OpenNormalSubgroup.quotientProj U x ∈
          (quotientImage (G := G) H U : Subgroup (G ⧸ (U : Subgroup G)))

Membership in a closed subgroup of a profinite group can be checked after all open-normal finite quotients.

Show proof
theorem closedSubgroup_le_iff_forall_quotientImages_le [CompactSpace G]
    (hG : IsProfiniteGroup G) {H K : ClosedSubgroup G} :
    (H : Subgroup G) ≤ (K : Subgroup G) ↔
      ∀ U : OpenNormalSubgroup G,
        (quotientImage (G := G) H U : Subgroup (G ⧸ (U : Subgroup G))) ≤
          (quotientImage (G := G) K U : Subgroup (G ⧸ (U : Subgroup G)))

Inclusion of closed subgroups of a profinite group can be checked on all open-normal finite quotients.

Show proof
theorem closedSubgroup_eq_of_quotientImages_eq [CompactSpace G]
    (hG : IsProfiniteGroup G) {H K : ClosedSubgroup G}
    (hHK : ∀ U : OpenNormalSubgroup G,
      quotientImage (G := G) H U = quotientImage (G := G) K U) :
    H = K

Two closed subgroups are equal if their images agree in every finite quotient.

Show proof
instance instTopologicalSpaceXCompat (i : I) :
    TopologicalSpace (S.X i) :=
  S.topologicalSpace i

The constructed object carries the topological space structure inherited from its construction.

instance instTopologicalSpaceXCompatFun :
    ∀ i, TopologicalSpace (S.X i) :=
  S.topologicalSpace

The constructed object carries the topological space structure inherited from its construction.

instance instCompactSpaceXCompatFun : ∀ i, CompactSpace (S.X i) := by
  intro i
  infer_instance

The constructed object carries the compact space structure inherited from its profinite construction.

instance instT2SpaceXCompatFun : ∀ i, T2Space (S.X i) := by
  intro i
  infer_instance

The constructed object is Hausdorff, with its \(T_2\) structure inherited from the profinite construction.

def inverseSystemStageHom {i j : I} (hij : i ≤ j) : S.X j →* S.X i where
  toFun := S.map hij
  map_one' := ProCGroups.InverseSystems.IsGroupSystem.map_one (S := S) hij
  map_mul' := ProCGroups.InverseSystems.IsGroupSystem.map_mul (S := S) hij

The transition map of a group-valued inverse system is viewed as a homomorphism.

theorem inverseSystemStageHom_continuous {i j : I} (hij : i ≤ j) :
    Continuous (inverseSystemStageHom (S := S) hij)

The stage homomorphism associated to a group-valued inverse system is continuous.

Show proof
def compatibleClosedSubgroupSystem
    (L : ∀ i, ClosedSubgroup (S.X i))
    (hcompat : ∀ {i j : I} (hij : i ≤ j),
      ((ClosedSubgroup.map (L j) (inverseSystemStageHom (S := S) hij)
          (inverseSystemStageHom_continuous (S := S) hij) :
          ClosedSubgroup (S.X i)) : Subgroup (S.X i)) =
        (L i : Subgroup (S.X i))) :
    ProCGroups.InverseSystems.InverseSystem (I := I) where
  X := fun i => L i
  topologicalSpace := fun i => inferInstance
  map := fun {i j} hij x =>
    ⟨S.map hij x.1, by
      have hx :
          S.map hij x.1 ∈
            ((ClosedSubgroup.map (L j) (inverseSystemStageHom (S := S) hij)
                (inverseSystemStageHom_continuous (S := S) hij) :
                  ClosedSubgroup (S.X i)) : Subgroup (S.X i)) := by
        exact (Subgroup.mem_map).2 ⟨x.1, x.2, rflrw [hcompat hij] at hx
      exact hx⟩
  continuous_map := fun {i j} hij =>
    Continuous.subtype_mk
      ((inverseSystemStageHom_continuous (S := S) hij).comp continuous_subtype_val) (fun x => by
      have hx :
          S.map hij x.1 ∈
            ((ClosedSubgroup.map (L j) (inverseSystemStageHom (S := S) hij)
                (inverseSystemStageHom_continuous (S := S) hij) :
                  ClosedSubgroup (S.X i)) : Subgroup (S.X i)) := by
        exact (Subgroup.mem_map).2 ⟨x.1, x.2, rflrw [hcompat hij] at hx
      exact hx)
  map_id := fun i => by
    funext x
    apply Subtype.ext
    simp only [InverseSystem.map_id_apply, id_eq]
  map_comp := fun {i j k} hij hjk => by
    funext x
    apply Subtype.ext
    simp only [Function.comp_apply, InverseSystem.map_comp_apply]

The inverse system obtained by restricting an ambient inverse system to a compatible family of closed subgroups.

instance compatibleClosedSubgroupSystem_group
    (L : ∀ i, ClosedSubgroup (S.X i))
    (hcompat : ∀ {i j : I} (hij : i ≤ j),
      ((ClosedSubgroup.map (L j) (inverseSystemStageHom (S := S) hij)
          (inverseSystemStageHom_continuous (S := S) hij) :
          ClosedSubgroup (S.X i)) : Subgroup (S.X i)) =
        (L i : Subgroup (S.X i)))
    (i : I) :
    Group ((compatibleClosedSubgroupSystem (S := S) L hcompat).X i) := by
  dsimp [compatibleClosedSubgroupSystem]
  infer_instance

Each stage of a compatible closed-subgroup system is a group.

instance compatibleClosedSubgroupSystem_isGroupSystem
    (L : ∀ i, ClosedSubgroup (S.X i))
    (hcompat : ∀ {i j : I} (hij : i ≤ j),
      ((ClosedSubgroup.map (L j) (inverseSystemStageHom (S := S) hij)
          (inverseSystemStageHom_continuous (S := S) hij) :
          ClosedSubgroup (S.X i)) : Subgroup (S.X i)) =
        (L i : Subgroup (S.X i))) :
    ProCGroups.InverseSystems.IsGroupSystem (compatibleClosedSubgroupSystem (S := S) L hcompat) where
  map_one := by
    intro i j hij
    apply Subtype.ext
    simpa [compatibleClosedSubgroupSystem, inverseSystemStageHom] using
      (ProCGroups.InverseSystems.IsGroupSystem.map_one (S := S) hij)
  map_mul := by
    intro i j hij x y
    apply Subtype.ext
    simpa [compatibleClosedSubgroupSystem, inverseSystemStageHom] using
      (ProCGroups.InverseSystems.IsGroupSystem.map_mul (S := S) hij x.1 y.1)
  map_inv := by
    intro i j hij x
    apply Subtype.ext
    simpa [compatibleClosedSubgroupSystem, inverseSystemStageHom] using
      (ProCGroups.InverseSystems.IsGroupSystem.map_inv (S := S) hij x.1)

A compatible closed-subgroup system is a group-valued inverse system.

def compatibleClosedSubgroupInclusion
    (L : ∀ i, ClosedSubgroup (S.X i))
    (hcompat : ∀ {i j : I} (hij : i ≤ j),
      ((ClosedSubgroup.map (L j) (inverseSystemStageHom (S := S) hij)
          (inverseSystemStageHom_continuous (S := S) hij) :
          ClosedSubgroup (S.X i)) : Subgroup (S.X i)) =
        (L i : Subgroup (S.X i))) :
    (compatibleClosedSubgroupSystem (S := S) L hcompat).Morphism S where
  map := fun i => Subtype.val
  continuous_map := fun i => by
    dsimp [compatibleClosedSubgroupSystem]
    exact continuous_subtype_val
  comm := fun {i j} hij => by
    funext x
    rfl

The canonical coordinatewise inclusion of a compatible subgroup system into the ambient system.

noncomputable def compatibleClosedSubgroupLimHom
    (L : ∀ i, ClosedSubgroup (S.X i))
    (hcompat : ∀ {i j : I} (hij : i ≤ j),
      ((ClosedSubgroup.map (L j) (inverseSystemStageHom (S := S) hij)
          (inverseSystemStageHom_continuous (S := S) hij) :
          ClosedSubgroup (S.X i)) : Subgroup (S.X i)) =
        (L i : Subgroup (S.X i))) :
    (compatibleClosedSubgroupSystem (S := S) L hcompat).inverseLimit →* S.inverseLimit where
  toFun :=
    (compatibleClosedSubgroupSystem (S := S) L hcompat).limMap
      (compatibleClosedSubgroupInclusion (S := S) L hcompat)
  map_one' := by
    apply S.ext
    intro i
    rfl
  map_mul' := by
    intro x y
    apply S.ext
    intro i
    rfl

The induced homomorphism from the inverse limit of a compatible subgroup family into the ambient inverse limit.

noncomputable def closedSubgroupFromCompatibleFamily
    (L : ∀ i, ClosedSubgroup (S.X i))
    (hcompat : ∀ {i j : I} (hij : i ≤ j),
      ((ClosedSubgroup.map (L j) (inverseSystemStageHom (S := S) hij)
          (inverseSystemStageHom_continuous (S := S) hij) :
          ClosedSubgroup (S.X i)) : Subgroup (S.X i)) =
        (L i : Subgroup (S.X i))) :
    ClosedSubgroup S.inverseLimit where
  toSubgroup := (compatibleClosedSubgroupLimHom (S := S) L hcompat).range
  isClosed' := by
    let T := compatibleClosedSubgroupSystem (S := S) L hcompat
    letI : ∀ i, TopologicalSpace (S.X i) := S.topologicalSpace
    letI : ∀ i, T2Space (S.X i) := instT2SpaceXCompatFun (S := S)
    letI : ∀ i, CompactSpace (T.X i) := fun i => by
      dsimp [T, compatibleClosedSubgroupSystem]
      infer_instance
    letI : ∀ i, T2Space (T.X i) := fun i => by
      dsimp [T, compatibleClosedSubgroupSystem]
      infer_instance
    letI : CompactSpace T.inverseLimit := inferInstance
    letI : T2Space S.inverseLimit := S.t2Space_inverseLimit
    let φ := compatibleClosedSubgroupLimHom (S := S) L hcompat
    have hφcont :
        Continuous (φ : T.inverseLimit → S.inverseLimit) := by
      change Continuous (T.limMap (compatibleClosedSubgroupInclusion (S := S) L hcompat))
      exact T.continuous_limMap (compatibleClosedSubgroupInclusion (S := S) L hcompat)
    simpa [φ] using (isCompact_range hφcont).isClosed

Closed subgroup of the ambient inverse limit obtained from a compatible family of closed subgroups with surjective transition maps.

theorem inverseLimitProjectionImage_closedSubgroupFromCompatibleFamily
    [CompactSpace S.inverseLimit]
    (hdir : Directed (· ≤ ·) (id : I → I))
    (L : ∀ i, ClosedSubgroup (S.X i))
    (hcompat : ∀ {i j : I} (hij : i ≤ j),
      ((ClosedSubgroup.map (L j) (inverseSystemStageHom (S := S) hij)
          (inverseSystemStageHom_continuous (S := S) hij) :
          ClosedSubgroup (S.X i)) : Subgroup (S.X i)) =
        (L i : Subgroup (S.X i))) (i : I) :
    inverseLimitProjectionImage S (closedSubgroupFromCompatibleFamily (S := S) L hcompat) i =
      L i

Projection images of a closed subgroup recovered from a compatible family match the given family.

Show proof
theorem map_inverseLimitProjectionImage
    [CompactSpace S.inverseLimit]
    (H : ClosedSubgroup S.inverseLimit) {i j : I} (hij : i ≤ j) :
    ((ClosedSubgroup.map (inverseLimitProjectionImage S H j) (inverseSystemStageHom (S := S) hij)
        (inverseSystemStageHom_continuous (S := S) hij) :
        ClosedSubgroup (S.X i)) : Subgroup (S.X i)) =
      (inverseLimitProjectionImage S H i : Subgroup (S.X i))

Projection images commute with mapping a closed subgroup along a compatible inverse-limit morphism.

Show proof
theorem map_inverseLimitProjectionImage_closed
    [CompactSpace S.inverseLimit]
    (H : ClosedSubgroup S.inverseLimit) {i j : I} (hij : i ≤ j) :
    ClosedSubgroup.map (inverseLimitProjectionImage S H j)
        (inverseSystemStageHom (S := S) hij)
        (inverseSystemStageHom_continuous (S := S) hij) =
      inverseLimitProjectionImage S H i

The stage-transition compatibility of projection images, repackaged as an equality of closed subgroups.

Show proof
theorem inverseLimitProjectionImage_bot
    [CompactSpace S.inverseLimit] (i : I) :
    inverseLimitProjectionImage S (⊥ : ClosedSubgroup S.inverseLimit) i = ⊥

The projection image of the trivial closed subgroup is trivial.

Show proof
theorem inverseLimitProjectionImage_top
    [CompactSpace S.inverseLimit]
    (hdir : Directed (· ≤ ·) (id : I → I))
    (hsurj : IsSurjectiveInverseSystem S) (i : I) :
    inverseLimitProjectionImage S (⊤ : ClosedSubgroup S.inverseLimit) i = ⊤

Under surjective transition maps, the projection image of the whole inverse limit is the whole stage group.

Show proof
theorem inverseLimitProjectionImage_mono
    [CompactSpace S.inverseLimit]
    {H K : ClosedSubgroup S.inverseLimit}
    (hHK : (H : Subgroup S.inverseLimit) ≤ K) (i : I) :
    (inverseLimitProjectionImage S H i : Subgroup (S.X i)) ≤
      (inverseLimitProjectionImage S K i : Subgroup (S.X i))

Projection images are monotone in the closed subgroup argument.

Show proof
theorem closedSubgroup_le_of_projectionImages_le
    [Nonempty I] [CompactSpace S.inverseLimit]
    [TotallyDisconnectedSpace S.inverseLimit] [IsTopologicalGroup S.inverseLimit]
    [∀ i, TotallyDisconnectedSpace (S.X i)]
    (hdir : Directed (· ≤ ·) (id : I → I))
    (H K : ClosedSubgroup S.inverseLimit)
    (hproj : ∀ i,
      (inverseLimitProjectionImage S H i : Subgroup (S.X i)) ≤
        (inverseLimitProjectionImage S K i : Subgroup (S.X i))) :
    (H : Subgroup S.inverseLimit) ≤ (K : Subgroup S.inverseLimit)

Closed subgroups of an inverse limit are determined by their stagewise projection images.

Show proof
theorem closedSubgroup_eq_of_projectionImages_eq
    [Nonempty I] [CompactSpace S.inverseLimit]
    [TotallyDisconnectedSpace S.inverseLimit] [IsTopologicalGroup S.inverseLimit]
    [∀ i, TotallyDisconnectedSpace (S.X i)]
    (hdir : Directed (· ≤ ·) (id : I → I))
    (H K : ClosedSubgroup S.inverseLimit)
    (hproj : ∀ i, inverseLimitProjectionImage S H i = inverseLimitProjectionImage S K i) :
    H = K

Stagewise equality of projection images determines a closed subgroup of an inverse limit.

Show proof
theorem closedSubgroup_eq_bot_of_projectionImages_eq_bot
    [Nonempty I] [CompactSpace S.inverseLimit]
    [TotallyDisconnectedSpace S.inverseLimit] [IsTopologicalGroup S.inverseLimit]
    [∀ i, TotallyDisconnectedSpace (S.X i)]
    (hdir : Directed (· ≤ ·) (id : I → I))
    (H : ClosedSubgroup S.inverseLimit)
    (hproj : ∀ i, inverseLimitProjectionImage S H i = ⊥) :
    H = ⊥

If every stagewise projection image is trivial, then the closed subgroup itself is trivial.

Show proof
theorem closedSubgroup_eq_top_of_projectionImages_eq_top
    [Nonempty I] [CompactSpace S.inverseLimit]
    [TotallyDisconnectedSpace S.inverseLimit] [IsTopologicalGroup S.inverseLimit]
    [∀ i, TotallyDisconnectedSpace (S.X i)]
    (hdir : Directed (· ≤ ·) (id : I → I))
    (hsurj : IsSurjectiveInverseSystem S)
    (H : ClosedSubgroup S.inverseLimit)
    (hproj : ∀ i, inverseLimitProjectionImage S H i = ⊤) :
    H = ⊤

If every stagewise projection image is the whole stage group, then the closed subgroup itself is the whole inverse limit.

Show proof