ProCGroups.ProC.Quotients.LeftQuotientProjectionSections

10 Theorem | 3 Definition | 1 Structure | 2 Instance

This module studies left quotient projection sections for pro cgroups. If an intermediate closed subgroup is not contained in the base subgroup, one can choose an element in the set-theoretic difference. This is the witness extraction used in the Zorn maximality argument.

import
Imported by

Declarations

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)

If an intermediate closed subgroup is not contained in the base subgroup, one can choose an element in the set-theoretic difference. This is the witness extraction used in the Zorn maximality argument.

Show proof
theorem exists_openNormalSubgroup_not_mem
    (hG : IsProfiniteGroup G) {x : G} (hx : x ≠ 1) :
    ∃ U : OpenNormalSubgroup G, x ∉ (U : Subgroup G)

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

Show proof
theorem exists_openSubgroup_ge_closedSubgroup_not_mem
    (hG : IsProfiniteGroup G) (K : ClosedSubgroup G) {x : G} (hx : x ∉ (K : Set G)) :
    ∃ U : OpenSubgroup G, (K : Subgroup G) ≤ (U : Subgroup G) ∧ x ∉ (U : Set G)

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

Show proof
noncomputable def closedSubgroupOfOpenSubgroup
    (hG : IsProfiniteGroup G) (T : ClosedSubgroup G) (N : OpenSubgroup T) :
    ClosedSubgroup G where
  toSubgroup := (N : Subgroup T).map ((T : Subgroup G).subtype)
  isClosed' := by
    letI : IsTopologicalGroup ↥(T : Subgroup G) := by infer_instance
    let hT : IsProfiniteGroup T := IsProfiniteGroup.of_closedSubgroup (G := G) hG T
    letI : CompactSpace T := IsProfiniteGroup.compactSpace hT
    letI : T2Space G := IsProfiniteGroup.t2Space hG
    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

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

@[simp] theorem mem_closedSubgroupOfOpenSubgroup
    (hG : IsProfiniteGroup G) {T : ClosedSubgroup G} {N : OpenSubgroup T} {x : T} :
    (x : G) ∈ (closedSubgroupOfOpenSubgroup (G := G) hG T N : Subgroup G) ↔
      x ∈ (N : Subgroup T)

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

Show proof
theorem closedSubgroupOfOpenSubgroup_le
    (hG : IsProfiniteGroup G) (T : ClosedSubgroup G) (N : OpenSubgroup T) :
    (closedSubgroupOfOpenSubgroup (G := G) hG T N : Subgroup G) ≤ (T : Subgroup G)

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

Show proof
@[simp 900] theorem closedSubgroupOfOpenSubgroup_subgroupOf_eq
    (hG : IsProfiniteGroup G) (T : ClosedSubgroup G) (N : OpenSubgroup T) :
    (((closedSubgroupOfOpenSubgroup (G := G) hG T N : ClosedSubgroup G) : Subgroup G).subgroupOf
      (T : Subgroup G)) = (N : Subgroup T)

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

Show proof
noncomputable def quotientBotHomeomorph (hG : IsProfiniteGroup G) :
    G ≃ₜ G ⧸ (⊥ : Subgroup G) := by
  letI : CompactSpace G := IsProfiniteGroup.compactSpace hG
  letI : T2Space G := IsProfiniteGroup.t2Space hG
  letI : IsClosed (((⊥ : Subgroup G) : Set G)) := by
    change IsClosed ({(1 : G)} : Set G)
    simp only [finite_singleton, Finite.isClosed]
  exact Continuous.homeoOfBijectiveCompactToT2
    (f := QuotientGroup.mk (s := (⊥ : Subgroup G)))
    (by
      simpa using
        (QuotientGroup.continuous_mk : Continuous
          (QuotientGroup.mk (s := (⊥ : Subgroup G)) : G → G ⧸ (⊥ : Subgroup G))))
    (by
      constructor
      · intro x y hxy
        have hmem : x⁻¹ * y ∈ (⊥ : Subgroup G) := QuotientGroup.eq.1 hxy
        exact inv_mul_eq_one.mp <| by simpa using hmem
      · intro q
        rcases Quotient.exists_rep q with ⟨g, rflexact ⟨g, rfl⟩)

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

@[simp 900] theorem quotientBotHomeomorph_apply (hG : IsProfiniteGroup G) (g : G) :
    quotientBotHomeomorph (G := G) hG g = QuotientGroup.mk (s := (⊥ : Subgroup G)) g

The continuous equivalence is evaluated by the corresponding comparison formula.

Show proof
structure LeftQuotientSectionData (K H : ClosedSubgroup G) where
  L : ClosedSubgroup G
  hKL : (K : Subgroup G) ≤ (L : Subgroup G)
  hLH : (L : Subgroup G) ≤ (H : Subgroup G)
  σ : G ⧸ (H : Subgroup G) → G ⧸ (L : Subgroup G)
  continuous_σ : Continuous σ
  rightInv : Function.RightInverse σ
    (leftQuotientProjection (L : Subgroup G) (H : Subgroup G) hLH)
  one_eq :
    σ (QuotientGroup.mk (s := (H : Subgroup G)) (1 : G)) =
      QuotientGroup.mk (s := (L : Subgroup G)) (1 : G)

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.

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.σ

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

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

The preorder is induced by refinement of the corresponding data.

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

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

theorem exists_upperBound_of_chain
    (hG : IsProfiniteGroup G) (c : Set (LeftQuotientSectionData (G := G) K H))
    (hc : IsChain (· ≤ ·) c) (hcn : c.Nonempty) :
    ∃ ub : LeftQuotientSectionData (G := G) K H, ∀ a ∈ c, a ≤ ub

Any nonempty chain of partial sections admits an upper bound obtained by descending to the infimum subgroup. This is the Zorn step in the section argument.

Show proof
theorem leftQuotientProjection_hasContinuousSection
    (hG : IsProfiniteGroup G) (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)

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

Show proof
theorem exists_continuousSection_quotientMk_of_isClosed
    (H : Subgroup G) :
    IsProfiniteGroup G →
      IsClosed (H : Set G) →
        ∃ σ : (G ⧸ H) → G,
          Continuous σ ∧
            Function.RightInverse σ (QuotientGroup.mk (s := H)) ∧
            σ (QuotientGroup.mk (s := H) (1 : G)) = 1

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

Show proof