ProCGroups.Presentations.Profinite

18 Theorem | 11 Definition | 1 Abbreviation | 1 Structure | 1 Instance

This module studies profinite for pro cgroups. The closed normal subgroup generated by a set of profinite relators. The closed normal closure of a relator set is a normal subgroup.

import
Imported by

Declarations

def Subgroup.closedNormalClosure (R : Set F) : Subgroup F :=
  (Subgroup.normalClosure R).topologicalClosure

The closed normal subgroup generated by a set of profinite relators.

abbrev closedNormalClosure (R : Set F) : Subgroup F :=
  Subgroup.closedNormalClosure R

The closed normal subgroup generated by a set of profinite relators.

instance closedNormalClosure_normal (R : Set F) : (closedNormalClosure R).Normal := by
  dsimp [closedNormalClosure, Subgroup.closedNormalClosure]
  exact Subgroup.is_normal_topologicalClosure (Subgroup.normalClosure R)

The closed normal closure of a relator set is a normal subgroup.

theorem closedNormalClosure_isClosed (R : Set F) :
    IsClosed ((closedNormalClosure R : Subgroup F) : Set F)

The closed normal closure of a relator set is a closed subgroup.

Show proof
theorem subset_closedNormalClosure (R : Set F) :
    R ⊆ closedNormalClosure R

Every relator in \(R\) lies in the closed normal closure of \(R\).

Show proof
theorem one_mem_closedNormalClosure (R : Set F) :
    (1 : F) ∈ closedNormalClosure R

The identity belongs to the closed normal closure.

Show proof
theorem singleton_one_subset_closedNormalClosure (R : Set F) :
    ({1} : Set F) ⊆ closedNormalClosure R

The singleton containing the identity is contained in the closed normal closure of any relator set.

Show proof
theorem subset_closedNormalClosure_of_subset_singleton_one
    {R D : Set F} (hD : D ⊆ ({1} : Set F)) :
    D ⊆ closedNormalClosure R

Any relator set contained in the singleton identity set is contained in the closed normal closure.

Show proof
theorem closedNormalClosure_le_closed_normal
    {R : Set F} {N : Subgroup F} [N.Normal]
    (hNclosed : IsClosed (N : Set F)) (hR : R ⊆ N) :
    closedNormalClosure R ≤ N

The closed normal closure of \(R\) is contained in any closed normal subgroup that contains \(R\).

Show proof
theorem closedNormalClosure_mono {R S : Set F} (hRS : R ⊆ S) :
    closedNormalClosure R ≤ closedNormalClosure S

Closed normal closure is monotone with respect to inclusion of relator sets.

Show proof
theorem closedNormalClosure_eq_of_mutual_le
    {R S : Set F}
    (hRS : R ⊆ closedNormalClosure S)
    (hSR : S ⊆ closedNormalClosure R) :
    closedNormalClosure R = closedNormalClosure S

Two relator sets have the same closed normal closure when each is contained in the other set's closed normal closure.

Show proof
theorem closedNormalClosure_union_eq_left
    {R D : Set F} (hD : D ⊆ closedNormalClosure R) :
    closedNormalClosure (R ∪ D) = closedNormalClosure R

Adding relators already contained in the closed normal closure does not change the closed normal closure.

Show proof
def IsQuotientByKernel (C : ProCGroups.FiniteGroupClass.{u})
    {F G : Type u} [Group F] [Group G]
    [TopologicalSpace F] [TopologicalSpace G]
    [IsTopologicalGroup F] [IsTopologicalGroup G]
    (K : Subgroup F) : Prop :=
  ProCGroups.ProC.IsProCGroup C G ∧
    ∃ π : F →ₜ* G, Function.Surjective π ∧ π.toMonoidHom.ker = K

A quotient-by-kernel record \(1 \to K \to F \to G \to 1\). The source \(F\) is left explicit: in applications it is normally supplied by FreeProC.IsFreeProCGroup, while Tietze moves only need to know the kernel and the continuous epimorphism being transported.

def IsFreePresentationOf
    (ProC : ProCGroups.ProC.ProCGroupPredicate.{u})
    {X F G : Type u} [TopologicalSpace X]
    [Group F] [Group G]
    [TopologicalSpace F] [TopologicalSpace G]
    [IsTopologicalGroup F] [IsTopologicalGroup G]
    (ι : X → F) (R : Set F) : Prop :=
  ProCGroups.FreeProC.IsFreeProCGroup (ProC := ProC) ι ∧
    ProC (G := G) ∧
      ∃ π : F →ₜ* G, Function.Surjective π ∧ π.toMonoidHom.ker = closedNormalClosure R

A relator presentation whose source is a chosen free pro-\(C\) group.

def IsFreePresentationOfClass (C : ProCGroups.FiniteGroupClass.{u})
    {X F G : Type u} [TopologicalSpace X]
    [Group F] [Group G]
    [TopologicalSpace F] [TopologicalSpace G]
    [IsTopologicalGroup F] [IsTopologicalGroup G]
    (ι : X → F) (R : Set F) : Prop :=
  IsFreePresentationOf
    (ProC := ProCGroups.ProC.finiteGroupClassProCPredicate C)
    (G := G) ι R

The concrete finite-class specialization of IsFreePresentationOf.

def π (h : IsFreePresentationOf (G := G) ProC ι R) : F →ₜ* G :=
  Classical.choose h.2.2

The projection map of a free presentation is the prescribed quotient homomorphism.

theorem freeSource (h : IsFreePresentationOf (G := G) ProC ι R) :
    ProCGroups.FreeProC.IsFreeProCGroup (ProC := ProC) ι

The chosen quotient map recorded by a free pro-\(C\) presentation.

Show proof
theorem targetProC (h : IsFreePresentationOf (G := G) ProC ι R) :
    ProC (G := G)

The target of a free presentation is pro-\(C\).

Show proof
theorem π_surjective (h : IsFreePresentationOf (G := G) ProC ι R) :
    Function.Surjective h.π

The projection map of a free presentation is surjective.

Show proof
theorem kernel_eq_closedNormalClosure (h : IsFreePresentationOf (G := G) ProC ι R) :
    h.π.toMonoidHom.ker = closedNormalClosure R

The kernel of the chosen quotient map is the closed normal closure of the relators.

Show proof
theorem IsFreePresentationOfClass.isQuotientByKernel
    (C : ProCGroups.FiniteGroupClass.{u})
    {X F G : Type u} [TopologicalSpace X]
    [Group F] [Group G]
    [TopologicalSpace F] [TopologicalSpace G]
    [IsTopologicalGroup F] [IsTopologicalGroup G]
    {ι : X → F} {R : Set F} :
    IsFreePresentationOfClass (G := G) C ι R →
      IsQuotientByKernel C (F := F) (G := G) (closedNormalClosure R)

Forget the chosen free source from a concrete free pro-\(C\) relator presentation.

Show proof
theorem isPresentationOf_of_class_subset
    (C' C : ProCGroups.FiniteGroupClass.{u})
    {F G : Type u} [Group F] [Group G]
    [TopologicalSpace F] [TopologicalSpace G]
    [IsTopologicalGroup F] [IsTopologicalGroup G]
    (K : Subgroup F) :
    (∀ {Q : Type u} [Group Q], C' Q → C Q) →
      IsQuotientByKernel C' (F := F) (G := G) K →
        IsQuotientByKernel C (F := F) (G := G) K

Transport a pro-\(C\) presentation along inclusion of finite classes.

Show proof
structure KernelTietzeData
    {F E : Type u} [Group F] [Group E]
    [TopologicalSpace F] [TopologicalSpace E]
    (K : Subgroup F) (L : Subgroup E) where
  toHom : F →ₜ* E
  invHom : E →ₜ* F
  mapsKernel : K ≤ Subgroup.comap toHom.toMonoidHom L
  mapsTargetKernel : L ≤ Subgroup.comap invHom.toMonoidHom K
  inv_toHom : ∀ x : F, invHom (toHom x) * x⁻¹ ∈ K
  to_invHom : ∀ y : E, toHom (invHom y) * y⁻¹ ∈ L

Continuous Tietze data between two presentation kernels. It is the profinite analogue of the mutual-map data used in the discrete ReidemeisterSchreier theory, but written directly for closed kernels rather than syntactic relator sets.

def refl (K : Subgroup F) : KernelTietzeData K K where
  toHom := ContinuousMonoidHom.id F
  invHom := ContinuousMonoidHom.id F
  mapsKernel := by intro x hx; exact hx
  mapsTargetKernel := by intro x hx; exact hx
  inv_toHom := by intro x; simp only [ContinuousMonoidHom.id_toFun, mul_inv_cancel, one_mem]
  to_invHom := by intro x; simp only [ContinuousMonoidHom.id_toFun, mul_inv_cancel, one_mem]

Kernel Tietze equivalence is reflexive.

def symm (D : KernelTietzeData K L) : KernelTietzeData L K where
  toHom := D.invHom
  invHom := D.toHom
  mapsKernel := D.mapsTargetKernel
  mapsTargetKernel := D.mapsKernel
  inv_toHom := D.to_invHom
  to_invHom := D.inv_toHom

Kernel Tietze equivalence is symmetric.

def trans (D₁ : KernelTietzeData K L) (D₂ : KernelTietzeData L M) :
    KernelTietzeData K M where
  toHom := D₂.toHom.comp D₁.toHom
  invHom := D₁.invHom.comp D₂.invHom
  mapsKernel := by
    intro x hx
    exact D₂.mapsKernel (D₁.mapsKernel hx)
  mapsTargetKernel := by
    intro x hx
    exact D₁.mapsTargetKernel (D₂.mapsTargetKernel hx)
  inv_toHom := by
    intro x
    let y : E := D₁.toHom x
    have h₂ : D₂.invHom (D₂.toHom y) * y⁻¹ ∈ L :=
      D₂.inv_toHom y
    have h₂map : D₁.invHom (D₂.invHom (D₂.toHom y) * y⁻¹) ∈ K :=
      D₁.mapsTargetKernel h₂
    have h₂map' :
        D₁.invHom (D₂.invHom (D₂.toHom y)) *
            (D₁.invHom y)⁻¹ ∈ K := by
      simpa using h₂map
    have h₁ : D₁.invHom y * x⁻¹ ∈ K :=
      D₁.inv_toHom x
    have hprod := K.mul_mem h₂map' h₁
    have hmul :
        (D₁.invHom (D₂.invHom (D₂.toHom y)) *
              (D₁.invHom y)⁻¹) *
            (D₁.invHom y * x⁻¹) =
          D₁.invHom (D₂.invHom (D₂.toHom y)) * x⁻¹ := by
      group
    simpa [MonoidHom.comp_apply, y, hmul] using hprod
  to_invHom := by
    intro z
    let y : E := D₂.invHom z
    have h₁ : D₁.toHom (D₁.invHom y) * y⁻¹ ∈ L :=
      D₁.to_invHom y
    have h₁map : D₂.toHom (D₁.toHom (D₁.invHom y) * y⁻¹) ∈ M :=
      D₂.mapsKernel h₁
    have h₁map' :
        D₂.toHom (D₁.toHom (D₁.invHom y)) *
            (D₂.toHom y)⁻¹ ∈ M := by
      simpa using h₁map
    have h₂ : D₂.toHom y * z⁻¹ ∈ M :=
      D₂.to_invHom z
    have hprod := M.mul_mem h₁map' h₂
    have hmul :
        (D₂.toHom (D₁.toHom (D₁.invHom y)) *
              (D₂.toHom y)⁻¹) *
            (D₂.toHom y * z⁻¹) =
          D₂.toHom (D₁.toHom (D₁.invHom y)) * z⁻¹ := by
      group
    simpa [MonoidHom.comp_apply, y, hmul] using hprod

Kernel Tietze equivalence is transitive.

def quotientMulEquiv (D : KernelTietzeData K L) [K.Normal] [L.Normal] :
    F ⧸ K ≃* E ⧸ L := by
  let F₁ : F ⧸ K →* E ⧸ L :=
    QuotientGroup.lift K ((QuotientGroup.mk' L).comp D.toHom.toMonoidHom) (by
      intro x hx
      rw [MonoidHom.mem_ker]
      exact (QuotientGroup.eq_one_iff (N := L) (D.toHom x)).2 (D.mapsKernel hx))
  let F₂ : E ⧸ L →* F ⧸ K :=
    QuotientGroup.lift L ((QuotientGroup.mk' K).comp D.invHom.toMonoidHom) (by
      intro y hy
      rw [MonoidHom.mem_ker]
      exact (QuotientGroup.eq_one_iff (N := K) (D.invHom y)).2
        (D.mapsTargetKernel hy))
  refine
    { toFun := F₁
      invFun := F₂
      left_inv := ?_
      right_inv := ?_
      map_mul' := fun a b => F₁.map_mul a b }
  · intro x
    rcases QuotientGroup.mk'_surjective K x with ⟨x, rflsimp only [QuotientGroup.mk'_apply]
    exact (QuotientGroup.eq_iff_div_mem (N := K)
        (x := D.invHom (D.toHom x)) (y := x)).2
      (by simpa [div_eq_mul_inv] using D.inv_toHom x)
  · intro y
    rcases QuotientGroup.mk'_surjective L y with ⟨y, rflsimp only [QuotientGroup.mk'_apply]
    exact (QuotientGroup.eq_iff_div_mem (N := L)
        (x := D.toHom (D.invHom y)) (y := y)).2
      (by simpa [div_eq_mul_inv] using D.to_invHom y)

Tietze data induce an algebraic equivalence of quotient groups.

def ofContinuousMulEquiv
    {K : Subgroup F} {L : Subgroup E} (e : F ≃ₜ* E)
    (hK : ∀ x : F, x ∈ K ↔ e x ∈ L)
    (hL : ∀ y : E, y ∈ L ↔ e.symm y ∈ K) :
    KernelTietzeData K L where
  toHom := e.toContinuousMonoidHom
  invHom := e.symm.toContinuousMonoidHom
  mapsKernel := by
    intro x hx
    exact (hK x).1 hx
  mapsTargetKernel := by
    intro y hy
    exact (hL y).1 hy
  inv_toHom := by
    intro x
    simp only [ContinuousMulEquiv.toContinuousMonoidHom_apply, ContinuousMulEquiv.symm_apply_apply,
  mul_inv_cancel, one_mem]
  to_invHom := by
    intro y
    simp only [ContinuousMulEquiv.toContinuousMonoidHom_apply, ContinuousMulEquiv.apply_symm_apply,
  mul_inv_cancel, one_mem]

A continuous multiplicative equivalence gives Tietze data for matching kernels.

def ofContinuousMulEquivMapEq
    {K : Subgroup F} {L : Subgroup E} (e : F ≃ₜ* E)
    (hmap : K.map e.toContinuousMonoidHom.toMonoidHom = L) :
    KernelTietzeData K L where
  toHom := e.toContinuousMonoidHom
  invHom := e.symm.toContinuousMonoidHom
  mapsKernel := by
    intro x hx
    change e x ∈ L
    rw [← hmap]
    exact ⟨x, hx, rfl⟩
  mapsTargetKernel := by
    intro y hy
    have hyMap : y ∈ K.map e.toContinuousMonoidHom.toMonoidHom := by
      rw [hmap]
      exact hy
    rcases hyMap with ⟨x, hx, hxy⟩
    have hsymm : e.symm y = x := by
      simp only [← hxy, ContinuousMonoidHom.coe_toMonoidHom, MonoidHom.coe_coe,
  ContinuousMulEquiv.toContinuousMonoidHom_apply, ContinuousMulEquiv.symm_apply_apply]
    simpa [hsymm] using hx
  inv_toHom := by
    intro x
    simp only [ContinuousMulEquiv.toContinuousMonoidHom_apply, ContinuousMulEquiv.symm_apply_apply,
  mul_inv_cancel, one_mem]
  to_invHom := by
    intro y
    simp only [ContinuousMulEquiv.toContinuousMonoidHom_apply, ContinuousMulEquiv.apply_symm_apply,
  mul_inv_cancel, one_mem]

A continuous multiplicative equivalence gives Tietze data when it maps one kernel onto the other.

theorem isPresentationOf_of_kernelTietzeData
    (C : ProCGroups.FiniteGroupClass.{u})
    {F E G : Type u} [Group F] [Group E] [Group G]
    [TopologicalSpace F] [TopologicalSpace E] [TopologicalSpace G]
    [IsTopologicalGroup F] [IsTopologicalGroup E] [IsTopologicalGroup G]
    {K : Subgroup F} {L : Subgroup E}
    (D : KernelTietzeData K L) :
    IsQuotientByKernel C (F := F) (G := G) K →
      IsQuotientByKernel C (F := E) (G := G) L

Transport a presentation along profinite Tietze data between its source kernels.

Show proof
theorem isPresentationOf_of_source_equiv
    (C : ProCGroups.FiniteGroupClass.{u})
    {F E G : Type u} [Group F] [Group E] [Group G]
    [TopologicalSpace F] [TopologicalSpace E] [TopologicalSpace G]
    [IsTopologicalGroup F] [IsTopologicalGroup E] [IsTopologicalGroup G]
    {K : Subgroup F} {L : Subgroup E}
    (e : F ≃ₜ* E)
    (hK : ∀ x : F, x ∈ K ↔ e x ∈ L)
    (hL : ∀ y : E, y ∈ L ↔ e.symm y ∈ K) :
    IsQuotientByKernel C (F := F) (G := G) K →
      IsQuotientByKernel C (F := E) (G := G) L

Transport a presentation along a continuous multiplicative equivalence of sources.

Show proof
theorem isPresentationOf_of_target_equiv
    (C : ProCGroups.FiniteGroupClass.{u})
    {F G H : Type u} [Group F] [Group G] [Group H]
    [TopologicalSpace F] [TopologicalSpace G] [TopologicalSpace H]
    [IsTopologicalGroup F] [IsTopologicalGroup G] [IsTopologicalGroup H]
    {K : Subgroup F}
    (e : G ≃ₜ* H)
    (hH : ProCGroups.ProC.IsProCGroup C H) :
    IsQuotientByKernel C (F := F) (G := G) K →
      IsQuotientByKernel C (F := F) (G := H) K

Transport a presentation along a continuous multiplicative equivalence of targets, recording the pro-\(C\) witness for the new target explicitly.

Show proof