Module

Basic.lean

Nyll.ProCGroups.Order.Basic
37 declarations indexed from sourceView source ↗

The order structure on closed subgroups

This module equips closed subgroups with basic lattice operations, develops continuous images and preimages, and relates order-theoretic constructions to finite quotients of profinite groups.

Declarations

ProCGroups.Order.ClosedSubgroup.instTopClosedSubgroup

Closed subgroups have a top element: the whole group.

Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
namespace ClosedSubgroup
variable {G : Type u} [Group G] [TopologicalSpace G]
variable {K : Type v} [Group K] [TopologicalSpace K] [IsTopologicalGroup K]
instance instTopClosedSubgroup : Top (ClosedSubgroup G)
ProCGroups.Order.ClosedSubgroup.instBotClosedSubgroup

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

Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
namespace ClosedSubgroup
variable {G : Type u} [Group G] [TopologicalSpace G]
variable {K : Type v} [Group K] [TopologicalSpace K] [IsTopologicalGroup K]
instance instBotClosedSubgroup [T1Space G] : Bot (ClosedSubgroup G)
ProCGroups.Order.ClosedSubgroup.map

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

Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
namespace ClosedSubgroup
variable {G : Type u} [Group G] [TopologicalSpace G]
variable {K : Type v} [Group K] [TopologicalSpace K] [IsTopologicalGroup K]
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, rfl⟩
        exact (Subgroup.mem_map).2 ⟨x.1, x.2, rfl⟩
      · intro hy
        rcases (Subgroup.mem_map).1 hy with ⟨x, hx, rfl⟩
        exact ⟨⟨x, hx⟩, rfl⟩
    change IsClosed (((H : Subgroup G).map φ : Subgroup K) : Set K)
    rw [← hEq]
    exact hcompact.isClosed
ProCGroups.Order.ClosedSubgroup.toSubgroup_map

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

Source context 10 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
namespace ClosedSubgroup
variable {G : Type u} [Group G] [TopologicalSpace G]
variable {K : Type v} [Group K] [TopologicalSpace K] [IsTopologicalGroup K]
omit [IsTopologicalGroup K] in
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 φ
ProCGroups.Order.ClosedSubgroup.mem_map

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

Source context 10 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
namespace ClosedSubgroup
variable {G : Type u} [Group G] [TopologicalSpace G]
variable {K : Type v} [Group K] [TopologicalSpace K] [IsTopologicalGroup K]
omit [IsTopologicalGroup K] in
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
ProCGroups.Order.ClosedSubgroup.map_id

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

Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
namespace ClosedSubgroup
variable {G : Type u} [Group G] [TopologicalSpace G]
variable {K : Type v} [Group K] [TopologicalSpace K] [IsTopologicalGroup K]
theorem map_id [CompactSpace G] [T2Space G] (H : ClosedSubgroup G) :
    map H (MonoidHom.id G) continuous_id = H
ProCGroups.Order.ClosedSubgroup.map_comp

Images of closed subgroups compose under composition of continuous homomorphisms.

Source context 10 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
namespace ClosedSubgroup
variable {G : Type u} [Group G] [TopologicalSpace G]
variable {K : Type v} [Group K] [TopologicalSpace K] [IsTopologicalGroup K]
omit [IsTopologicalGroup K] in
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φ)
ProCGroups.Order.ClosedSubgroup.map_mono

The image construction on closed subgroups is monotone.

Source context 10 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
namespace ClosedSubgroup
variable {G : Type u} [Group G] [TopologicalSpace G]
variable {K : Type v} [Group K] [TopologicalSpace K] [IsTopologicalGroup K]
omit [IsTopologicalGroup K] in
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)
ProCGroups.Order.ClosedSubgroup.map_bot

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

Source context 10 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
namespace ClosedSubgroup
variable {G : Type u} [Group G] [TopologicalSpace G]
variable {K : Type v} [Group K] [TopologicalSpace K] [IsTopologicalGroup K]
omit [IsTopologicalGroup K] in
theorem map_bot [CompactSpace G] [T1Space G] [T2Space K]
    (φ : G →* K) (hφ : Continuous φ) :
    map (⊥ : ClosedSubgroup G) φ hφ = (⊥ : ClosedSubgroup K)
ProCGroups.Order.ClosedSubgroup.map_eq_top_of_surjective

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

Source context 10 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
namespace ClosedSubgroup
variable {G : Type u} [Group G] [TopologicalSpace G]
variable {K : Type v} [Group K] [TopologicalSpace K] [IsTopologicalGroup K]
omit [IsTopologicalGroup K] in
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)
ProCGroups.Order.ClosedSubgroup.map_le_iff_le_comap

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

Source context 10 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
namespace ClosedSubgroup
variable {G : Type u} [Group G] [TopologicalSpace G]
variable {K : Type v} [Group K] [TopologicalSpace K] [IsTopologicalGroup K]
omit [IsTopologicalGroup K] in
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)
ProCGroups.Order.IsSurjectiveInverseSystem

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

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
def IsSurjectiveInverseSystem {I : Type v} [Preorder I]
    (S : ProCGroups.InverseSystems.InverseSystem (I := I)) : Prop
ProCGroups.Order.inverseLimitProjectionImage

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

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
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)
ProCGroups.Order.quotientImage

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

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
section FiniteQuotientImages
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
def quotientImage [CompactSpace G] (H : ClosedSubgroup G)
    (U : OpenNormalSubgroup G) : ClosedSubgroup (G ⧸ (U : Subgroup G))
ProCGroups.Order.toSubgroup_quotientImage

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

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
section FiniteQuotientImages
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
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))
ProCGroups.Order.mem_quotientImage

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

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
section FiniteQuotientImages
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
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
ProCGroups.Order.mem_closedSubgroup_iff_forall_quotientImage_mem

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

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
section FiniteQuotientImages
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
theorem mem_closedSubgroup_iff_forall_quotientImage_mem
    [CompactSpace G] [TotallyDisconnectedSpace 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)))
ProCGroups.Order.closedSubgroup_le_iff_forall_quotientImages_le

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

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
section FiniteQuotientImages
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
theorem closedSubgroup_le_iff_forall_quotientImages_le
    [CompactSpace G] [TotallyDisconnectedSpace 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)))
ProCGroups.Order.closedSubgroup_eq_of_quotientImages_eq

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

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
section FiniteQuotientImages
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
theorem closedSubgroup_eq_of_quotientImages_eq
    [CompactSpace G] [TotallyDisconnectedSpace G]
    {H K : ClosedSubgroup G}
    (hHK : ∀ U : OpenNormalSubgroup G,
      quotientImage (G := G) H U = quotientImage (G := G) K U) :
    H = K
ProCGroups.Order.inverseSystemStageHom

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

Source context 13 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
section CompatibleClosedSubgroupFamilies
variable {I : Type v} [Preorder I]
variable (S : ProCGroups.InverseSystems.InverseSystem (I := I))
variable [∀ i, Group (S.X i)] [ProCGroups.InverseSystems.IsGroupSystem S]
variable [∀ i, IsTopologicalGroup (S.X i)]
variable [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
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
ProCGroups.Order.inverseSystemStageHom_continuous

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

Source context 14 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
section CompatibleClosedSubgroupFamilies
variable {I : Type v} [Preorder I]
variable (S : ProCGroups.InverseSystems.InverseSystem (I := I))
variable [∀ i, Group (S.X i)] [ProCGroups.InverseSystems.IsGroupSystem S]
variable [∀ i, IsTopologicalGroup (S.X i)]
variable [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
omit [∀ i, IsTopologicalGroup (S.X i)] [∀ i, CompactSpace (S.X i)]
  [∀ i, T2Space (S.X i)] in
theorem inverseSystemStageHom_continuous {i j : I} (hij : i ≤ j) :
    Continuous (inverseSystemStageHom (S := S) hij)
ProCGroups.Order.compatibleClosedSubgroupSystem

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

Source context 13 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
section CompatibleClosedSubgroupFamilies
variable {I : Type v} [Preorder I]
variable (S : ProCGroups.InverseSystems.InverseSystem (I := I))
variable [∀ i, Group (S.X i)] [ProCGroups.InverseSystems.IsGroupSystem S]
variable [∀ i, IsTopologicalGroup (S.X i)]
variable [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
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, rfl⟩
      rw [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, rfl⟩
      rw [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]
ProCGroups.Order.compatibleClosedSubgroupSystem_group

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

Source context 13 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
section CompatibleClosedSubgroupFamilies
variable {I : Type v} [Preorder I]
variable (S : ProCGroups.InverseSystems.InverseSystem (I := I))
variable [∀ i, Group (S.X i)] [ProCGroups.InverseSystems.IsGroupSystem S]
variable [∀ i, IsTopologicalGroup (S.X i)]
variable [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
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)
ProCGroups.Order.compatibleClosedSubgroupSystem_isGroupSystem

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

Source context 13 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
section CompatibleClosedSubgroupFamilies
variable {I : Type v} [Preorder I]
variable (S : ProCGroups.InverseSystems.InverseSystem (I := I))
variable [∀ i, Group (S.X i)] [ProCGroups.InverseSystems.IsGroupSystem S]
variable [∀ i, IsTopologicalGroup (S.X i)]
variable [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
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
    change S.map hij (1 : S.X j) = 1
    exact ProCGroups.InverseSystems.IsGroupSystem.map_one (S := S) hij
  map_mul := by
    intro i j hij x y
    apply Subtype.ext
    change S.map hij (x.1 * y.1) = S.map hij x.1 * S.map hij y.1
    exact ProCGroups.InverseSystems.IsGroupSystem.map_mul (S := S) hij x.1 y.1
  map_inv := by
    intro i j hij x
    apply Subtype.ext
    change S.map hij x.1⁻¹ = (S.map hij x.1)⁻¹
    exact ProCGroups.InverseSystems.IsGroupSystem.map_inv (S := S) hij x.1
ProCGroups.Order.compatibleClosedSubgroupInclusion

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

Source context 13 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
section CompatibleClosedSubgroupFamilies
variable {I : Type v} [Preorder I]
variable (S : ProCGroups.InverseSystems.InverseSystem (I := I))
variable [∀ i, Group (S.X i)] [ProCGroups.InverseSystems.IsGroupSystem S]
variable [∀ i, IsTopologicalGroup (S.X i)]
variable [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
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
ProCGroups.Order.compatibleClosedSubgroupLimHom

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

Source context 13 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
section CompatibleClosedSubgroupFamilies
variable {I : Type v} [Preorder I]
variable (S : ProCGroups.InverseSystems.InverseSystem (I := I))
variable [∀ i, Group (S.X i)] [ProCGroups.InverseSystems.IsGroupSystem S]
variable [∀ i, IsTopologicalGroup (S.X i)]
variable [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
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
ProCGroups.Order.closedSubgroupFromCompatibleFamily

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

Source context 13 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
section CompatibleClosedSubgroupFamilies
variable {I : Type v} [Preorder I]
variable (S : ProCGroups.InverseSystems.InverseSystem (I := I))
variable [∀ i, Group (S.X i)] [ProCGroups.InverseSystems.IsGroupSystem S]
variable [∀ i, IsTopologicalGroup (S.X i)]
variable [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
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 : InverseSystem (I := I) := compatibleClosedSubgroupSystem (S := S) L hcompat
    let : ∀ i, CompactSpace (T.X i) := fun i =>
      (inferInstance : CompactSpace (L i))
    let : ∀ i, T2Space (T.X i) := fun i =>
      (inferInstance : T2Space (L i))
    let φ : T.inverseLimit →* S.inverseLimit :=
      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)
    change IsClosed (Set.range (φ : T.inverseLimit → S.inverseLimit))
    exact (isCompact_range hφcont).isClosed
ProCGroups.Order.inverseLimitProjectionImage_closedSubgroupFromCompatibleFamily

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

Source context 14 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
section CompatibleClosedSubgroupFamilies
variable {I : Type v} [Preorder I]
variable (S : ProCGroups.InverseSystems.InverseSystem (I := I))
variable [∀ i, Group (S.X i)] [ProCGroups.InverseSystems.IsGroupSystem S]
variable [∀ i, IsTopologicalGroup (S.X i)]
variable [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
omit [∀ i, IsTopologicalGroup (S.X i)] in
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
ProCGroups.Order.map_inverseLimitProjectionImage

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

Source context 14 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
section CompatibleClosedSubgroupFamilies
variable {I : Type v} [Preorder I]
variable (S : ProCGroups.InverseSystems.InverseSystem (I := I))
variable [∀ i, Group (S.X i)] [ProCGroups.InverseSystems.IsGroupSystem S]
variable [∀ i, IsTopologicalGroup (S.X i)]
variable [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
omit [∀ i, IsTopologicalGroup (S.X i)] in
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))
ProCGroups.Order.map_inverseLimitProjectionImage_closed

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

Source context 14 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
section CompatibleClosedSubgroupFamilies
variable {I : Type v} [Preorder I]
variable (S : ProCGroups.InverseSystems.InverseSystem (I := I))
variable [∀ i, Group (S.X i)] [ProCGroups.InverseSystems.IsGroupSystem S]
variable [∀ i, IsTopologicalGroup (S.X i)]
variable [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
omit [∀ i, IsTopologicalGroup (S.X i)] in
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
ProCGroups.Order.inverseLimitProjectionImage_bot

The projection image of the trivial closed subgroup is trivial.

Source context 14 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
section CompatibleClosedSubgroupFamilies
variable {I : Type v} [Preorder I]
variable (S : ProCGroups.InverseSystems.InverseSystem (I := I))
variable [∀ i, Group (S.X i)] [ProCGroups.InverseSystems.IsGroupSystem S]
variable [∀ i, IsTopologicalGroup (S.X i)]
variable [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
omit [∀ i, IsTopologicalGroup (S.X i)] [∀ i, CompactSpace (S.X i)] in
theorem inverseLimitProjectionImage_bot
    [CompactSpace S.inverseLimit] (i : I) :
    inverseLimitProjectionImage S (⊥ : ClosedSubgroup S.inverseLimit) i = ⊥
ProCGroups.Order.inverseLimitProjectionImage_top

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

Source context 14 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
section CompatibleClosedSubgroupFamilies
variable {I : Type v} [Preorder I]
variable (S : ProCGroups.InverseSystems.InverseSystem (I := I))
variable [∀ i, Group (S.X i)] [ProCGroups.InverseSystems.IsGroupSystem S]
variable [∀ i, IsTopologicalGroup (S.X i)]
variable [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
omit [∀ i, IsTopologicalGroup (S.X i)] in
theorem inverseLimitProjectionImage_top
    [CompactSpace S.inverseLimit]
    (hdir : Directed (· ≤ ·) (id : I → I))
    (hsurj : IsSurjectiveInverseSystem S) (i : I) :
    inverseLimitProjectionImage S (⊤ : ClosedSubgroup S.inverseLimit) i = ⊤
ProCGroups.Order.inverseLimitProjectionImage_mono

Projection images are monotone in the closed subgroup argument.

Source context 14 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
section CompatibleClosedSubgroupFamilies
variable {I : Type v} [Preorder I]
variable (S : ProCGroups.InverseSystems.InverseSystem (I := I))
variable [∀ i, Group (S.X i)] [ProCGroups.InverseSystems.IsGroupSystem S]
variable [∀ i, IsTopologicalGroup (S.X i)]
variable [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
omit [∀ i, IsTopologicalGroup (S.X i)] [∀ i, CompactSpace (S.X i)] in
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))
ProCGroups.Order.closedSubgroup_le_of_projectionImages_le

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

Source context 13 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
section CompatibleClosedSubgroupFamilies
variable {I : Type v} [Preorder I]
variable (S : ProCGroups.InverseSystems.InverseSystem (I := I))
variable [∀ i, Group (S.X i)] [ProCGroups.InverseSystems.IsGroupSystem S]
variable [∀ i, IsTopologicalGroup (S.X i)]
variable [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
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)
ProCGroups.Order.closedSubgroup_eq_of_projectionImages_eq

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

Source context 13 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
section CompatibleClosedSubgroupFamilies
variable {I : Type v} [Preorder I]
variable (S : ProCGroups.InverseSystems.InverseSystem (I := I))
variable [∀ i, Group (S.X i)] [ProCGroups.InverseSystems.IsGroupSystem S]
variable [∀ i, IsTopologicalGroup (S.X i)]
variable [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
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
ProCGroups.Order.closedSubgroup_eq_bot_of_projectionImages_eq_bot

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

Source context 13 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
section CompatibleClosedSubgroupFamilies
variable {I : Type v} [Preorder I]
variable (S : ProCGroups.InverseSystems.InverseSystem (I := I))
variable [∀ i, Group (S.X i)] [ProCGroups.InverseSystems.IsGroupSystem S]
variable [∀ i, IsTopologicalGroup (S.X i)]
variable [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
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 = ⊥
ProCGroups.Order.closedSubgroup_eq_top_of_projectionImages_eq_top

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

Source context 13 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open Set
open scoped Topology Pointwise BigOperators
namespace ProCGroups.Order
universe u v w
open ProCGroups.InverseSystems
open ProCGroups.ProC
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
section CompatibleClosedSubgroupFamilies
variable {I : Type v} [Preorder I]
variable (S : ProCGroups.InverseSystems.InverseSystem (I := I))
variable [∀ i, Group (S.X i)] [ProCGroups.InverseSystems.IsGroupSystem S]
variable [∀ i, IsTopologicalGroup (S.X i)]
variable [∀ i, CompactSpace (S.X i)] [∀ i, T2Space (S.X i)]
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 = ⊤