Module

LeftQuotientProjectionSections.lean

Nyll.ProCGroups.ProC.Quotients.LeftQuotientProjectionSections
16 declarations indexed from sourceView source ↗

Continuous sections of left-quotient projections

Using normalized section data ordered by intermediate closed subgroups, this file applies a chain upper-bound argument to construct continuous sections of \(G/K \to G/H\). It concludes with a continuous section of the quotient map by any closed subgroup of a profinite group.

Declarations

ProCGroups.ProC.exists_mem_of_not_le

If an intermediate closed subgroup is not contained in the base subgroup, the set-theoretic difference contains an element.

Source context 5 commands

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

open Set
open scoped Topology Pointwise
namespace ProCGroups.ProC
universe u v
open InverseSystems
theorem exists_mem_of_not_le {G : Type u} [Group G] [TopologicalSpace G] {K L : ClosedSubgroup G}
    (hnotle : ¬ (L : Subgroup G) ≤ (K : Subgroup G)) :
    ∃ x : G, x ∈ (L : Subgroup G) ∧ x ∉ (K : Subgroup G)
ProCGroups.ProC.exists_openNormalSubgroup_not_mem

For any nontrivial element of a profinite group, there is an open normal subgroup that does not contain it.

Source context 7 commands

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

open Set
open scoped Topology Pointwise
namespace ProCGroups.ProC
universe u v
open InverseSystems
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
  [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
omit [T2Space G] in
theorem exists_openNormalSubgroup_not_mem
    {x : G} (hx : x ≠ 1) :
    ∃ U : OpenNormalSubgroup G, x ∉ (U : Subgroup G)
ProCGroups.ProC.exists_openSubgroup_ge_closedSubgroup_not_mem

A point outside a closed subgroup of a profinite group is omitted by some open subgroup containing that closed subgroup.

Source context 7 commands

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

open Set
open scoped Topology Pointwise
namespace ProCGroups.ProC
universe u v
open InverseSystems
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
  [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
omit [T2Space G] in
theorem exists_openSubgroup_ge_closedSubgroup_not_mem
    (K : ClosedSubgroup G) {x : G} (hx : x ∉ (K : Set G)) :
    ∃ U : OpenSubgroup G, (K : Subgroup G) ≤ (U : Subgroup G) ∧ x ∉ (U : Set G)
ProCGroups.ProC.closedSubgroupOfOpenSubgroup

An open subgroup of a closed subgroup of a profinite group, viewed again as a closed subgroup of the ambient group.

Source context 6 commands

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

open Set
open scoped Topology Pointwise
namespace ProCGroups.ProC
universe u v
open InverseSystems
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
  [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
def closedSubgroupOfOpenSubgroup
    (T : ClosedSubgroup G) (N : OpenSubgroup T) :
    ClosedSubgroup G where
  toSubgroup := (N : Subgroup T).map ((T : Subgroup G).subtype)
  isClosed' := by
    have : IsTopologicalGroup ↥(T : Subgroup G) :=
      Topology.IsInducing.subtypeVal.isTopologicalGroup (T : Subgroup G).subtype
    have hNclosed : IsClosed ((N : Subgroup T) : Set T) :=
      Subgroup.isClosed_of_isOpen (N : Subgroup T) N.isOpen'
    have hNcompact : IsCompact ((N : Subgroup T) : Set T) := hNclosed.isCompact
    have hEq :
        ((T : Subgroup G).subtype '' ((N : Subgroup T) : Set T)) =
          (((N : Subgroup T).map ((T : Subgroup G).subtype) : Subgroup G) : Set G) := by
      ext x
      constructor <;> rintro ⟨y, hy, rfl⟩ <;> exact ⟨y, hy, rfl⟩
    change IsClosed ((((N : Subgroup T).map ((T : Subgroup G).subtype) : Subgroup G) : Set G))
    rw [← hEq]
    exact hNcompact.image continuous_subtype_val |>.isClosed
ProCGroups.ProC.mem_closedSubgroupOfOpenSubgroup

Membership in the ambient closed subgroup induced by an open subgroup is tested inside the original subgroup.

Source context 7 commands

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

open Set
open scoped Topology Pointwise
namespace ProCGroups.ProC
universe u v
open InverseSystems
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
  [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
omit [TotallyDisconnectedSpace G] in
theorem mem_closedSubgroupOfOpenSubgroup
    {T : ClosedSubgroup G} {N : OpenSubgroup T} {x : T} :
    (x : G) ∈ (closedSubgroupOfOpenSubgroup (G := G) T N : Subgroup G) ↔
      x ∈ (N : Subgroup T)
ProCGroups.ProC.closedSubgroupOfOpenSubgroup_le

The ambient closed subgroup attached to an open subgroup of T still lies inside T.

Source context 7 commands

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

open Set
open scoped Topology Pointwise
namespace ProCGroups.ProC
universe u v
open InverseSystems
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
  [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
omit [TotallyDisconnectedSpace G] in
theorem closedSubgroupOfOpenSubgroup_le
    (T : ClosedSubgroup G) (N : OpenSubgroup T) :
    (closedSubgroupOfOpenSubgroup (G := G) T N : Subgroup G) ≤ (T : Subgroup G)
ProCGroups.ProC.closedSubgroupOfOpenSubgroup_subgroupOf_eq

The closed subgroup obtained inside an open subgroup agrees with the corresponding subgroup of the ambient group.

Source context 7 commands

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

open Set
open scoped Topology Pointwise
namespace ProCGroups.ProC
universe u v
open InverseSystems
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
  [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
omit [TotallyDisconnectedSpace G] in
theorem closedSubgroupOfOpenSubgroup_subgroupOf_eq
    (T : ClosedSubgroup G) (N : OpenSubgroup T) :
    (((closedSubgroupOfOpenSubgroup (G := G) T N : ClosedSubgroup G) : Subgroup G).subgroupOf
      (T : Subgroup G)) = (N : Subgroup T)
ProCGroups.ProC.quotientBotHomeomorph

The canonical quotient map \(G \to G/\bot\) is a homeomorphism for profinite groups.

Source context 6 commands

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

open Set
open scoped Topology Pointwise
namespace ProCGroups.ProC
universe u v
open InverseSystems
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
  [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
def quotientBotHomeomorph :
    G ≃ₜ G ⧸ (⊥ : Subgroup G)
ProCGroups.ProC.quotientBotHomeomorph_apply

The continuous equivalence is evaluated by the corresponding comparison formula.

Source context 7 commands

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

open Set
open scoped Topology Pointwise
namespace ProCGroups.ProC
universe u v
open InverseSystems
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
  [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
omit [T2Space G] in
theorem quotientBotHomeomorph_apply (g : G) :
    quotientBotHomeomorph (G := G) g = QuotientGroup.mk (s := (⊥ : Subgroup G)) g
ProCGroups.ProC.LeftQuotientSectionData

Data of a normalized continuous section of a left quotient projection \(G/L \to G/H\), ordered so that smaller intermediate subgroups correspond to larger elements. This is the Zorn package used for the closed-subgroup section theorem.

Source context 6 commands

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

open Set
open scoped Topology Pointwise
namespace ProCGroups.ProC
universe u v
open InverseSystems
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
  [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
structure LeftQuotientSectionData (K H : ClosedSubgroup G) where
  /-- The intermediate closed subgroup through which the section is constructed. -/
  L : ClosedSubgroup G
  /-- The lower endpoint \(K\) is contained in the intermediate subgroup \(L\). -/
  hKL : (K : Subgroup G) ≤ (L : Subgroup G)
  /-- The intermediate subgroup \(L\) is contained in the upper endpoint \(H\). -/
  hLH : (L : Subgroup G) ≤ (H : Subgroup G)
  /-- A section from the left quotient by \(H\) to the left quotient by \(L\). -/
  σ : G ⧸ (H : Subgroup G) → G ⧸ (L : Subgroup G)
  /-- The section \(\sigma\) is continuous. -/
  continuous_σ : Continuous σ
  /-- The map \(\sigma\) is a right inverse of the quotient projection from \(G/L\) to \(G/H\). -/
  rightInv : Function.RightInverse σ
    (leftQuotientProjection (L : Subgroup G) (H : Subgroup G) hLH)
  /-- The section sends the identity coset modulo \(H\) to the identity coset modulo \(L\). -/
  one_eq :
    σ (QuotientGroup.mk (s := (H : Subgroup G)) (1 : G)) =
      QuotientGroup.mk (s := (L : Subgroup G)) (1 : G)
ProCGroups.ProC.LeftQuotientSectionData.instLELeftQuotientSectionData

The order relation is the refinement relation on the corresponding data.

Source context 8 commands

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

open Set
open scoped Topology Pointwise
namespace ProCGroups.ProC
universe u v
open InverseSystems
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
  [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
namespace LeftQuotientSectionData
variable {K H : ClosedSubgroup G}
instance instLELeftQuotientSectionData : LE (LeftQuotientSectionData (G := G) K H) where
  le a b :=
    ∃ hba : (b.L : Subgroup G) ≤ (a.L : Subgroup G),
      leftQuotientProjection (b.L : Subgroup G) (a.L : Subgroup G) hba ∘ b.σ = a.σ
ProCGroups.ProC.LeftQuotientSectionData.instPreorderLeftQuotientSectionData

The preorder is induced by refinement of the corresponding data.

Source context 8 commands

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

open Set
open scoped Topology Pointwise
namespace ProCGroups.ProC
universe u v
open InverseSystems
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
  [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
namespace LeftQuotientSectionData
variable {K H : ClosedSubgroup G}
instance instPreorderLeftQuotientSectionData : Preorder (LeftQuotientSectionData (G := G) K H) where
  le_refl a := by
    refine ⟨le_rfl, ?_⟩
    funext x
    simp only [leftQuotientProjection_id, Function.comp_apply, id_eq]
  le_trans a b c hab hbc := by
    rcases hab with ⟨hba, hbaσ⟩
    rcases hbc with ⟨hcb, hcbσ⟩
    refine ⟨hcb.trans hba, ?_⟩
    funext x
    calc
      leftQuotientProjection (c.L : Subgroup G) (a.L : Subgroup G) (hcb.trans hba) (c.σ x)
                = leftQuotientProjection (b.L : Subgroup G) (a.L : Subgroup G) hba
                    (leftQuotientProjection (c.L : Subgroup G) (b.L : Subgroup G) hcb (c.σ x)) := by
                convert
                  (leftQuotientProjection_comp_apply
                    (K := (c.L : Subgroup G)) (H := (b.L : Subgroup G))
                    (L := (a.L : Subgroup G)) hcb hba (c.σ x)).symm
      _ = leftQuotientProjection (b.L : Subgroup G) (a.L : Subgroup G) hba (b.σ x) := by
            exact congrArg (leftQuotientProjection (b.L : Subgroup G) (a.L : Subgroup G) hba)
              (congrFun hcbσ x)
      _ = a.σ x := congrFun hbaσ x
ProCGroups.ProC.LeftQuotientSectionData.top

The maximal element of the Zorn poset, given by the identity section over H itself.

Source context 8 commands

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

open Set
open scoped Topology Pointwise
namespace ProCGroups.ProC
universe u v
open InverseSystems
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
  [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
namespace LeftQuotientSectionData
variable {K H : ClosedSubgroup G}
def top (hKH : (K : Subgroup G) ≤ (H : Subgroup G)) :
    LeftQuotientSectionData (G := G) K H where
  L := H
  hKL := hKH
  hLH := le_rfl
  σ := id
  continuous_σ := continuous_id
  rightInv := by
    intro x
    simp only [id_eq, leftQuotientProjection_id]
  one_eq := rfl
ProCGroups.ProC.LeftQuotientSectionData.exists_upperBound_of_chain

Any nonempty chain of partial sections admits an upper bound over the infimum subgroup.

Source context 9 commands

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

open Set
open scoped Topology Pointwise
namespace ProCGroups.ProC
universe u v
open InverseSystems
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
  [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
namespace LeftQuotientSectionData
variable {K H : ClosedSubgroup G}
omit [T2Space G] [TotallyDisconnectedSpace G] in
theorem exists_upperBound_of_chain
    (c : Set (LeftQuotientSectionData (G := G) K H))
    (hc : IsChain (· ≤ ·) c) (hcn : c.Nonempty) :
    ∃ ub : LeftQuotientSectionData (G := G) K H, ∀ a ∈ c, a ≤ ub
ProCGroups.ProC.leftQuotientProjection_hasContinuousSection

General section theorem for left quotient projections between closed subgroups of a profinite group.

Source context 6 commands

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

open Set
open scoped Topology Pointwise
namespace ProCGroups.ProC
universe u v
open InverseSystems
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
  [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
theorem leftQuotientProjection_hasContinuousSection
    (K H : ClosedSubgroup G)
    (hKH : (K : Subgroup G) ≤ (H : Subgroup G)) :
    ∃ σ : G ⧸ (H : Subgroup G) → G ⧸ (K : Subgroup G),
      Continuous σ ∧
        Function.RightInverse σ
          (leftQuotientProjection (K : Subgroup G) (H : Subgroup G) hKH) ∧
        σ (QuotientGroup.mk (s := (H : Subgroup G)) (1 : G)) =
          QuotientGroup.mk (s := (K : Subgroup G)) (1 : G)
ProCGroups.ProC.exists_continuousSection_quotientMk_of_isClosed

A quotient by a closed normal subgroup of a profinite group admits a continuous section that sends the identity coset to the identity.

Source context 6 commands

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

open Set
open scoped Topology Pointwise
namespace ProCGroups.ProC
universe u v
open InverseSystems
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
  [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
theorem exists_continuousSection_quotientMk_of_isClosed
    (H : Subgroup G) (hH : IsClosed (H : Set G)) :
        ∃ σ : (G ⧸ H) → G,
          Continuous σ ∧
            Function.RightInverse σ (QuotientGroup.mk (s := H)) ∧
            σ (QuotientGroup.mk (s := H) (1 : G)) = 1