ProCGroups.ProC.OpenNormalSubgroups.ProCGroup

44 Theorem | 15 Definition | 1 Abbreviation | 2 Structure | 2 Instance

This module proves the separation lemmas used to read finite-support elements through suitable finite quotients. It chooses quotients that isolate a selected support point and then shows that the corresponding finite-stage coefficient is preserved.

import
Imported by

Declarations

def HasOpenNormalBasisInClass (C : FiniteGroupClass.{u})
    (G : Type u) [Group G] [TopologicalSpace G] : Prop :=
  ∀ W : Set G, IsOpen W → (1 : G) ∈ W →
    ∃ U : OpenNormalSubgroup G,
      ((U : Subgroup G) : Set G) ⊆ W ∧ C (G ⧸ (U : Subgroup G))

A neighborhood-basis formulation using open normal subgroups whose quotients lie in \(C\). We isolate it as a separate predicate because it is the main usable local output for later mathematicalization steps.

theorem mono {C D : FiniteGroupClass.{u}} {G : Type u} [Group G] [TopologicalSpace G]
    (hbasis : HasOpenNormalBasisInClass C G)
    (hmono : ∀ {Q : Type u} [Group Q], C Q → D Q) :
    HasOpenNormalBasisInClass D G

The existence of an open-normal basis in a class is monotone under enlarging the finite-group class.

Show proof
abbrev OpenNormalSubgroupInClass (C : FiniteGroupClass.{u})
    (G : Type u) [Group G] [TopologicalSpace G] :=
  {U : OpenNormalSubgroup G // C (G ⧸ (U : Subgroup G))}

Open normal subgroups whose quotient lies in the chosen class \(C\). This packages the specified family as an actual type so later inverse-limit and basis constructions can quantify over it directly.

def ofOpenNormal (U : OpenNormalSubgroup G) (hU : C (G ⧸ (U : Subgroup G))) :
    OpenNormalSubgroupInClass C G :=
  ⟨U, hU⟩

Repackage an open normal subgroup together with a proof that its quotient lies in \(C\).

theorem quotient_mem (U : OpenNormalSubgroupInClass C G) :
    C (G ⧸ (U.1 : Subgroup G))

The quotient attached to a normal subgroup in the finite-quotient index family lies in \(C\).

Show proof
def of_mono {D : FiniteGroupClass.{u}}
    (hmono : ∀ {Q : Type u} [Group Q], C Q → D Q)
    (U : OpenNormalSubgroupInClass C G) :
    OpenNormalSubgroupInClass D G :=
  ⟨U.1, hmono U.2⟩

Move an open-normal-in-class subgroup along an inclusion of finite-group classes.

def top [FiniteGroupClass.ContainsTrivialQuotients C] :
    OpenNormalSubgroupInClass C G :=
  ⟨⊤, by
    have hsub : Subsingleton (G ⧸ (⊤ : Subgroup G)) := by
      constructor
      intro x y
      rcases QuotientGroup.mk'_surjective (⊤ : Subgroup G) x with ⟨a, rfl⟩
      rcases QuotientGroup.mk'_surjective (⊤ : Subgroup G) y with ⟨b, rflexact QuotientGroup.eq.2 (by simp only [Subgroup.mem_top])
    exact FiniteGroupClass.ContainsTrivialQuotients.of_subsingleton hsub⟩

The top subgroup belongs to any finite-group class containing trivial quotients.

theorem nonempty_of_containsTrivialQuotients [FiniteGroupClass.ContainsTrivialQuotients C] :
    Nonempty (OpenNormalSubgroupInClass C G)

There is an open-normal-in-class subgroup whenever the class contains trivial quotients.

Show proof
def of_allFinite [ContinuousMul G] [CompactSpace G] (U : OpenNormalSubgroup G) :
    OpenNormalSubgroupInClass FiniteGroupClass.allFinite G :=
  ⟨U, openNormalSubgroup_finiteQuotient (G := G) U⟩

Every open normal quotient of a compact group lies in the all-finite class.

noncomputable def comap {H : Type u} [Group H] [TopologicalSpace H]
    (hHer : FiniteGroupClass.Hereditary C) (f : G →ₜ* H)
    (U : OpenNormalSubgroupInClass C H) : OpenNormalSubgroupInClass C G :=
  let N : OpenNormalSubgroup G :=
    OpenNormalSubgroup.comap f.toMonoidHom f.continuous_toFun U.1
  ⟨N, by
    let qmap : G ⧸ (N : Subgroup G) →* H ⧸ (U.1 : Subgroup H) :=
      QuotientGroup.map (N := (N : Subgroup G)) (M := (U.1 : Subgroup H))
        f.toMonoidHom (by
          intro x hx
          exact hx)
    have hqmap_inj : Function.Injective qmap := by
      rw [← MonoidHom.ker_eq_bot_iff qmap]
      ext z
      constructor
      · intro hz
        rcases QuotientGroup.mk'_surjective (N : Subgroup G) z with ⟨x, rflhave hxU : f x ∈ (U.1 : Subgroup H) := by
          apply (QuotientGroup.eq_one_iff (N := (U.1 : Subgroup H)) (f x)).1
          simpa [qmap, MonoidHom.mem_ker] using hz
        exact (QuotientGroup.eq_one_iff (N := (N : Subgroup G)) x).2 hxU
      · intro hz
        subst z
        simp only [one_mem]
    exact hHer.of_injective U.2 qmap hqmap_inj⟩

Pull back an open-normal-in-class subgroup along a continuous homomorphism, when the class is hereditary.

def mapOpenNormal {H : Type u} [Group H] [TopologicalSpace H]
    (f : G →ₜ* H) (hfopen : IsOpenMap f) (hfsurj : Function.Surjective f)
    (U : OpenNormalSubgroupInClass C G)
    (hC : C (H ⧸ ((OpenNormalSubgroup.map f hfopen hfsurj U.1 : OpenNormalSubgroup H) :
      Subgroup H))) :
    OpenNormalSubgroupInClass C H :=
  ⟨OpenNormalSubgroup.map f hfopen hfsurj U.1, hC⟩

An open surjective continuous homomorphism sends an open-normal-in-class subgroup to an open normal subgroup when target quotient membership is supplied explicitly. This is the lightweight bridge; stronger automatic versions can be derived from class closure hypotheses as needed.

def mapOpenNormal_of_formation {H : Type u} [Group H] [TopologicalSpace H]
    (hForm : FiniteGroupClass.Formation C)
    (f : G →ₜ* H) (hfopen : IsOpenMap f) (hfsurj : Function.Surjective f)
    (U : OpenNormalSubgroupInClass C G) :
    OpenNormalSubgroupInClass C H :=
  mapOpenNormal (C := C) (G := G) f hfopen hfsurj U (by
    let M : OpenNormalSubgroup H := OpenNormalSubgroup.map f hfopen hfsurj U.1
    let qmap : G ⧸ (U.1 : Subgroup G) →* H ⧸ (M : Subgroup H) :=
      QuotientGroup.map (N := (U.1 : Subgroup G)) (M := (M : Subgroup H))
        f.toMonoidHom (by
          intro x hx
          exact ⟨x, hx, rfl⟩)
    have hqmap_surj : Function.Surjective qmap :=
      QuotientGroup.map_surjective_of_surjective
        (N := (U.1 : Subgroup G)) (M : Subgroup H) f.toMonoidHom (by
          intro y
          rcases QuotientGroup.mk'_surjective (M : Subgroup H) y with ⟨h, rfl⟩
          rcases hfsurj h with ⟨g, rflexact ⟨g, rfl⟩) (by
          intro x hx
          exact ⟨x, hx, rfl⟩)
    have hquot :
        C ((G ⧸ (U.1 : Subgroup G)) ⧸ qmap.ker) :=
      hForm.quotientClosed qmap.ker U.2
    let e :
        (G ⧸ (U.1 : Subgroup G)) ⧸ qmap.ker ≃*
          H ⧸ (M : Subgroup H) :=
      QuotientGroup.quotientKerEquivOfSurjective qmap hqmap_surj
    exact hForm.isomClosed ⟨e⟩ hquot)

An open surjective continuous homomorphism sends an in-class open normal subgroup to an in-class open normal subgroup. Formation closure supplies the target quotient membership.

def inf (hForm : FiniteGroupClass.Formation C)
    (U V : OpenNormalSubgroupInClass C G) : OpenNormalSubgroupInClass C G :=
  ⟨U.1 ⊓ V.1,
    FiniteGroupClass.Formation.quotient_inf_mem
      (C := C) (G := G) hForm U.1 V.1 U.2 V.2⟩

Finite intersections stay in class for a formation.

def quotientProj (U : OpenNormalSubgroupInClass C G) :
    G →ₜ* G ⧸ (U.1 : Subgroup G) :=
  OpenNormalSubgroup.quotientProj U.1

The quotient projection attached to an open-normal-in-class subgroup.

theorem quotientProj_apply (U : OpenNormalSubgroupInClass C G) (x : G) :
    quotientProj (C := C) U x = QuotientGroup.mk' (U.1 : Subgroup G) x

The quotient projection evaluates to the quotient class of the element.

Show proof
theorem quotientProj_surjective (U : OpenNormalSubgroupInClass C G) :
    Function.Surjective (quotientProj (C := C) U)

The quotient projection attached to an open-normal-in-class subgroup is surjective.

Show proof
theorem quotientProj_eq_one_iff {U : OpenNormalSubgroupInClass C G} {x : G} :
    quotientProj (C := C) U x = 1 ↔ x ∈ (U.1 : Subgroup G)

The kernel predicate of the quotient projection is membership in the subgroup.

Show proof
theorem quotientProj_eq_quotientProj_iff {U : OpenNormalSubgroupInClass C G} {x y : G} :
    quotientProj (C := C) U x = quotientProj (C := C) U y ↔
      x / y ∈ (U.1 : Subgroup G)

Equality in the quotient attached to an open-normal-in-class subgroup.

Show proof
theorem mem_ker_quotientProj [ContinuousMul G] {U : OpenNormalSubgroupInClass C G} {x : G} :
    x ∈ OpenNormalSubgroup.ker (quotientProj (C := C) U) ↔
      x ∈ (U.1 : Subgroup G)

Kernel membership for the quotient projection attached to an open-normal-in-class subgroup.

Show proof
theorem ker_quotientProj [ContinuousMul G] (U : OpenNormalSubgroupInClass C G) :
    ((OpenNormalSubgroup.ker (quotientProj (C := C) U) : OpenNormalSubgroup G) :
      Subgroup G) = (U.1 : Subgroup G)

The open-normal kernel of the quotient projection is the original subgroup.

Show proof
def map {U V : OpenNormalSubgroupInClass C G}
    (hUV : (V.1 : Subgroup G) ≤ (U.1 : Subgroup G)) :
    G ⧸ (V.1 : Subgroup G) →* G ⧸ (U.1 : Subgroup G) :=
  QuotientGroup.map _ _ (MonoidHom.id G) hUV

The canonical transition map between quotients attached to nested open normal subgroups in the class-indexing family.

theorem map_surjective {U V : OpenNormalSubgroupInClass C G}
    (hUV : (V.1 : Subgroup G) ≤ (U.1 : Subgroup G)) :
    Function.Surjective (map (C := C) (G := G) hUV)

These transition maps are the natural quotient epimorphisms.

Show proof
theorem map_id (U : OpenNormalSubgroupInClass C G) :
    map (C := C) (G := G) (le_rfl : (U.1 : Subgroup G) ≤ (U.1 : Subgroup G)) = MonoidHom.id _

The identity transition map is the identity monoid homomorphism.

Show proof
theorem map_comp {U V W : OpenNormalSubgroupInClass C G}
    (hUV : (V.1 : Subgroup G) ≤ (U.1 : Subgroup G))
    (hVW : (W.1 : Subgroup G) ≤ (V.1 : Subgroup G)) :
    (map (C := C) (G := G) hUV).comp (map (C := C) (G := G) hVW) =
      map (C := C) (G := G) (hVW.trans hUV)

Maps induced on topological abelianizations compose as expected.

Show proof
def transition [ContinuousMul G] {U V : OpenNormalSubgroupInClass C G}
    (hUV : (U.1 : Subgroup G) ≤ (V.1 : Subgroup G)) :
    G ⧸ (U.1 : Subgroup G) →ₜ* G ⧸ (V.1 : Subgroup G) :=
  OpenNormalSubgroup.transition (G := G) (U := U.1) (V := V.1) hUV

The continuous transition map between quotients attached to nested open-normal-in-class subgroups.

theorem transition_mk [ContinuousMul G] {U V : OpenNormalSubgroupInClass C G}
    (hUV : (U.1 : Subgroup G) ≤ (V.1 : Subgroup G)) (x : G) :
    transition (C := C) (G := G) hUV (QuotientGroup.mk' (U.1 : Subgroup G) x) =
      QuotientGroup.mk' (V.1 : Subgroup G) x

Transition maps send quotient classes to the corresponding quotient classes.

Show proof
theorem transition_comp_quotientProj [ContinuousMul G] {U V : OpenNormalSubgroupInClass C G}
    (hUV : (U.1 : Subgroup G) ≤ (V.1 : Subgroup G)) :
    (transition (C := C) (G := G) hUV).comp (quotientProj (C := C) U) =
      quotientProj (C := C) V

Composing the transition map with the smaller quotient projection gives the larger quotient projection.

Show proof
theorem transition_surjective [ContinuousMul G] {U V : OpenNormalSubgroupInClass C G}
    (hUV : (U.1 : Subgroup G) ≤ (V.1 : Subgroup G)) :
    Function.Surjective (transition (C := C) (G := G) hUV)

Transition maps between quotients by nested open-normal-in-class subgroups are surjective.

Show proof
def openNormalSubgroupInClassSystem (C : FiniteGroupClass.{u})
    (G : Type u) [Group G] [TopologicalSpace G] [IsTopologicalGroup G] :
    InverseSystems.InverseSystem (I := OrderDual (OpenNormalSubgroupInClass C G)) where
  X := fun U => G ⧸ (((OrderDual.ofDual U).1 : OpenNormalSubgroup G) : Subgroup G)
  topologicalSpace := fun _ => inferInstance
  map := fun {U V} hUV =>
    OpenNormalSubgroupInClass.map (C := C) (G := G)
      (U := OrderDual.ofDual U) (V := OrderDual.ofDual V) hUV
  continuous_map := by
    intro U V hUV
    letI : DiscreteTopology
        (G ⧸ (((OrderDual.ofDual U).1 : OpenNormalSubgroup G) : Subgroup G)) :=
      QuotientGroup.discreteTopology
        (openNormalSubgroup_isOpen (G := G) ((OrderDual.ofDual U).1 : OpenNormalSubgroup G))
    exact continuous_of_discreteTopology
  map_id := by
    intro U
    funext x
    exact congrFun
      (congrArg DFunLike.coe
        (OpenNormalSubgroupInClass.map_id
          (C := C) (G := G) (U := OrderDual.ofDual U))) x
  map_comp := by
    intro U V W hUV hVW
    funext x
    rcases QuotientGroup.mk'_surjective
        ((((OrderDual.ofDual W).1 : OpenNormalSubgroup G) : Subgroup G)) x with ⟨g, rflrfl

The inverse system of quotient groups indexed by open normal subgroups whose quotients lie in \(C\), ordered by reverse inclusion.

instance instGroupOpenNormalSubgroupInClassSystemX
    (U : OrderDual (OpenNormalSubgroupInClass C G)) :
    Group ((openNormalSubgroupInClassSystem C G).X U) := by
  dsimp [openNormalSubgroupInClassSystem]
  infer_instance

Every coordinate of the open-normal-in-class inverse system is a quotient group.

def openNormalSubgroupInClassProj
    (U : OrderDual (OpenNormalSubgroupInClass C G)) :
    G →* G ⧸ (((OrderDual.ofDual U).1 : OpenNormalSubgroup G) : Subgroup G) :=
  QuotientGroup.mk' (((OrderDual.ofDual U).1 : OpenNormalSubgroup G) : Subgroup G)

The canonical quotient homomorphisms from \(G\) into the open-normal-subgroup inverse system whose quotients lie in \(C\).

theorem openNormalSubgroupInClassProj_compatible :
    (openNormalSubgroupInClassSystem C G).CompatibleMaps
      (fun U : OrderDual (OpenNormalSubgroupInClass C G) =>
        openNormalSubgroupInClassProj (C := C) (G := G) U)

The canonical quotient homomorphisms are compatible with the transition maps.

Show proof
instance instIsGroupSystemOpenNormalSubgroupInClassSystem :
    InverseSystems.IsGroupSystem (openNormalSubgroupInClassSystem C G) where
  map_one := by
    intro i j hij
    change
      OpenNormalSubgroupInClass.map
        (C := C) (G := G)
        (U := OrderDual.ofDual i) (V := OrderDual.ofDual j) hij 1 = 1
    exact
      (OpenNormalSubgroupInClass.map
        (C := C) (G := G)
        (U := OrderDual.ofDual i) (V := OrderDual.ofDual j) hij).map_one
  map_mul := by
    intro i j hij x y
    change
      OpenNormalSubgroupInClass.map
        (C := C) (G := G)
        (U := OrderDual.ofDual i) (V := OrderDual.ofDual j) hij (x * y) =
          OpenNormalSubgroupInClass.map
            (C := C) (G := G)
            (U := OrderDual.ofDual i) (V := OrderDual.ofDual j) hij x *
          OpenNormalSubgroupInClass.map
            (C := C) (G := G)
            (U := OrderDual.ofDual i) (V := OrderDual.ofDual j) hij y
    exact
      (OpenNormalSubgroupInClass.map
        (C := C) (G := G)
        (U := OrderDual.ofDual i) (V := OrderDual.ofDual j) hij).map_mul x y
  map_inv := by
    intro i j hij x
    change
      OpenNormalSubgroupInClass.map
        (C := C) (G := G)
        (U := OrderDual.ofDual i) (V := OrderDual.ofDual j) hij x⁻¹ =
          (OpenNormalSubgroupInClass.map
            (C := C) (G := G)
            (U := OrderDual.ofDual i) (V := OrderDual.ofDual j) hij x)⁻¹
    exact
      (OpenNormalSubgroupInClass.map
        (C := C) (G := G)
        (U := OrderDual.ofDual i) (V := OrderDual.ofDual j) hij).map_inv x

The quotient system attached to open normal subgroups in \(C\) is group-valued.

theorem openNormalSubgroupInClassProj_surjective
    (U : OrderDual (OpenNormalSubgroupInClass C G)) :
    Function.Surjective (openNormalSubgroupInClassProj (C := C) (G := G) U)

Each projection from \(G\) to an open-normal-in-class quotient is surjective.

Show proof
theorem directed_openNormalSubgroupInClass
    (hForm : FiniteGroupClass.Formation C) :
    Directed (α := OrderDual (OpenNormalSubgroupInClass C G)) (· ≤ ·) fun U => U

The open-normal-in-class index family is directed under reverse inclusion.

Show proof
def HasAllOpenNormalQuotientsInClass (C : FiniteGroupClass.{u})
    (G : Type u) [Group G] [TopologicalSpace G] : Prop :=
  ∀ U : OpenNormalSubgroup G, C (G ⧸ (U : Subgroup G))

Every quotient by an open normal subgroup belongs to the class \(C\). This is stronger than the standard basis formulation unless \(C\) is quotient-closed.

structure IsProCGroup (C : FiniteGroupClass.{u})
    (G : Type u) [Group G] [TopologicalSpace G] : Prop where
  isProfinite : IsProfiniteGroup G
  basis : HasOpenNormalBasisInClass C G

A standard pro-\(C\) group is profinite and has a neighborhood basis of open normal subgroups whose quotients lie in \(C\).

structure IsStrictProCGroup (C : FiniteGroupClass.{u})
    (G : Type u) [Group G] [TopologicalSpace G] : Prop where
  isProfinite : IsProfiniteGroup G
  all_open_normal_quotients : HasAllOpenNormalQuotientsInClass C G

A strict pro-\(C\) group is a profinite group for which every open-normal quotient lies in \(C\).

theorem to_isProCGroup (hG : IsStrictProCGroup C G) : IsProCGroup C G

A strict pro-\(C\) group is pro-\(C\) in the standard basis sense.

Show proof
theorem isProfiniteGroup (hG : IsProCGroup C G) : IsProfiniteGroup G

The underlying topological group of a pro-\(C\) group is profinite.

Show proof
theorem isTopologicalGroup (hG : IsProCGroup C G) : IsTopologicalGroup G

The topological group component of a pro-\(C\) group.

Show proof
theorem compactSpace (hG : IsProCGroup C G) : CompactSpace G

The compact-space instance on a profinite space.

Show proof
theorem t2Space (hG : IsProCGroup C G) : T2Space G

A pro-\(C\) group is Hausdorff.

Show proof
theorem t1Space (hG : IsProCGroup C G) : T1Space G

The \(T_1\) property of a pro-\(C\) group.

Show proof
theorem totallyDisconnectedSpace (hG : IsProCGroup C G) : TotallyDisconnectedSpace G

A pro-\(C\) group is totally disconnected.

Show proof
theorem mono {D : FiniteGroupClass.{u}}
    (hG : IsProCGroup C G)
    (hmono : ∀ {Q : Type u} [Group Q], C Q → D Q) :
    IsProCGroup D G

Pro-\(C\) membership is monotone under enlarging the finite-group class.

Show proof
theorem hasOpenNormalBasisInClass (hG : IsProCGroup C G) :
    HasOpenNormalBasisInClass C G

In a pro-\(C\) group, every open neighborhood of \(1\) contains an open normal subgroup whose quotient still belongs to \(C\).

Show proof
theorem hasAllOpenNormalQuotientsInClass_of_basis_of_quotientClosed
    (hIso : FiniteGroupClass.IsomClosed C)
    (hQuot : FiniteGroupClass.QuotientClosed C)
    (hG : IsProCGroup C G) :
    HasAllOpenNormalQuotientsInClass C G

With isomorphism and quotient closure, the basis definition implies the older all-open normal quotient condition.

Show proof
theorem quotient_mem (hForm : FiniteGroupClass.Formation C)
    (hG : IsProCGroup C G) (U : OpenNormalSubgroup G) :
    C (G ⧸ (U : Subgroup G))

The quotient attached to a normal subgroup in the finite-quotient index family lies in \(C\).

Show proof
theorem isStrictProCGroup_iff_isProCGroup_of_formation
    (hForm : FiniteGroupClass.Formation C) :
    IsStrictProCGroup C G ↔ IsProCGroup C G

For formations, the strict and basis definitions agree.

Show proof
theorem finite_quotient (hG : IsProCGroup C G) (U : OpenNormalSubgroup G) :
    Finite (G ⧸ (U : Subgroup G))

Any quotient by an open normal subgroup of a pro-\(C\) group is finite.

Show proof
theorem exists_openNormalSubgroupInClass_sub_open_nhds_of_one (hG : IsProCGroup C G)
    {W : Set G} (hW : IsOpen W) (h1W : (1 : G) ∈ W) :
    ∃ U : OpenNormalSubgroupInClass C G, (((U.1 : Subgroup G) : Set G)) ⊆ W

In a pro-\(C\) group, every open neighborhood of \(1\) contains an indexed open normal subgroup whose quotient lies in \(C\).

Show proof
theorem exists_openNormalSubgroupInClass_eq_on_right_coset_of_continuous_discrete
    (hG : IsProCGroup C G)
    {A : Type v} [TopologicalSpace A] [DiscreteTopology A]
    (f : G → A) (hf : Continuous f) (g₀ : G) :
    ∃ U : OpenNormalSubgroupInClass C G,
      ∀ g : G, g * g₀⁻¹ ∈ (U.1 : Subgroup G) → f g = f g₀

A continuous map to a discrete target is locally fixed on a sufficiently small right coset, with the small subgroup chosen among the open normal pro-\(C\) quotients.

Show proof
theorem iInf_openNormalSubgroupInClass_eq_bot (hG : IsProCGroup C G) :
    iInf (fun U : OpenNormalSubgroupInClass C G => (U.1 : Subgroup G)) = (⊥ : Subgroup G)

In a pro-\(C\) group, the open normal subgroups whose quotients lie in \(C\) have trivial total intersection.

Show proof
theorem iInter_openNormalSubgroupInClass_eq_singleton (hG : IsProCGroup C G) :
    (⋂ U : OpenNormalSubgroupInClass C G, (((U.1 : Subgroup G) : Set G))) = ({1} : Set G)

The open-normal-in-class subgroups of a pro-\(C\) group intersect in the singleton \(\{1\}\).

Show proof
theorem exists_openNormalBasisInClassFamily (hG : IsProCGroup C G) :
    ∃ ι : Type u, ∃ U : ι → OpenNormalSubgroup G,
      (∀ i, C (G ⧸ (U i : Subgroup G))) ∧
      (∀ W : Set G, IsOpen W → (1 : G) ∈ W →
        ∃ i, (((U i : Subgroup G) : Set G)) ⊆ W) ∧
      iInf (fun i => (U i : Subgroup G)) = (⊥ : Subgroup G)

Explicit family form of the open-normal basis and trivial-intersection package.

Show proof
theorem eq_one_of_mem_all_openNormalSubgroupInClass (hG : IsProCGroup C G) {x : G}
    (hx : ∀ U : OpenNormalSubgroupInClass C G, x ∈ (U.1 : Subgroup G)) :
    x = 1

Membership in every open-normal-in-class subgroup forces an element to be trivial.

Show proof
theorem exists_openNormalSubgroupInClass_not_mem (hG : IsProCGroup C G) {x : G} (hx : x ≠ 1) :
    ∃ U : OpenNormalSubgroupInClass C G, x ∉ (U.1 : Subgroup G)

If x \(\neq\) 1, then some open normal subgroup in the class-family omits x.

Show proof
theorem eq_of_forall_openNormalSubgroupInClass_quotient_eq (hG : IsProCGroup C G) {x y : G}
    (hxy : ∀ U : OpenNormalSubgroupInClass C G,
      QuotientGroup.mk' (U.1 : Subgroup G) x = QuotientGroup.mk' (U.1 : Subgroup G) y) :
    x = y

Two elements of a pro-\(C\) group are equal once they agree in every quotient by an open normal subgroup whose quotient lies in \(C\).

Show proof
theorem eq_of_forall_openNormalSubgroupInClassProj_eq (hG : IsProCGroup C G) {x y : G}
    (hxy : ∀ U : OrderDual (OpenNormalSubgroupInClass C G),
      openNormalSubgroupInClassProj (C := C) (G := G) U x =
        openNormalSubgroupInClassProj (C := C) (G := G) U y) :
    x = y

Coordinatewise equality in the canonical inverse-system projections already forces equality in the ambient pro-\(C\) group.

Show proof
theorem of_allOpenNormalQuotients (hprof : IsProfiniteGroup G)
    (hquot : HasAllOpenNormalQuotientsInClass C G) :
    IsProCGroup C G

A direct constructor for IsProCGroup from the stronger open-normal quotient criterion.

Show proof
theorem openNormalSubgroupInClass_nonempty (hG : IsProCGroup C G) :
    Nonempty (OpenNormalSubgroupInClass C G)

In a pro-\(C\) group there is at least one open normal subgroup with quotient in \(C\).

Show proof
theorem isProCGroup_iff {C : FiniteGroupClass.{u}}
    {G : Type u} [Group G] [TopologicalSpace G] :
    IsProCGroup C G ↔
      IsProfiniteGroup G ∧ HasOpenNormalBasisInClass C G

The chosen Lean definition of a pro-\(C\) group matches the open-normal basis condition.

Show proof
theorem isStrictProCGroup_iff {C : FiniteGroupClass.{u}}
    {G : Type u} [Group G] [TopologicalSpace G] :
    IsStrictProCGroup C G ↔
      IsProfiniteGroup G ∧ HasAllOpenNormalQuotientsInClass C G

The strict pro-\(C\) definition matches the all-open-normal-quotient condition.

Show proof