ProCGroups.Generation.GeneratorConvergingPairs

4 Theorem | 2 Definition | 1 Structure | 2 Instance

This module studies generator converging pairs for pro cgroups. A partial generating set together with a closed normal subgroup modulo which it converges. The order relation is the refinement relation on the corresponding data.

import
Imported by

Declarations

structure GeneratorConvergingPair where
  N : Subgroup G
  normal_N : N.Normal
  closed_N : IsClosed (N : Set G)
  X : Set G
  subset_compl : X ⊆ (N : Set G)ᶜ
  convergesToOne_mod :
    ∀ U : OpenSubgroup G, N ≤ (U : Subgroup G) → (X \ (U : Set G)).Finite
  generates : TopologicallyGenerates (G := G) (X ∪ (N : Set G))

A partial generating set together with a closed normal subgroup modulo which it converges.

instance instLEGeneratorConvergingPair : LE (GeneratorConvergingPair (G := G)) where
  le A B := B.N ≤ A.N ∧ A.X ⊆ B.X ∧ B.X \ A.X ⊆ (A.N : Set G)

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

instance instPreorderGeneratorConvergingPair : Preorder (GeneratorConvergingPair (G := G)) where
  le_refl A := ⟨le_rfl, subset_rfl, by simp only [sdiff_self, bot_eq_empty, empty_subset]⟩
  le_trans A B C hAB hBC := by
    rcases hAB with ⟨hABN, hABX, hABdiff⟩
    rcases hBC with ⟨hBCN, hBCX, hBCdiff⟩
    refine ⟨hBCN.trans hABN, hABX.trans hBCX, ?_⟩
    intro x hx
    rcases hx with ⟨hxC, hxA⟩
    by_cases hxB : x ∈ B.X
    · exact hABdiff ⟨hxB, hxA⟩
    · exact hABN (hBCdiff ⟨hxC, hxB⟩)

The preorder is induced by refinement of the corresponding data.

noncomputable def initialGeneratorConvergingPair : GeneratorConvergingPair (G := G) where
  N := ⊤
  normal_N := by infer_instance
  closed_N := isClosed_univ
  X := ∅
  subset_compl := by intro x hx; simp only [mem_empty_iff_false] at hx
  convergesToOne_mod := by
    intro U hU
    simp only [empty_diff, finite_empty]
  generates := by
    simpa [TopologicallyGenerates, Set.empty_union, Subgroup.closure_eq] using
      (top_unique (Subgroup.le_topologicalClosure (⊤ : Subgroup G)) :
        (⊤ : Subgroup G).topologicalClosure = ⊤)

The initial generator-converging pair.

theorem finite_subset_chain_has_upper {α : Type*} [Preorder α] {c : Set α}
    (hc : IsChain (· ≤ ·) c) :
    ∀ s : Finset α, ↑s ⊆ c → s.Nonempty → ∃ m ∈ s, ∀ z ∈ s, z ≤ m

A finite subset of a chain has an upper element from that subset.

Show proof
theorem exists_pair_le_openSubgroup_of_chain_iInf_le [CompactSpace G]
    {c : Set (GeneratorConvergingPair (G := G))}
    (hc : IsChain (· ≤ ·) c) (hcne : c.Nonempty)
    (U : OpenSubgroup G)
    (hInf : iInf (fun p : c => p.1.N) ≤ (U : Subgroup G)) :
    ∃ p : c, p.1.N ≤ (U : Subgroup G)

If the infimum of the closed normal subgroups in a chain lies in an open subgroup, then one stage already lies in that open subgroup.

Show proof
noncomputable def chainUpperBoundOfNonempty
    (hG : IsProfiniteGroup G)
    {c : Set (GeneratorConvergingPair (G := G))}
    (hc : IsChain (· ≤ ·) c) (hcne : c.Nonempty) :
    GeneratorConvergingPair (G := G) where
  N := iInf fun p : c => p.1.N
  normal_N := by
    classical
    exact Subgroup.normal_iInf_normal fun p : c => p.1.normal_N
  closed_N := by
    classical
    simpa using isClosed_iInter (fun p : c => p.1.closed_N)
  X := ⋃ p : c, p.1.X
  subset_compl := by
    intro x hx
    rcases mem_iUnion.mp hx with ⟨p, hpx⟩
    refine by
      intro hxK
      exact p.1.subset_compl hpx ((iInf_le (fun q : c => q.1.N) p) hxK)
  convergesToOne_mod := by
    letI : CompactSpace G := IsProfiniteGroup.compactSpace hG
    intro U hKU
    rcases exists_pair_le_openSubgroup_of_chain_iInf_le (G := G) hc hcne U
      hKU with ⟨p, hpU⟩
    have hEq : ((⋃ q : c, q.1.X) \ (U : Set G)) = (p.1.X \ (U : Set G)) := by
      ext x
      constructor
      · intro hx
        rcases hx with ⟨hxX, hxU⟩
        rcases mem_iUnion.mp hxX with ⟨q, hqx⟩
        have hcmp :
            (q.1 ≤ p.1) ∨ (p.1 ≤ q.1) := by
          by_cases hqp : q = p
          · exact Or.inl (hqp ▸ le_rfl)
          · have hqp' : (q : GeneratorConvergingPair (G := G)) ≠ p := by
              intro h
              exact hqp (Subtype.ext h)
            exact hc q.2 p.2 hqp'
        cases hcmp with
        | inl hqp =>
            exact ⟨hqp.2.1 hqx, hxU⟩
        | inr hpq =>
            by_cases hxp : x ∈ p.1.X
            · exact ⟨hxp, hxU⟩
            · have hxN : x ∈ (p.1.N : Set G) := hpq.2.2 ⟨hqx, hxp⟩
              exact False.elim (hxU (hpU hxN))
      · intro hx
        exact ⟨mem_iUnion.mpr ⟨p, hx.1⟩, hx.2⟩
    rw [hEq]
    exact p.1.convergesToOne_mod U hpU
  generates := by
    letI : CompactSpace G := IsProfiniteGroup.compactSpace hG
    letI : T2Space G := IsProfiniteGroup.t2Space hG
    letI : TotallyDisconnectedSpace G := IsProfiniteGroup.totallyDisconnectedSpace hG
    let K : Subgroup G := iInf fun p : c => p.1.N
    letI : K.Normal := Subgroup.normal_iInf_normal fun p : c => p.1.normal_N
    have hKclosed : IsClosed (K : Set G) := by
      simpa [K] using isClosed_iInter (fun p : c => p.1.closed_N)
    apply (topologicallyGenerates_union_subgroup_iff_forall_openNormalQuotient
      (G := G) hG
      (N := K) (X := ⋃ p : c, p.1.X)).2
    intro U hKU
    rcases exists_pair_le_openSubgroup_of_chain_iInf_le (G := G) hc hcne U.toOpenSubgroup
      (by simpa [K] using hKU) with ⟨p, hpU⟩
    have hpgen :
        TopologicallyGenerates (G := G ⧸ (U : Subgroup G))
          ((QuotientGroup.mk' (U : Subgroup G)) '' p.1.X) := by
      letI : p.1.N.Normal := p.1.normal_N
      exact
        (topologicallyGenerates_union_subgroup_iff_forall_openNormalQuotient
          (G := G) hG
          (N := p.1.N) (X := p.1.X)).1
          p.1.generates U hpU
    exact topologicallyGenerates_mono hpgen (by
      intro y hy
      rcases hy with ⟨x, hx, rflexact ⟨x, mem_iUnion.mpr ⟨p, hx⟩, rfl⟩)

Upper bound of a nonempty chain of generator-converging pairs.

theorem chain_bounded_generatorConvergingPair (hG : IsProfiniteGroup G)
    (c : Set (GeneratorConvergingPair (G := G)))
    (hc : IsChain (· ≤ ·) c) :
    BddAbove c

The generator-converging-pair order is inductive over chains.

Show proof
theorem exists_finite_subset_generating_subgroup_mod_openNormal
    (hG : IsProfiniteGroup G) {M : Subgroup G}
    (hMclosed : IsClosed (M : Set G)) (U : OpenNormalSubgroup G) :
    ∃ T : Set G,
      T.Finite ∧
      T ⊆ (M : Set G) \ (((U : Subgroup G) ⊓ M : Subgroup G) : Set G) ∧
      M ≤ Subgroup.closure (T ∪ ((((U : Subgroup G) ⊓ M : Subgroup G) : Subgroup G) : Set G))

An open-normal quotient of a closed normal subgroup has a finite generating set modulo the intersection with the open normal subgroup.

Show proof