Module

Basic.lean

Nyll.ProCGroups.FreeProC.Basic
81 declarations indexed from sourceView source ↗

Pro C Groups / Free pro-C / Basic

This module defines the free and pointed free pro-\(C\) universal properties, their converging-set form, and the bundled canonical source data used by later constructions.

Declarations

ProCGroups.FreeProC.IsFreeProCGroup

Free pro-\(C\) groups via a strengthened universal property. The lifting property quantifies over all continuous maps into pro-\(C\) groups, rather than only maps whose image generates the target.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
structure IsFreeProCGroup
    {X : Type u} [TopologicalSpace X]
    {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
    [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
    (ι : X → F) : Prop where
  /--
  Open normal subgroups with quotients in `C` form a neighborhood basis at one in `F`.
  -/
  hasOpenNormalBasisInClass : ProCGroups.ProC.HasOpenNormalBasisInClass C F
  /-- The canonical map from the generating space into `F` is continuous. -/
  continuous_ι : Continuous ι
  /-- The image of the canonical map topologically generates `F`. -/
  generates_range : Generation.TopologicallyGenerates (G := F) (Set.range ι)
  /--
  Every continuous map from `X` to a pro-`C` target extends to a unique continuous group
  homomorphism from `F`.
  -/
  existsUnique_lift :
    ∀ {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
      [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G],
    ProCGroups.ProC.HasOpenNormalBasisInClass C (G) →
      ∀ (φ : X → G), Continuous φ →
        ∃! f : F →* G, Continuous f ∧ ∀ x, f (ι x) = φ x
ProCGroups.FreeProC.IsFreeProCGroup.lift

A map from the chosen generators into a pro-\(C\) target extends to the corresponding continuous homomorphism from the free pro-\(C\) group.

Source context 13 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsFreeProCGroup
variable {X : Type u} [TopologicalSpace X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
def lift (hι : IsFreeProCGroup (C := C) ι)
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
    (hG : ProCGroups.ProC.HasOpenNormalBasisInClass C (G)) (φ : X → G)
    (hφ : Continuous φ) : F →* G
ProCGroups.FreeProC.IsFreeProCGroup.lift_spec

The universal-property lift has the prescribed values on the chosen generators.

Source context 13 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsFreeProCGroup
variable {X : Type u} [TopologicalSpace X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem lift_spec (hι : IsFreeProCGroup (C := C) ι)
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
    (hG : ProCGroups.ProC.HasOpenNormalBasisInClass C (G)) (φ : X → G)
    (hφ : Continuous φ) :
    Continuous (hι.lift hG φ hφ) ∧ ∀ x, hι.lift hG φ hφ (ι x) = φ x
ProCGroups.FreeProC.IsFreeProCGroup.lift_unique

The universal-property lift is unique among continuous maps with the prescribed values.

Source context 13 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsFreeProCGroup
variable {X : Type u} [TopologicalSpace X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem lift_unique (hι : IsFreeProCGroup (C := C) ι)
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
    (hG : ProCGroups.ProC.HasOpenNormalBasisInClass C (G)) (φ : X → G)
    (hφ : Continuous φ)
    {f : F →* G} (hf : Continuous f) (hfac : ∀ x, f (ι x) = φ x) :
    f = hι.lift hG φ hφ
ProCGroups.FreeProC.IsFreeProCGroup.liftHom

The universal-property lift bundled as a continuous monoid homomorphism.

Source context 13 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsFreeProCGroup
variable {X : Type u} [TopologicalSpace X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
def liftHom (hι : IsFreeProCGroup (C := C) ι)
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
    (hG : ProCGroups.ProC.HasOpenNormalBasisInClass C (G)) (φ : X → G)
    (hφ : Continuous φ) : F →ₜ* G where
  toMonoidHom := hι.lift hG φ hφ
  continuous_toFun := (hι.lift_spec hG φ hφ).1
ProCGroups.FreeProC.IsFreeProCGroup.liftHom_toMonoidHom

Forgetting continuity from liftHom gives the underlying universal-property lift.

Source context 13 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsFreeProCGroup
variable {X : Type u} [TopologicalSpace X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem liftHom_toMonoidHom (hι : IsFreeProCGroup (C := C) ι)
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
    (hG : ProCGroups.ProC.HasOpenNormalBasisInClass C (G)) (φ : X → G)
    (hφ : Continuous φ) :
    (hι.liftHom hG φ hφ).toMonoidHom = hι.lift hG φ hφ
ProCGroups.FreeProC.IsFreeProCGroup.liftHom_apply

The lift homomorphism from a free pro-\(C\) group evaluates according to the chosen generator map.

Source context 13 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsFreeProCGroup
variable {X : Type u} [TopologicalSpace X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem liftHom_apply (hι : IsFreeProCGroup (C := C) ι)
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
    (hG : ProCGroups.ProC.HasOpenNormalBasisInClass C (G)) (φ : X → G)
    (hφ : Continuous φ) (x : X) :
    hι.liftHom hG φ hφ (ι x) = φ x
ProCGroups.FreeProC.IsFreeProCGroup.liftHom_unique

The lift homomorphism is uniquely determined by its values on the generators.

Source context 13 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsFreeProCGroup
variable {X : Type u} [TopologicalSpace X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem liftHom_unique (hι : IsFreeProCGroup (C := C) ι)
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
    (hG : ProCGroups.ProC.HasOpenNormalBasisInClass C (G)) (φ : X → G)
    (hφ : Continuous φ)
    {f : F →ₜ* G} (hfac : ∀ x, f (ι x) = φ x) :
    f = hι.liftHom hG φ hφ
ProCGroups.FreeProC.IsFreeProCGroup.hom_ext

Continuous homomorphisms out of a free pro-\(C\) group are determined by their values on the chosen generators.

Source context 13 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsFreeProCGroup
variable {X : Type u} [TopologicalSpace X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem hom_ext (hι : IsFreeProCGroup (C := C) ι)
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
    (hG : ProCGroups.ProC.HasOpenNormalBasisInClass C (G))
    {f g : F →* G} (hf : Continuous f) (hg : Continuous g)
    (hfg : ∀ x, f (ι x) = g (ι x)) :
    f = g
ProCGroups.FreeProC.IsFreeProCGroup.lift_eq_of_forall

Two universal-property lifts are equal when they agree on all generators.

Source context 13 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsFreeProCGroup
variable {X : Type u} [TopologicalSpace X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem lift_eq_of_forall (hι : IsFreeProCGroup (C := C) ι)
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
    (hG : ProCGroups.ProC.HasOpenNormalBasisInClass C (G))
    {φ ψ : X → G} (hφ : Continuous φ) (hψ : Continuous ψ)
    (h : ∀ x, φ x = ψ x) :
    hι.lift hG φ hφ = hι.lift hG ψ hψ
ProCGroups.FreeProC.IsFreeProCGroup.lift_id

The lift of the canonical generator map to the same free pro-\(C\) group is the identity.

Source context 13 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsFreeProCGroup
variable {X : Type u} [TopologicalSpace X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem lift_id (hι : IsFreeProCGroup (C := C) ι) :
    hι.lift hι.hasOpenNormalBasisInClass ι hι.continuous_ι = MonoidHom.id F
ProCGroups.FreeProC.IsFreeProCGroup.endomorphism_eq_id

An endomorphism of a free pro-\(C\) group fixing the generators is the identity.

Source context 13 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsFreeProCGroup
variable {X : Type u} [TopologicalSpace X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem endomorphism_eq_id (hι : IsFreeProCGroup (C := C) ι)
    {f : F →* F} (hf : Continuous f) (hfac : ∀ x, f (ι x) = ι x) :
    f = MonoidHom.id F
ProCGroups.FreeProC.IsFreeProCGroup.lift_comp

Composition of free pro-\(C\) lifts is again the lift of the composed generator map.

Source context 13 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsFreeProCGroup
variable {X : Type u} [TopologicalSpace X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem lift_comp (hι : IsFreeProCGroup (C := C) ι)
    {G H : Type u}
    [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
    [Group H] [TopologicalSpace H] [IsTopologicalGroup H]
    [CompactSpace H] [T2Space H] [TotallyDisconnectedSpace H]
    (hG : ProCGroups.ProC.HasOpenNormalBasisInClass C (G))
    (hH : ProCGroups.ProC.HasOpenNormalBasisInClass C (H))
    (φ : X → G) (hφ : Continuous φ)
    (ψ : G →* H) (hψ : Continuous ψ) :
    ψ.comp (hι.lift hG φ hφ) =
      hι.lift hH (fun x => ψ (φ x)) (hψ.comp hφ) := by
  apply hι.lift_unique hH (fun x => ψ (φ x)) (hψ.comp hφ)
    (hψ.comp (hι.lift_spec hG φ hφ).1)
  intro x
  simp only [MonoidHom.coe_comp, Function.comp_apply, (hι.lift_spec hG φ hφ).2 x]
ProCGroups.FreeProC.FamilyConvergesToOne

A family converges to 1 when it tends to 1 along the cofinite filter.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
def FamilyConvergesToOne
    {X : Type v}
    {G : Type u} [Group G] [TopologicalSpace G]
    (μ : X → G) : Prop
ProCGroups.FreeProC.FamilyConvergesToOneAlongOpenSubgroups

The weaker condition obtained by testing family convergence only against open subgroups.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
def FamilyConvergesToOneAlongOpenSubgroups
    {X : Type v}
    {G : Type u} [Group G] [TopologicalSpace G]
    (μ : X → G) : Prop
ProCGroups.FreeProC.FamilyConvergesToOne.to_alongOpenSubgroups

Genuine family convergence implies convergence along open subgroups.

Source context 11 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace FamilyConvergesToOne
variable {X : Type v}
variable {G : Type u} [Group G] [TopologicalSpace G]
theorem to_alongOpenSubgroups {μ : X → G}
    (hμ : FamilyConvergesToOne (G := G) μ) :
    FamilyConvergesToOneAlongOpenSubgroups (G := G) μ
ProCGroups.FreeProC.FamilyConvergesToOne.comp

Convergence is preserved by a continuous homomorphism.

Source context 11 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace FamilyConvergesToOne
variable {X : Type v}
variable {G : Type u} [Group G] [TopologicalSpace G]
theorem comp
    {H : Type*} [TopologicalSpace H] [Group H]
    {μ : X → G}
    (hμ : FamilyConvergesToOne (G := G) μ) (f : G →ₜ* H) :
    FamilyConvergesToOne (G := H) (fun x => f (μ x)) := by
  change Filter.Tendsto (f.toContinuousMap ∘ μ) Filter.cofinite (𝓝 1)
  have hf1 : f.toContinuousMap (1 : G) = 1 := f.map_one
  simpa only [hf1] using (f.continuous.tendsto (1 : G)).comp hμ
ProCGroups.FreeProC.FamilyConvergesToOne.of_finite_domain

Families indexed by a finite type converge to 1.

Source context 11 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace FamilyConvergesToOne
variable {X : Type v}
variable {G : Type u} [Group G] [TopologicalSpace G]
theorem of_finite_domain [Finite X] (μ : X → G) :
    FamilyConvergesToOne (G := G) μ
ProCGroups.FreeProC.FamilyConvergesToOne.const_iff

On an infinite index type in a T₁ space, a constant family converges to 1 exactly when its value is 1. In particular, the old open-subgroup-only counterexample is rejected.

Source context 11 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace FamilyConvergesToOne
variable {X : Type v}
variable {G : Type u} [Group G] [TopologicalSpace G]
theorem const_iff [Infinite X] [T1Space G] (g : G) :
    FamilyConvergesToOne (G := G) (fun _ : X => g) ↔ g = 1 := by
  simp only [FamilyConvergesToOne, tendsto_const_nhds_iff]
ProCGroups.FreeProC.FamilyConvergesToOneAlongOpenSubgroups.range

A family converging to 1 has range converging to 1 as a set.

Source context 11 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace FamilyConvergesToOneAlongOpenSubgroups
variable {X : Type v}
variable {G : Type u} [Group G] [TopologicalSpace G]
theorem range {μ : X → G} (hμ : FamilyConvergesToOneAlongOpenSubgroups (G := G) μ) :
    Generation.ConvergesToOneAlongOpenSubgroups (G := G) (Set.range μ)
ProCGroups.FreeProC.FamilyConvergesToOneAlongOpenSubgroups.comp

Convergence to 1 is preserved by a continuous homomorphism.

Source context 11 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace FamilyConvergesToOneAlongOpenSubgroups
variable {X : Type v}
variable {G : Type u} [Group G] [TopologicalSpace G]
theorem comp
    {H : Type*} [TopologicalSpace H] [Group H]
    {μ : X → G}
    (hμ : FamilyConvergesToOneAlongOpenSubgroups (G := G) μ) (f : G →ₜ* H) :
    FamilyConvergesToOneAlongOpenSubgroups (G := H) (fun x => f (μ x)) := by
  intro U
  have hfinite := hμ (U.comap f.toMonoidHom f.continuous)
  have hset :
      {x : X | μ x ∉ (U.comap f.toMonoidHom f.continuous : Set G)} =
        {x : X | f (μ x) ∉ (U : Set H)} := by
    ext x
    exact not_congr
      (OpenSubgroup.mem_comap (H := U) (f := f.toMonoidHom)
        (hf := f.continuous) (x := μ x))
  exact hset ▸ hfinite
ProCGroups.FreeProC.FamilyConvergesToOneAlongOpenSubgroups.of_set_of_injective

Range convergence implies family convergence for injectively indexed families.

Source context 11 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace FamilyConvergesToOneAlongOpenSubgroups
variable {X : Type v}
variable {G : Type u} [Group G] [TopologicalSpace G]
theorem of_set_of_injective {μ : X → G}
    (hμ : Generation.ConvergesToOneAlongOpenSubgroups (G := G) (Set.range μ))
    (hinj : Function.Injective μ) :
    FamilyConvergesToOneAlongOpenSubgroups (G := G) μ
ProCGroups.FreeProC.FamilyConvergesToOneAlongOpenSubgroups.of_finite_domain

Families indexed by a finite type converge to 1.

Source context 11 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace FamilyConvergesToOneAlongOpenSubgroups
variable {X : Type v}
variable {G : Type u} [Group G] [TopologicalSpace G]
theorem of_finite_domain [Finite X] (μ : X → G) :
    FamilyConvergesToOneAlongOpenSubgroups (G := G) μ
ProCGroups.FreeProC.FamilyConvergesToOneAlongOpenSubgroups.to_familyConvergesToOne

In a nonarchimedean group, open subgroups detect genuine family convergence.

Source context 11 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace FamilyConvergesToOneAlongOpenSubgroups
variable {X : Type v}
variable {G : Type u} [Group G] [TopologicalSpace G]
theorem to_familyConvergesToOne [NonarchimedeanGroup G] {μ : X → G}
    (hμ : FamilyConvergesToOneAlongOpenSubgroups (G := G) μ) :
    FamilyConvergesToOne (G := G) μ
ProCGroups.FreeProC.familyConvergesToOne_iff_alongOpenSubgroups

For nonarchimedean groups, genuine family convergence is equivalent to the open-subgroup test.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
theorem familyConvergesToOne_iff_alongOpenSubgroups
    {X : Type v} {G : Type u} [Group G] [TopologicalSpace G]
    [NonarchimedeanGroup G] {μ : X → G} :
    FamilyConvergesToOne (G := G) μ ↔
      FamilyConvergesToOneAlongOpenSubgroups (G := G) μ
ProCGroups.FreeProC.ConvergingGeneratingMap

An open-subgroup-convergent family whose image topologically generates the target; here convergence means finiteness outside every open subgroup.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
structure ConvergingGeneratingMap
    (X : Type v)
    (G : Type u) [Group G] [TopologicalSpace G] [IsTopologicalGroup G] where
  /-- The family of elements of `G`, indexed by `X`. -/
  toFun : X → G
  /--
  Outside every open subgroup of `G`, the family has only finitely many terms; thus it converges
  to one in the open-subgroup sense.
  -/
  convergesToOneAlongOpenSubgroups : FamilyConvergesToOneAlongOpenSubgroups (G := G) toFun
  /-- The range of the family topologically generates `G`. -/
  generates : Generation.TopologicallyGenerates (G := G) (Set.range toFun)
ProCGroups.FreeProC.ConvergingGeneratingMap.instCoeFunConvergingGeneratingMap

A convergent generating map coerces to its underlying map into the group.

Source context 11 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace ConvergingGeneratingMap
variable {X Y : Type v}
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
instance instCoeFunConvergingGeneratingMap :
    CoeFun (ConvergingGeneratingMap X G) (fun _ => X → G) where
  coe φ := φ.toFun
ProCGroups.FreeProC.ConvergingGeneratingMap.toFun_eq_coe

The stored function of a convergent generating map agrees with its function coercion.

Source context 11 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace ConvergingGeneratingMap
variable {X Y : Type v}
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
theorem toFun_eq_coe (φ : ConvergingGeneratingMap X G) :
    φ.toFun = (φ : X → G)
ProCGroups.FreeProC.ConvergingGeneratingMap.reindex

Reindexing along an equivalence preserves family convergence and generation.

Source context 11 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace ConvergingGeneratingMap
variable {X Y : Type v}
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
def reindex (φ : ConvergingGeneratingMap X G) (e : Y ≃ X) :
    ConvergingGeneratingMap Y G where
  toFun := fun y => φ (e y)
  convergesToOneAlongOpenSubgroups := by
    intro U
    have hsubset :
        {y : Y | φ (e y) ∉ (U : Set G)} ⊆
          e.symm '' {x : X | φ x ∉ (U : Set G)} := by
      intro y hy
      exact ⟨e y, hy, by simp only [Equiv.symm_apply_apply]⟩
    exact (φ.convergesToOneAlongOpenSubgroups U).image e.symm |>.subset hsubset
  generates := by
    have hrange : Set.range (fun y : Y => φ (e y)) = Set.range (φ : X → G) := by
      ext z
      constructor
      · rintro ⟨y, rfl⟩
        exact ⟨e y, rfl⟩
      · rintro ⟨x, rfl⟩
        exact ⟨e.symm x, by simp only [Equiv.apply_symm_apply]⟩
    simpa [hrange] using φ.generates
ProCGroups.FreeProC.ConvergingGeneratingMap.generatesAndConvergesToOneAlongOpenSubgroups

The range of a convergent generating map generates the group and converges to one along open subgroups.

Source context 11 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace ConvergingGeneratingMap
variable {X Y : Type v}
variable {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
theorem generatesAndConvergesToOneAlongOpenSubgroups (φ : ConvergingGeneratingMap X G) :
    Generation.GeneratesAndConvergesToOneAlongOpenSubgroups (G := G) (Set.range (φ : X → G))
ProCGroups.FreeProC.IsEpimorphicallyPointedFreeProCGroupOn

A pointed pro-C group with unique lifts only for pointed maps whose images topologically generate their targets.

This is intentionally not the unrestricted pointed-free universal property.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
structure IsEpimorphicallyPointedFreeProCGroupOn
    (X : Type u) [TopologicalSpace X] (x0 : X)
    (F : Type u) [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
    [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
    (ι : X → F) : Prop where
  /--
  Open normal subgroups with quotients in `C` form a neighborhood basis at one in `F`.
  -/
  hasOpenNormalBasisInClass : ProCGroups.ProC.HasOpenNormalBasisInClass C F
  /-- The canonical pointed map into `F` is continuous. -/
  continuous_ι : Continuous ι
  /-- The distinguished source point `x0` is sent to the identity of `F`. -/
  map_base : ι x0 = 1
  /-- The image of the canonical pointed map topologically generates `F`. -/
  generates_range : Generation.TopologicallyGenerates (G := F) (Set.range ι)
  /--
  Every continuous, basepoint-preserving map whose image generates a pro-`C` target extends to
  a unique continuous group homomorphism from `F`.
  -/
  existsUnique_lift :
    ∀ {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
      [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G],
    ProCGroups.ProC.HasOpenNormalBasisInClass C (G) →
      ∀ (φ : X → G), Continuous φ → φ x0 = 1 →
        Generation.TopologicallyGenerates (G := G) (Set.range φ) →
          ∃! f : F →* G, Continuous f ∧ ∀ x, f (ι x) = φ x
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet

A pro-C group with unique lifts only for open-subgroup-convergent families whose images topologically generate their targets. The convergence hypothesis is FamilyConvergesToOneAlongOpenSubgroups, not the unqualified filter predicate.

The Epimorphically qualifier records the missing unrestricted mapping property.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
structure IsEpimorphicallyFreeProCGroupOnConvergingSet
    (X : Type v)
    (F : Type u) [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
    [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
    (ι : X → F) : Prop where
  /--
  Open normal subgroups with quotients in `C` form a neighborhood basis at one in `F`.
  -/
  hasOpenNormalBasisInClass : ProCGroups.ProC.HasOpenNormalBasisInClass C F
  /--
  The canonical generator family has only finitely many terms outside each open subgroup of
  `F`.
  -/
  convergesToOneAlongOpenSubgroups : FamilyConvergesToOneAlongOpenSubgroups (G := F) ι
  /-- The canonical converging family topologically generates `F`. -/
  generates_range : Generation.TopologicallyGenerates (G := F) (Set.range ι)
  /--
  Every converging family that topologically generates a pro-`C` target extends to a unique
  continuous group homomorphism from `F`.
  -/
  existsUnique_lift :
    ∀ {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
      [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G],
    ProCGroups.ProC.HasOpenNormalBasisInClass C (G) →
      ∀ (φ : X → G), FamilyConvergesToOneAlongOpenSubgroups (G := G) φ →
        Generation.TopologicallyGenerates (G := G) (Set.range φ) →
          ∃! f : F →* G, Continuous f ∧ ∀ x, f (ι x) = φ x
ProCGroups.FreeProC.freeProCGroupOn_injective

The canonical map of a free pro-C group on a topological space is injective whenever the predicate supplies enough separating pro-C targets.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
theorem freeProCGroupOn_injective
    {X : Type u} [TopologicalSpace X]
    {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
    [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
    {ι : X → F}
    (hι : IsFreeProCGroup (C := C) ι)
    (hsep :
      ∀ ⦃x y : X⦄, x ≠ y →
        ∃ (A : Type u) (_ : Group A) (_ : TopologicalSpace A) (_ : IsTopologicalGroup A)
          (_ : CompactSpace A) (_ : T2Space A) (_ : TotallyDisconnectedSpace A),
    ProCGroups.ProC.HasOpenNormalBasisInClass C A ∧
            ∃ φ : X → A, Continuous φ ∧
              Generation.TopologicallyGenerates (G := A) (Set.range φ) ∧ φ x ≠ φ y) :
    Function.Injective ι
ProCGroups.FreeProC.one_not_mem_range_of_freeProCGroupOn

Under an explicit nontrivial cyclic pro-C target hypothesis, the identity does not lie in the image of the topological basis of a free pro-C group.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
theorem one_not_mem_range_of_freeProCGroupOn
    {X : Type u} [TopologicalSpace X] [Nonempty X]
    {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
    [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
    {ι : X → F}
    (hι : IsFreeProCGroup (C := C) ι)
    (hnontrivial :
      ∃ (A : Type u) (_ : Group A) (_ : TopologicalSpace A) (_ : IsTopologicalGroup A)
        (_ : CompactSpace A) (_ : T2Space A) (_ : TotallyDisconnectedSpace A),
    ProCGroups.ProC.HasOpenNormalBasisInClass C A ∧ ∃ a : A, a ≠ 1 ∧
          Generation.TopologicallyGenerates (G := A) ({a} : Set A)) :
    (1 : F) ∉ Set.range ι
ProCGroups.FreeProC.one_not_mem_range_of_epimorphicallyFreeProCGroupOnConvergingSet

Under an explicit nontrivial cyclic pro-C target hypothesis, the identity does not lie in a basis converging to 1.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
theorem one_not_mem_range_of_epimorphicallyFreeProCGroupOnConvergingSet
    {X : Type u}
    {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
    [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
    {ι : X → F}
    (hι : IsEpimorphicallyFreeProCGroupOnConvergingSet (C := C) X F ι)
    (hnontrivial :
      ∃ (A : Type u) (_ : Group A) (_ : TopologicalSpace A) (_ : IsTopologicalGroup A)
        (_ : CompactSpace A) (_ : T2Space A) (_ : TotallyDisconnectedSpace A),
    ProCGroups.ProC.HasOpenNormalBasisInClass C A ∧ ∃ a : A, a ≠ 1 ∧
          Generation.TopologicallyGenerates (G := A) ({a} : Set A)) :
    (1 : F) ∉ Set.range ι
ProCGroups.FreeProC.epimorphicallyFreeProCGroupOnConvergingSet_injective

Under the same nontrivial cyclic-target hypothesis, the basis map for a free pro-C group on a set converging to 1 is injective.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
theorem epimorphicallyFreeProCGroupOnConvergingSet_injective
    {X : Type u}
    {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
    [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
    {ι : X → F}
    (hι : IsEpimorphicallyFreeProCGroupOnConvergingSet (C := C) X F ι)
    (hnontrivial :
      ∃ (A : Type u) (_ : Group A) (_ : TopologicalSpace A) (_ : IsTopologicalGroup A)
        (_ : CompactSpace A) (_ : T2Space A) (_ : TotallyDisconnectedSpace A),
    ProCGroups.ProC.HasOpenNormalBasisInClass C A ∧ ∃ a : A, a ≠ 1 ∧
          Generation.TopologicallyGenerates (G := A) ({a} : Set A)) :
    Function.Injective ι
ProCGroups.FreeProC.exists_nontrivial_singleton_topologicalGenerator

A nontrivial cyclic topological group has a nontrivial singleton topological generator.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
theorem exists_nontrivial_singleton_topologicalGenerator
    {A : Type u} [Group A] [TopologicalSpace A] [IsTopologicalGroup A]
    [IsCyclic A] [Nontrivial A] :
    ∃ a : A, a ≠ 1 ∧ Generation.TopologicallyGenerates (G := A) ({a} : Set A)
ProCGroups.FreeProC.exists_nontrivial_topologicallyCyclic_proC_of_finiteGroupClass

A concrete finite-group class containing a nontrivial finite cyclic group admits a nontrivial topologically cyclic pro-C model.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
theorem exists_nontrivial_topologicallyCyclic_proC_of_finiteGroupClass
    (C : ProCGroups.FiniteGroupClass.{u})
    (hquot : ProCGroups.FiniteGroupClass.QuotientClosed C)
    (hcyc :
      ∃ (A : Type u) (_ : Group A) (_ : Finite A),
        C A ∧ IsCyclic A ∧ Nontrivial A) :
    ∃ (A : Type u) (_ : Group A) (_ : TopologicalSpace A) (_ : IsTopologicalGroup A)
      (_ : CompactSpace A) (_ : T2Space A) (_ : TotallyDisconnectedSpace A),
      ProCGroups.ProC.HasOpenNormalBasisInClass C A ∧
        ∃ a : A, a ≠ 1 ∧ Generation.TopologicallyGenerates (G := A) ({a} : Set A)
ProCGroups.FreeProC.finite_generatingFamily_is_basis

For a finite-rank free pro-C group, any generating family with the same finite cardinality is again a converging-set basis.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
theorem finite_generatingFamily_is_basis
    {X : Type u} {Y : Type u}
    [Finite X] [Finite Y]
    {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
    [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
    {ι : X → F} {μ : Y → F}
    (hι : IsEpimorphicallyFreeProCGroupOnConvergingSet (C := C) X F ι)
    (hcard : Cardinal.mk X = Cardinal.mk Y)
    (hgen : Generation.TopologicallyGenerates (G := F) (Set.range μ)) :
    IsEpimorphicallyFreeProCGroupOnConvergingSet (C := C) Y F μ
ProCGroups.FreeProC.finite_generatingFamily_is_basis_of_finiteGroupClass

Concrete finite-group-class specialization of finite_generatingFamily_is_basis.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
theorem finite_generatingFamily_is_basis_of_finiteGroupClass
    (C : ProCGroups.FiniteGroupClass.{u})
    {X : Type u} {Y : Type u}
    [Finite X] [Finite Y]
    {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
    [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
    {ι : X → F} {μ : Y → F}
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    (hcard : Cardinal.mk X = Cardinal.mk Y)
    (hgen : Generation.TopologicallyGenerates (G := F) (Set.range μ)) :
    IsEpimorphicallyFreeProCGroupOnConvergingSet
      (C := C) Y F μ
ProCGroups.FreeProC.finite_generatingFamily_is_basis_of_finiteGroupClass_cyclic

Concrete finite-group-class specialization when a nontrivial cyclic target is available.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
theorem finite_generatingFamily_is_basis_of_finiteGroupClass_cyclic
    (C : ProCGroups.FiniteGroupClass.{u})
    (hquot : ProCGroups.FiniteGroupClass.QuotientClosed C)
    (hcyc :
      ∃ (A : Type u) (_ : Group A) (_ : Finite A),
        C A ∧ IsCyclic A ∧ Nontrivial A)
    {X : Type u} {Y : Type u}
    [Finite X] [Finite Y]
    {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
    [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
    {ι : X → F} {μ : Y → F}
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    (hcard : Cardinal.mk X = Cardinal.mk Y)
    (hgen : Generation.TopologicallyGenerates (G := F) (Set.range μ)) :
    IsEpimorphicallyFreeProCGroupOnConvergingSet
      (C := C) Y F μ
ProCGroups.FreeProC.surjective_hom_of_rangeContainsGeneratingSet

If a continuous homomorphism has range containing a topological generating set, then it is surjective between profinite groups.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
theorem surjective_hom_of_rangeContainsGeneratingSet
    {X : Type u}
    {F : Type u} [Group F] [TopologicalSpace F] [CompactSpace F]
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G] [T2Space G]
    {ι : X → G}
    (hgen : Generation.TopologicallyGenerates (G := G) (Set.range ι))
    {σ : F →* G} (hσ : Continuous σ)
    (hsub : Set.range ι ⊆ (σ.range : Set G)) :
    Function.Surjective σ
ProCGroups.FreeProC.finite_of_topologicallyFinitelyGenerated_epimorphicallyFreeProCGroupOnConvergingSet

A topologically finitely generated free pro-C group on a converging set has finite basis, provided C admits a nontrivial cyclic pro-C target.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
theorem finite_of_topologicallyFinitelyGenerated_epimorphicallyFreeProCGroupOnConvergingSet
    {X : Type u}
    {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
    [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
    {ι : X → F}
    (hfg : FiniteGeneration.TopologicallyFinitelyGenerated F)
    (hι : IsEpimorphicallyFreeProCGroupOnConvergingSet (C := C) X F ι)
    (hnontrivial :
      ∃ (A : Type u) (_ : Group A) (_ : TopologicalSpace A) (_ : IsTopologicalGroup A)
        (_ : CompactSpace A) (_ : T2Space A) (_ : TotallyDisconnectedSpace A),
    ProCGroups.ProC.HasOpenNormalBasisInClass C A ∧ ∃ a : A, a ≠ 1 ∧
          Generation.TopologicallyGenerates (G := A) ({a} : Set A)) :
    Finite X
ProCGroups.FreeProC.exists_epimorphicallyFreeProCGroupOnConvergingSet_surjecting

A fixed free pro-C group on a set converging to 1 admits a continuous epimorphism onto any profinite pro-C target generated by the image of its basis.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
theorem exists_epimorphicallyFreeProCGroupOnConvergingSet_surjecting
    {X : Type u}
    {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
    [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
    {ι : X → F}
    (hF : IsEpimorphicallyFreeProCGroupOnConvergingSet (C := C) X F ι)
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
    (hG : ProCGroups.ProC.HasOpenNormalBasisInClass C (G))
    (φ : X → G)
    (hφ : FamilyConvergesToOneAlongOpenSubgroups (G := G) φ)
    (hgen : Generation.TopologicallyGenerates (G := G) (Set.range φ)) :
    ∃ ψ : F →* G, Continuous ψ ∧ Function.Surjective ψ ∧ ∀ x, ψ (ι x) = φ x
ProCGroups.FreeProC.proCCompletionOfAbstractFreeGroup_is_free

The pro-C completion of the abstract free group on a finite basis is free pro-C on that basis.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
theorem proCCompletionOfAbstractFreeGroup_is_free
    {X : Type u} [Finite X]
    [TopologicalSpace (FreeGroup X)] [IsTopologicalGroup (FreeGroup X)]
    [DiscreteTopology (FreeGroup X)]
    {Fhat : Type u} [Group Fhat] [TopologicalSpace Fhat] [IsTopologicalGroup Fhat]
    [CompactSpace Fhat] [T2Space Fhat] [TotallyDisconnectedSpace Fhat]
    {ι : FreeGroup X →ₜ* Fhat}
    (hι : ProCGroups.Completion.IsProCCompletion C (FreeGroup X) Fhat ι) :
    IsEpimorphicallyFreeProCGroupOnConvergingSet (C := C) X Fhat
      (fun x => ι (FreeGroup.of x)) := by
  refine ⟨hι.hasOpenNormalBasisInClass, ?_, ?_, ?_⟩
  · exact FamilyConvergesToOneAlongOpenSubgroups.of_finite_domain (G := Fhat)
      (fun x : X => ι (FreeGroup.of x))
  · have himage :
        ι '' Set.range (FreeGroup.of : X → FreeGroup X) =
          Set.range (fun x : X => ι (FreeGroup.of x)) := by
      calc
        ι '' Set.range (FreeGroup.of : X → FreeGroup X) =
            Set.range ((⇑ι) ∘ (FreeGroup.of : X → FreeGroup X)) :=
          (Set.range_comp ι (FreeGroup.of : X → FreeGroup X)).symm
        _ = Set.range (fun x : X => ι (FreeGroup.of x)) := by rfl
    have hclosure :
        Subgroup.closure (Set.range fun x : X => ι (FreeGroup.of x)) =
          ι.toMonoidHom.range := by
      calc
        Subgroup.closure (Set.range fun x : X => ι (FreeGroup.of x))
            = Subgroup.map ι.toMonoidHom
                (Subgroup.closure (Set.range (FreeGroup.of : X → FreeGroup X))) := by
              simpa [himage] using
                (ι.toMonoidHom.map_closure (Set.range (FreeGroup.of : X → FreeGroup X))).symm
        _ = ι.toMonoidHom.range := by
          rw [FreeGroup.closure_range_of X, MonoidHom.range_eq_map]
    rw [Generation.TopologicallyGenerates, hclosure]
    rw [SetLike.ext'_iff, Subgroup.topologicalClosure_coe, Subgroup.coe_top]
    simpa [DenseRange, MonoidHom.coe_range, dense_iff_closure_eq] using hι.denseRange
  · intro G _ _ _ _ _ _ hG φ _hφ hgen
    let φfree : FreeGroup X →ₜ* G :=
      { toMonoidHom := FreeGroup.lift φ
        continuous_toFun := by
          simpa using (continuous_of_discreteTopology : Continuous (FreeGroup.lift φ)) }
    let φhat : Fhat →ₜ* G := hι.lift hG φfree
    refine ⟨φhat.toMonoidHom, ?_, ?_⟩
    · refine ⟨φhat.continuous_toFun, ?_⟩
      intro x
      have hfac := congrArg (fun ψ : FreeGroup X →ₜ* G => ψ (FreeGroup.of x))
        (hι.lift_spec hG φfree)
      have hfree : φfree (FreeGroup.of x) = φ x := by
        change FreeGroup.lift φ (FreeGroup.of x) = φ x
        simp only [FreeGroup.lift_apply_of]
      exact hfac.trans hfree
    · intro g hg
      let gCont : Fhat →ₜ* G := { toMonoidHom := g, continuous_toFun := hg.1 }
      have hfac' : gCont.comp ι = φfree := by
        apply ContinuousMonoidHom.toMonoidHom_injective
        ext x
        change g (ι (FreeGroup.of x)) = FreeGroup.lift φ (FreeGroup.of x)
        exact (hg.2 x).trans (by simp only [FreeGroup.lift_apply_of])
      exact congrArg ContinuousMonoidHom.toMonoidHom (hι.lift_unique hG φfree hfac')
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.lift

The lift supplied by the corresponding free pro-C universal property.

Source context 15 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
def lift
    (hι : IsEpimorphicallyFreeProCGroupOnConvergingSet (C := C) X F ι)
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
    (hG : ProCGroups.ProC.HasOpenNormalBasisInClass C (G)) (φ : X → G)
    (hφ : FamilyConvergesToOneAlongOpenSubgroups (G := G) φ)
    (hgen : Generation.TopologicallyGenerates (G := G) (Set.range φ)) :
    F →* G
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.lift_spec

The universal-property lift has the prescribed values on the chosen generators.

Source context 15 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
theorem lift_spec
    (hι : IsEpimorphicallyFreeProCGroupOnConvergingSet (C := C) X F ι)
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
    (hG : ProCGroups.ProC.HasOpenNormalBasisInClass C (G)) (φ : X → G)
    (hφ : FamilyConvergesToOneAlongOpenSubgroups (G := G) φ)
    (hgen : Generation.TopologicallyGenerates (G := G) (Set.range φ)) :
    Continuous (hι.lift hG φ hφ hgen) ∧
      ∀ x, hι.lift hG φ hφ hgen (ι x) = φ x
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.lift_unique

The universal-property lift is unique among continuous maps with the prescribed values.

Source context 15 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
theorem lift_unique
    (hι : IsEpimorphicallyFreeProCGroupOnConvergingSet (C := C) X F ι)
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
    (hG : ProCGroups.ProC.HasOpenNormalBasisInClass C (G)) (φ : X → G)
    (hφ : FamilyConvergesToOneAlongOpenSubgroups (G := G) φ)
    (hgen : Generation.TopologicallyGenerates (G := G) (Set.range φ))
    {f : F →* G} (hf : Continuous f) (hfac : ∀ x, f (ι x) = φ x) :
    f = hι.lift hG φ hφ hgen
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.existsUnique_lift_of_convergesToOneAlongOpenSubgroups_of_finiteGroupClass

For a concrete finite-group class, the generated-target universal property of a free pro-C group on a converging set extends any target map that converges to 1. This formulation supports retractions that collapse all but finitely many basis elements.

Source context 15 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
theorem existsUnique_lift_of_convergesToOneAlongOpenSubgroups_of_finiteGroupClass
    (C : ProCGroups.FiniteGroupClass.{u})
    (hIso : ProCGroups.FiniteGroupClass.IsomClosed C)
    (hSub : ProCGroups.FiniteGroupClass.SubgroupClosed C)
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
    (hG : ProCGroups.ProC.HasOpenNormalBasisInClass C G)
    (φ : X → G) (hφ : FamilyConvergesToOneAlongOpenSubgroups (G := G) φ) :
    ∃! f : F →* G, Continuous f ∧ ∀ x, f (ι x) = φ x
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.existsUnique_liftHom_of_convergesToOneAlongOpenSubgroups_of_finiteGroupClass

Continuous-homomorphism form of existsUnique_lift_of_convergesToOneAlongOpenSubgroups_of_finiteGroupClass.

Source context 15 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
theorem existsUnique_liftHom_of_convergesToOneAlongOpenSubgroups_of_finiteGroupClass
    (C : ProCGroups.FiniteGroupClass.{u})
    (hIso : ProCGroups.FiniteGroupClass.IsomClosed C)
    (hSub : ProCGroups.FiniteGroupClass.SubgroupClosed C)
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
    (hG : ProCGroups.ProC.HasOpenNormalBasisInClass C G)
    (φ : X → G) (hφ : FamilyConvergesToOneAlongOpenSubgroups (G := G) φ) :
    ∃! f : F →ₜ* G, ∀ x, f (ι x) = φ x
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.generator_pow_ne_one_of_sigma

In a free pro-Σ group with nonempty Σ, a free generator has no positive torsion.

Source context 15 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
theorem generator_pow_ne_one_of_sigma
    {σ : Set ℕ} (hσ : ∃ p, p ∈ σ ∧ Nat.Prime p)
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := (ProCGroups.FiniteGroupClass.sigmaGroup σ)) X F ι)
    (i : X) (N : ℕ) (hN : 0 < N) :
    (ι i) ^ N ≠ 1
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.generator_zpow_ne_one_of_sigma

Integer-power form of generator_pow_ne_one_of_sigma.

Source context 15 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
theorem generator_zpow_ne_one_of_sigma
    {σ : Set ℕ} (hσ : ∃ p, p ∈ σ ∧ Nat.Prime p)
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := (ProCGroups.FiniteGroupClass.sigmaGroup σ)) X F ι)
    (i : X) (n : ℤ) (hn : n ≠ 0) :
    (ι i) ^ n ≠ 1
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.liftHom

The continuous homomorphism supplied by the free pro-C universal property.

Source context 15 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
def liftHom
    (hι : IsEpimorphicallyFreeProCGroupOnConvergingSet (C := C) X F ι)
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
    (hG : ProCGroups.ProC.HasOpenNormalBasisInClass C (G)) (φ : X → G)
    (hφ : FamilyConvergesToOneAlongOpenSubgroups (G := G) φ)
    (hgen : Generation.TopologicallyGenerates (G := G) (Set.range φ)) :
    F →ₜ* G where
  toMonoidHom := hι.lift hG φ hφ hgen
  continuous_toFun := (hι.lift_spec hG φ hφ hgen).1
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.liftConvergingGeneratingMap

Bundled version of liftHom, taking a converging generating map as a single argument.

Source context 15 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
def liftConvergingGeneratingMap
    (hι : IsEpimorphicallyFreeProCGroupOnConvergingSet (C := C) X F ι)
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
    (hG : ProCGroups.ProC.HasOpenNormalBasisInClass C (G)) (φ : ConvergingGeneratingMap X G) :
    F →ₜ* G
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.liftConvergingGeneratingMap_apply

The bundled lift has the prescribed value on each generator.

Source context 15 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
theorem liftConvergingGeneratingMap_apply
    (hι : IsEpimorphicallyFreeProCGroupOnConvergingSet (C := C) X F ι)
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
    (hG : ProCGroups.ProC.HasOpenNormalBasisInClass C (G)) (φ : ConvergingGeneratingMap X G) (x
        : X) :
    hι.liftConvergingGeneratingMap hG φ (ι x) = φ x
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.liftHom_apply

liftHom has the prescribed value on each generator.

Source context 15 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
theorem liftHom_apply
    (hι : IsEpimorphicallyFreeProCGroupOnConvergingSet (C := C) X F ι)
    {G : Type u} [Group G] [TopologicalSpace G] [IsTopologicalGroup G]
    [CompactSpace G] [T2Space G] [TotallyDisconnectedSpace G]
    (hG : ProCGroups.ProC.HasOpenNormalBasisInClass C (G)) (φ : X → G)
    (hφ : FamilyConvergesToOneAlongOpenSubgroups (G := G) φ)
    (hgen : Generation.TopologicallyGenerates (G := G) (Set.range φ)) (x : X) :
    hι.liftHom hG φ hφ hgen (ι x) = φ x
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.existsUnique_collapseToFinset_of_finiteGroupClass

The unique continuous endomorphism of a free pro-C group that keeps the finite set S of basis elements and sends the remaining basis elements to 1.

Source context 22 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
section FiniteSupportRetracts
variable {C : ProCGroups.FiniteGroupClass.{u}}
variable [hVar : Fact (ProCGroups.FiniteGroupClass.Variety C)]
variable {X : Type v} [DecidableEq X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem existsUnique_collapseToFinset_of_finiteGroupClass
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    (S : Finset X) :
    ∃! φ : F →ₜ* F, ∀ x, φ (ι x) = if x ∈ S then ι x else 1 := by
  have hconv :
      FamilyConvergesToOneAlongOpenSubgroups (G := F) (fun x => if x ∈ S then ι x else 1) := by
    intro U
    classical
    refine S.finite_toSet.subset ?_
    intro x hx
    by_cases hxS : x ∈ S
    · exact hxS
    · exfalso
      exact hx (by simp only [hxS, ↓reduceIte, SetLike.mem_coe, one_mem])
  exact
    hι.existsUnique_liftHom_of_convergesToOneAlongOpenSubgroups_of_finiteGroupClass
      C C.isomClosed hVar.out.subgroupClosed
      hι.hasOpenNormalBasisInClass (fun x => if x ∈ S then ι x else 1) hconv
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.collapseToFinset

The finite-support retraction of a free pro-C group onto the closed subgroup generated by a finite set of basis elements.

Source context 22 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
section FiniteSupportRetracts
variable {C : ProCGroups.FiniteGroupClass.{u}}
variable [hVar : Fact (ProCGroups.FiniteGroupClass.Variety C)]
variable {X : Type v} [DecidableEq X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
def collapseToFinset
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    (S : Finset X) :
    F →ₜ* F
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.collapseToFinset_apply_mem

Collapsing to a finite set fixes the selected generators.

Source context 22 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
section FiniteSupportRetracts
variable {C : ProCGroups.FiniteGroupClass.{u}}
variable [hVar : Fact (ProCGroups.FiniteGroupClass.Variety C)]
variable {X : Type v} [DecidableEq X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem collapseToFinset_apply_mem
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    {S : Finset X} {x : X} (hx : x ∈ S) :
    hι.collapseToFinset S (ι x) = ι x
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.collapseToFinset_apply_not_mem

Collapsing to a finite set sends every unselected generator to the identity.

Source context 22 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
section FiniteSupportRetracts
variable {C : ProCGroups.FiniteGroupClass.{u}}
variable [hVar : Fact (ProCGroups.FiniteGroupClass.Variety C)]
variable {X : Type v} [DecidableEq X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem collapseToFinset_apply_not_mem
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    {S : Finset X} {x : X} (hx : x ∉ S) :
    hι.collapseToFinset S (ι x) = 1
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.collapseToFinset_idempotent

Collapsing twice to the same finite set is the same as collapsing once.

Source context 22 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
section FiniteSupportRetracts
variable {C : ProCGroups.FiniteGroupClass.{u}}
variable [hVar : Fact (ProCGroups.FiniteGroupClass.Variety C)]
variable {X : Type v} [DecidableEq X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem collapseToFinset_idempotent
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    (S : Finset X) :
    (hι.collapseToFinset S).comp (hι.collapseToFinset S) =
      hι.collapseToFinset S
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.comp_collapseToFinset_eq_of_eq_one_outside

A homomorphism that kills every basis element outside S is unchanged after precomposition with the finite-support retraction.

Source context 22 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
section FiniteSupportRetracts
variable {C : ProCGroups.FiniteGroupClass.{u}}
variable [hVar : Fact (ProCGroups.FiniteGroupClass.Variety C)]
variable {X : Type v} [DecidableEq X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem comp_collapseToFinset_eq_of_eq_one_outside
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    {G : Type w} [Group G] [TopologicalSpace G] [T2Space G]
    (φ : F →ₜ* G) (S : Finset X)
    (hφ : ∀ x, x ∉ S → φ (ι x) = 1) :
    φ.comp (hι.collapseToFinset S) = φ
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.collapseToFinsetRange

The map from the free pro-C group onto the range of its finite-support retraction.

Source context 22 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
section FiniteSupportRetracts
variable {C : ProCGroups.FiniteGroupClass.{u}}
variable [hVar : Fact (ProCGroups.FiniteGroupClass.Variety C)]
variable {X : Type v} [DecidableEq X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
def collapseToFinsetRange
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    (S : Finset X) :
    F →ₜ* ↥((hι.collapseToFinset S : F →* F).range)
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.collapseToFinsetInclusion

The inclusion of the range of a finite-support retraction back into the ambient free group.

Source context 22 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
section FiniteSupportRetracts
variable {C : ProCGroups.FiniteGroupClass.{u}}
variable [hVar : Fact (ProCGroups.FiniteGroupClass.Variety C)]
variable {X : Type v} [DecidableEq X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
def collapseToFinsetInclusion
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    (S : Finset X) :
    ↥((hι.collapseToFinset S : F →* F).range) →ₜ* F
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.FinsetSupportRetract

The range of the finite-support retraction, viewed as the finite-basis retract.

Source context 22 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
section FiniteSupportRetracts
variable {C : ProCGroups.FiniteGroupClass.{u}}
variable [hVar : Fact (ProCGroups.FiniteGroupClass.Variety C)]
variable {X : Type v} [DecidableEq X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
abbrev FinsetSupportRetract
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    (S : Finset X) : Type u
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.finsetSupportBasis

The finite basis of the finite-support retract.

Source context 22 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
section FiniteSupportRetracts
variable {C : ProCGroups.FiniteGroupClass.{u}}
variable [hVar : Fact (ProCGroups.FiniteGroupClass.Variety C)]
variable {X : Type v} [DecidableEq X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
def finsetSupportBasis
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    (S : Finset X) :
    S → hι.FinsetSupportRetract S
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.isClosed_range_collapseToFinset

The range of the finite-support retraction is closed.

Source context 22 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
section FiniteSupportRetracts
variable {C : ProCGroups.FiniteGroupClass.{u}}
variable [hVar : Fact (ProCGroups.FiniteGroupClass.Variety C)]
variable {X : Type v} [DecidableEq X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem isClosed_range_collapseToFinset
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    (S : Finset X) :
    IsClosed (((hι.collapseToFinset S : F →* F).range : Set F))
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.instCompactSpaceFinsetSupportRetract

The closed finite-support retract carries its canonical compact topology.

Source context 22 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
section FiniteSupportRetracts
variable {C : ProCGroups.FiniteGroupClass.{u}}
variable [hVar : Fact (ProCGroups.FiniteGroupClass.Variety C)]
variable {X : Type v} [DecidableEq X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
instance instCompactSpaceFinsetSupportRetract
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    (S : Finset X) :
    CompactSpace (hι.FinsetSupportRetract S)
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.hasOpenNormalBasisInClass_finsetSupportRetract

The finite-support retract again has an open-normal \(C\)-basis.

Source context 22 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
section FiniteSupportRetracts
variable {C : ProCGroups.FiniteGroupClass.{u}}
variable [hVar : Fact (ProCGroups.FiniteGroupClass.Variety C)]
variable {X : Type v} [DecidableEq X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem hasOpenNormalBasisInClass_finsetSupportRetract
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    (S : Finset X) :
    ProCGroups.ProC.HasOpenNormalBasisInClass C (hι.FinsetSupportRetract S)
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.isFreeProCGroupOnConvergingSet_finsetSupportBasis

The finite-support retract is free pro-C on its retained finite basis.

Source context 22 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
section FiniteSupportRetracts
variable {C : ProCGroups.FiniteGroupClass.{u}}
variable [hVar : Fact (ProCGroups.FiniteGroupClass.Variety C)]
variable {X : Type v} [DecidableEq X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem isFreeProCGroupOnConvergingSet_finsetSupportBasis
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    (S : Finset X) :
    IsEpimorphicallyFreeProCGroupOnConvergingSet
      (C := C)
      S (hι.FinsetSupportRetract S) (hι.finsetSupportBasis S)
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.collapseToFinset_small_comp_large_of_subset

If S ⊆ T, then collapsing first to T and then to S is the same as collapsing directly to S. This is the basic compatibility relation for the finite-basis projections.

Source context 22 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
section FiniteSupportRetracts
variable {C : ProCGroups.FiniteGroupClass.{u}}
variable [hVar : Fact (ProCGroups.FiniteGroupClass.Variety C)]
variable {X : Type v} [DecidableEq X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem collapseToFinset_small_comp_large_of_subset
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    {S T : Finset X} (hST : S ⊆ T) :
    (hι.collapseToFinset S).comp (hι.collapseToFinset T) =
      hι.collapseToFinset S
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.collapseToFinset_large_comp_small_of_subset

If S ⊆ T, then collapsing to S and then to T is again the collapse to S. Equivalently, the finite-support image for S is fixed by every larger finite-support projection.

Source context 22 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
section FiniteSupportRetracts
variable {C : ProCGroups.FiniteGroupClass.{u}}
variable [hVar : Fact (ProCGroups.FiniteGroupClass.Variety C)]
variable {X : Type v} [DecidableEq X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem collapseToFinset_large_comp_small_of_subset
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    {S T : Finset X} (hST : S ⊆ T) :
    (hι.collapseToFinset T).comp (hι.collapseToFinset S) =
      hι.collapseToFinset S
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.finsetSupportTransition

The transition map from the finite-support retract for T to the one for S, for S ⊆ T. It is the projection obtained by including the T-retract into the ambient free pro-C group and then collapsing to S.

Source context 22 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
section FiniteSupportRetracts
variable {C : ProCGroups.FiniteGroupClass.{u}}
variable [hVar : Fact (ProCGroups.FiniteGroupClass.Variety C)]
variable {X : Type v} [DecidableEq X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
def finsetSupportTransition
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    {S T : Finset X} :
    hι.FinsetSupportRetract T →ₜ* hι.FinsetSupportRetract S
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.finsetSupportTransition_apply_basis

The transition from a larger finite support to a smaller one preserves the basis elements indexed by the smaller support.

Source context 22 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
section FiniteSupportRetracts
variable {C : ProCGroups.FiniteGroupClass.{u}}
variable [hVar : Fact (ProCGroups.FiniteGroupClass.Variety C)]
variable {X : Type v} [DecidableEq X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem finsetSupportTransition_apply_basis
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    {S T : Finset X} (hST : S ⊆ T) (x : S) :
    hι.finsetSupportTransition (S := S) (T := T)
        (hι.finsetSupportBasis T ⟨x.1, hST x.2⟩) =
      hι.finsetSupportBasis S x
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.finsetSupportTransition_comp_collapseToFinsetRange

Compatibility of the ambient projection F → R_T with the transition R_T → R_S.

Source context 22 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
section FiniteSupportRetracts
variable {C : ProCGroups.FiniteGroupClass.{u}}
variable [hVar : Fact (ProCGroups.FiniteGroupClass.Variety C)]
variable {X : Type v} [DecidableEq X]
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable {ι : X → F}
theorem finsetSupportTransition_comp_collapseToFinsetRange
    (hι :
      IsEpimorphicallyFreeProCGroupOnConvergingSet
        (C := C) X F ι)
    {S T : Finset X} (hST : S ⊆ T) :
    (hι.finsetSupportTransition (S := S) (T := T)).comp (hι.collapseToFinsetRange T) =
      hι.collapseToFinsetRange S
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.hom_ext

Continuous homomorphisms out of a free pro-C group on a converging generating set are determined by their values on the chosen generators.

Source context 15 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
theorem hom_ext
    (hι : IsEpimorphicallyFreeProCGroupOnConvergingSet (C := C) X F ι)
    {G : Type u} [Group G] [TopologicalSpace G] [T2Space G]
    {f g : F →ₜ* G} (hfg : ∀ x, f (ι x) = g (ι x)) :
    f = g
ProCGroups.FreeProC.IsEpimorphicallyFreeProCGroupOnConvergingSet.lift_id

The lift of the canonical generator map to the same free pro-C group is the identity.

Source context 15 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
namespace IsEpimorphicallyFreeProCGroupOnConvergingSet
variable {X : Type v}
variable {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
variable {F' : Type u} [Group F'] [TopologicalSpace F'] [IsTopologicalGroup F']
variable [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
variable [CompactSpace F'] [T2Space F'] [TotallyDisconnectedSpace F']
variable {ι : X → F}
theorem lift_id
    (hι : IsEpimorphicallyFreeProCGroupOnConvergingSet (C := C) X F ι) :
    hι.lift hι.hasOpenNormalBasisInClass ι hι.convergesToOneAlongOpenSubgroups
        hι.generates_range = MonoidHom.id F
ProCGroups.FreeProC.EpimorphicallyFreeProCGroupOnConvergingSetData

Packaged carrier with the epimorphic convergent-family lifting property.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
structure EpimorphicallyFreeProCGroupOnConvergingSetData
    (C : ProCGroups.FiniteGroupClass) where
  /-- The index type of the distinguished converging generating family. -/
  basis : Type u
  /-- The bundled pro-`C` group generated by the distinguished family. -/
  carrier : ProCGrp C
  /-- The distinguished family of elements of the bundled carrier. -/
  inclusion : basis → carrier
  /--
  The inclusion is convergent and generating, and satisfies the epimorphic free pro-`C`
  universal property.
  -/
  isEpimorphicallyFree :
    IsEpimorphicallyFreeProCGroupOnConvergingSet (C := C) basis carrier inclusion
ProCGroups.FreeProC.basisCard_eq_topologicalRank_of_finiteBasis

The cardinality of a finite converging-set basis is the topological rank of the free pro-\(C\) group, provided the finite class has a nontrivial cyclic quotient witness.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
theorem basisCard_eq_topologicalRank_of_finiteBasis
    (C : ProCGroups.FiniteGroupClass.{u})
    (hquot : ProCGroups.FiniteGroupClass.QuotientClosed C)
    (hcyc :
      ∃ (A : Type u) (_ : Group A) (_ : Finite A),
        C A ∧ IsCyclic A ∧ Nontrivial A)
    (Fdata : EpimorphicallyFreeProCGroupOnConvergingSetData
      (C := C))
    [Finite Fdata.basis] :
    Cardinal.mk Fdata.basis = Generation.topologicalRank Fdata.carrier
ProCGroups.FreeProC.freeOnFinitePointedDiscreteSpace_has_convergingSetBasis

For a finite discrete pointed space, removing the basepoint from the pointed generating family gives a converging-set basis.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
theorem freeOnFinitePointedDiscreteSpace_has_convergingSetBasis
    {X : Type u} [TopologicalSpace X] [DiscreteTopology X] [Finite X] {x0 : X}
    {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
    [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
    {ι : X → F}
    (hι : IsEpimorphicallyPointedFreeProCGroupOn (C := C) X x0 F ι) :
    IsEpimorphicallyFreeProCGroupOnConvergingSet
      (C := C) {x : X // x ≠ x0} F (fun x => ι x) := by
  classical
  let μ : {x : X // x ≠ x0} → F := fun x => ι x
  refine ⟨hι.hasOpenNormalBasisInClass, ?_, ?_, ?_⟩
  · exact FamilyConvergesToOneAlongOpenSubgroups.of_finite_domain (G := F) μ
  · have hrange : Set.range ι = Set.range μ ∪ ({1} : Set F) := by
      ext z
      constructor
      · rintro ⟨x, rfl⟩
        by_cases hx : x = x0
        · right
          simpa [hx] using hι.map_base
        · left
          exact ⟨⟨x, hx⟩, rfl⟩
      · intro hz
        rcases hz with hz | hz
        · rcases hz with ⟨x, rfl⟩
          exact ⟨x, rfl⟩
        · exact ⟨x0, hι.map_base.trans (by simpa using hz.symm)⟩
    have hgen' :
        Generation.TopologicallyGenerates (G := F) (Set.range μ ∪ ({1} : Set F)) := by
      simpa [μ, hrange] using hι.generates_range
    exact (Generation.topologicallyGenerates_union_one_iff (G := F) (X := Set.range μ)).1 hgen'
  · intro G _ _ _ _ _ _ hG φ _hφconv hgenφ
    let φhat : X → G := fun x => if h : x = x0 then 1 else φ ⟨x, h⟩
    have hφhat : Continuous φhat := continuous_of_discreteTopology
    have hφhat0 : φhat x0 = 1 := by
      simp only [ne_eq, ↓reduceDIte, φhat]
    have hrange : Set.range φhat = Set.range φ ∪ ({1} : Set G) := by
      ext z
      constructor
      · rintro ⟨x, rfl⟩
        by_cases hx : x = x0
        · right
          simp only [ne_eq, hx, ↓reduceDIte, mem_singleton_iff, φhat]
        · left
          exact ⟨⟨x, hx⟩, by simp only [ne_eq, hx, ↓reduceDIte, φhat]⟩
      · intro hz
        rcases hz with hz | hz
        · rcases hz with ⟨x, rfl⟩
          exact ⟨x, by simp only [ne_eq, x.2, ↓reduceDIte, Subtype.coe_eta, φhat]⟩
        · exact ⟨x0, by simpa [φhat] using hz.symm⟩
    have hφhatgen :
        Generation.TopologicallyGenerates (G := G) (Set.range φhat) := by
      have hgen' :
          Generation.TopologicallyGenerates (G := G) (Set.range φ ∪ ({1} : Set G)) := by
        exact (Generation.topologicallyGenerates_union_one_iff (G := G) (X := Set.range φ)).2 hgenφ
      simpa [φhat, hrange] using hgen'
    rcases hι.existsUnique_lift hG φhat hφhat hφhat0 hφhatgen with ⟨f, hf, huniq⟩
    refine ⟨f, ⟨hf.1, ?_⟩, ?_⟩
    · intro x
      simpa [μ, φhat, x.2] using hf.2 (x : X)
    · intro g hg
      apply huniq g
      refine ⟨hg.1, ?_⟩
      intro x
      by_cases hx : x = x0
      · calc
          g (ι x) = g (ι x0) := by rw [hx]
          _ = g 1 := by rw [hι.map_base]
          _ = 1 := map_one g
          _ = φhat x := by simp only [ne_eq, hx, ↓reduceDIte, φhat]
      · simpa [μ, φhat, hx] using hg.2 ⟨x, hx⟩
ProCGroups.FreeProC.freeOnFinitePointedDiscreteSpace_has_finiteConvergingSetBasis

For a finite discrete pointed space, the resulting converging-set basis is finite.

Source context 8 commands

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

open Set
open scoped Topology
namespace ProCGroups.FreeProC
universe u v w
open ProCGroups
open ProCGroups.FiniteGeneration
section
variable {C : ProCGroups.FiniteGroupClass}
theorem freeOnFinitePointedDiscreteSpace_has_finiteConvergingSetBasis
    {X : Type u} [TopologicalSpace X] [DiscreteTopology X] [Finite X] {x0 : X}
    {F : Type u} [Group F] [TopologicalSpace F] [IsTopologicalGroup F]
    [CompactSpace F] [T2Space F] [TotallyDisconnectedSpace F]
    {ι : X → F}
    (hι : IsEpimorphicallyPointedFreeProCGroupOn (C := C) X x0 F ι) :
    ∃ Fdata : EpimorphicallyFreeProCGroupOnConvergingSetData.{u, u} (C := C),
      Nonempty (Fdata.carrier ≃ₜ* F) ∧ Finite Fdata.basis