ReidemeisterSchreier.Discrete.Presentations.KernelQuotient

17 Theorem | 6 Definition

This module develops the rewriting and basis constructions behind the subgroup calculations. It tracks words and relations through the chosen transversal to obtain the required presentation or basis statements.

import
Imported by

Declarations

theorem presentedGroup_toGroup_ker_eq_map_freeGroupLift_ker
    {X A : Type*} [Group A] {rels : Set (FreeGroup X)} {f : X → A}
    (hrels : ∀ r ∈ rels, FreeGroup.lift f r = 1) :
    (PresentedGroup.toGroup (rels := rels) (f := f) hrels).ker =
      Subgroup.map (PresentedGroup.mk rels) (FreeGroup.lift f).ker

The presented-kernel quotient is identified with the Reidemeister--Schreier relator quotient.

Show proof
def presentedFreeKernelToPresentedKernelHom
    {X A : Type*} [Group A] {rels : Set (FreeGroup X)} {f : X → A}
    (hrels : ∀ r ∈ rels, FreeGroup.lift f r = 1) :
    (FreeGroup.lift f).ker →*
      (PresentedGroup.toGroup (rels := rels) (f := f) hrels).ker where
  toFun k :=
    ⟨PresentedGroup.mk rels k, by
      change FreeGroup.lift f (k : FreeGroup X) = 1
      exact k.property⟩
  map_one' := by
    ext
    simp only [OneMemClass.coe_one, map_one]
  map_mul' k l := by
    ext
    simp only [Subgroup.coe_mul, map_mul, MulMemClass.mk_mul_mk]

The Reidemeister--Schreier map is determined on generators and respects the rewritten relator relations.

theorem presentedFreeKernelToPresentedKernelHom_surjective
    {X A : Type*} [Group A] {rels : Set (FreeGroup X)} {f : X → A}
    (hrels : ∀ r ∈ rels, FreeGroup.lift f r = 1) :
    Function.Surjective (presentedFreeKernelToPresentedKernelHom hrels)

The Reidemeister--Schreier identity follows from the corresponding rewriting calculation.

Show proof
theorem presentedFreeKernelToPresentedKernelHom_ker_eq_comap_normalClosure
    {X A : Type*} [Group A] {rels : Set (FreeGroup X)} {f : X → A}
    (hrels : ∀ r ∈ rels, FreeGroup.lift f r = 1) :
    (presentedFreeKernelToPresentedKernelHom hrels).ker =
      Subgroup.comap ((FreeGroup.lift f).ker.subtype) (Subgroup.normalClosure rels)

The indicated normal closure agrees with the normal closure transported through the Reidemeister--Schreier relator comparison.

Show proof
noncomputable def presentedFreeKernelRelatorQuotientEquivPresentedKernel
    {X A : Type*} [Group A] {rels : Set (FreeGroup X)} {f : X → A}
    (hrels : ∀ r ∈ rels, FreeGroup.lift f r = 1) :
    (FreeGroup.lift f).ker ⧸
        Subgroup.comap ((FreeGroup.lift f).ker.subtype) (Subgroup.normalClosure rels) ≃*
      (PresentedGroup.toGroup (rels := rels) (f := f) hrels).ker :=
  (QuotientGroup.quotientMulEquivOfEq
    (presentedFreeKernelToPresentedKernelHom_ker_eq_comap_normalClosure hrels).symm).trans
      (QuotientGroup.quotientKerEquivOfSurjective
        (φ := presentedFreeKernelToPresentedKernelHom hrels)
        (presentedFreeKernelToPresentedKernelHom_surjective hrels))

The presented-kernel quotient is identified with the Reidemeister--Schreier relator quotient.

def freeKernelConjugateRelatorSet
    {X A : Type*} [Group A] {rels : Set (FreeGroup X)} {f : X → A} :
    Set (FreeGroup.lift f).ker :=
  { z | ∃ g : FreeGroup X, ∃ r ∈ rels, (z : FreeGroup X) = g * r * g⁻¹ }

The Reidemeister--Schreier relator identity is obtained by rewriting the original relator with the chosen transversal.

def freeKernelTransversalRelatorSet
    {X A : Type*} [Group A] {rels : Set (FreeGroup X)} {f : X → A}
    (T : Set (FreeGroup X)) :
    Set (FreeGroup.lift f).ker :=
  { z | ∃ t ∈ T, ∃ r ∈ rels, (z : FreeGroup X) = t * r * t⁻¹ }

The Reidemeister--Schreier relator identity is obtained by rewriting the original relator with the chosen transversal.

theorem freeKernelTransversalRelatorSet_subset_conjugateRelatorSet
    {X A : Type*} [Group A] {rels : Set (FreeGroup X)} {f : X → A}
    (T : Set (FreeGroup X)) :
    freeKernelTransversalRelatorSet (f := f) (rels := rels) T ⊆
      freeKernelConjugateRelatorSet (f := f) (rels := rels)

The Reidemeister--Schreier relator identity is obtained by rewriting the original relator with the chosen transversal.

Show proof
theorem freeKernelTransversalRelatorSet_normalClosure_eq_conjugateRelatorSet
    {X A : Type*} [Group A] {rels : Set (FreeGroup X)} {f : X → A}
    (hrels : ∀ r ∈ rels, FreeGroup.lift f r = 1) {T : Set (FreeGroup X)}
    (hT : Subgroup.IsComplement ((FreeGroup.lift f).ker : Set (FreeGroup X)) T) :
    Subgroup.normalClosure (freeKernelTransversalRelatorSet (f := f) (rels := rels) T) =
      Subgroup.normalClosure (freeKernelConjugateRelatorSet (f := f) (rels := rels))

The normal closure of the free-kernel transversal relator set equals the normal closure of the corresponding conjugate relator set.

Show proof
theorem freeKernelConjugateRelatorSet_subset_comap_normalClosure
    {X A : Type*} [Group A] {rels : Set (FreeGroup X)} {f : X → A} :
    freeKernelConjugateRelatorSet (f := f) (rels := rels) ⊆
      Subgroup.comap ((FreeGroup.lift f).ker.subtype) (Subgroup.normalClosure rels)

The free-kernel relators map into the corresponding normal closure.

Show proof
theorem freeKernelConjugateRelatorSet_normalClosure_le_comap_normalClosure
    {X A : Type*} [Group A] {rels : Set (FreeGroup X)} {f : X → A} :
    Subgroup.normalClosure (freeKernelConjugateRelatorSet (f := f) (rels := rels)) ≤
      Subgroup.comap ((FreeGroup.lift f).ker.subtype) (Subgroup.normalClosure rels)

The free-kernel relators map into the corresponding normal closure.

Show proof
theorem freeKernelConjugateRelatorSet_normalClosure_eq_comap_normalClosure
    {X A : Type*} [Group A] {rels : Set (FreeGroup X)} {f : X → A}
    (hrels : ∀ r ∈ rels, FreeGroup.lift f r = 1) :
    Subgroup.normalClosure (freeKernelConjugateRelatorSet (f := f) (rels := rels)) =
      Subgroup.comap ((FreeGroup.lift f).ker.subtype) (Subgroup.normalClosure rels)

The indicated normal closure agrees with the normal closure transported through the Reidemeister--Schreier relator comparison.

Show proof
theorem freeKernelTransversalRelatorSet_normalClosure_eq_comap_normalClosure
    {X A : Type*} [Group A] {rels : Set (FreeGroup X)} {f : X → A}
    (hrels : ∀ r ∈ rels, FreeGroup.lift f r = 1) {T : Set (FreeGroup X)}
    (hT : Subgroup.IsComplement ((FreeGroup.lift f).ker : Set (FreeGroup X)) T) :
    Subgroup.normalClosure (freeKernelTransversalRelatorSet (f := f) (rels := rels) T) =
      Subgroup.comap ((FreeGroup.lift f).ker.subtype) (Subgroup.normalClosure rels)

The indicated normal closure agrees with the normal closure transported through the Reidemeister--Schreier relator comparison.

Show proof
noncomputable def presentedFreeKernelTransversalRelatorQuotientEquivPresentedKernel
    {X A : Type*} [Group A] {rels : Set (FreeGroup X)} {f : X → A}
    (hrels : ∀ r ∈ rels, FreeGroup.lift f r = 1) {T : Set (FreeGroup X)}
    (hT : Subgroup.IsComplement ((FreeGroup.lift f).ker : Set (FreeGroup X)) T) :
    (FreeGroup.lift f).ker ⧸
        Subgroup.normalClosure (freeKernelTransversalRelatorSet (f := f) (rels := rels) T) ≃*
      (PresentedGroup.toGroup (rels := rels) (f := f) hrels).ker :=
  (QuotientGroup.quotientMulEquivOfEq
    (freeKernelTransversalRelatorSet_normalClosure_eq_comap_normalClosure hrels hT)).trans
      (presentedFreeKernelRelatorQuotientEquivPresentedKernel hrels)

The presented-kernel quotient is identified with the Reidemeister--Schreier relator quotient.

noncomputable def presentedFreeKernelSchreierRelatorQuotientEquivPresentedKernel
    {X A : Type*} [Group A] {rels : Set (FreeGroup X)} {f : X → A}
    (hrels : ∀ r ∈ rels, FreeGroup.lift f r = 1) {T : Set (FreeGroup X)}
    (hT : Subgroup.IsComplement ((FreeGroup.lift f).ker : Set (FreeGroup X)) T)
    {Y : Type*} (e : FreeGroup Y ≃* (FreeGroup.lift f).ker) :
    FreeGroup Y ⧸
        Subgroup.normalClosure
          (freeGroupPullbackRelatorSet e
            (freeKernelTransversalRelatorSet (f := f) (rels := rels) T)) ≃*
      (PresentedGroup.toGroup (rels := rels) (f := f) hrels).ker :=
  (freeGroupPullbackRelatorQuotientEquiv e
    (freeKernelTransversalRelatorSet (f := f) (rels := rels) T)).trans
      (presentedFreeKernelTransversalRelatorQuotientEquivPresentedKernel hrels hT)

The presented-kernel quotient is identified with the Reidemeister--Schreier relator quotient.

@[simp] theorem mem_freeGroupPullbackRelatorSet_iff
    {Y G : Type*} [Group G] {e : FreeGroup Y ≃* G} {S : Set G} {y : FreeGroup Y} :
    y ∈ freeGroupPullbackRelatorSet e S ↔ e y ∈ S

Membership in the free-group pullback relator set is equivalent to the displayed relator condition.

Show proof
theorem freeKernelTransversalRelatorSet_mem
    {X A : Type*} [Group A] {rels : Set (FreeGroup X)} {f : X → A}
    (hrels : ∀ r ∈ rels, FreeGroup.lift f r = 1)
    {T : Set (FreeGroup X)} {t : FreeGroup X} (ht : t ∈ T)
    {r : FreeGroup X} (hr : r ∈ rels) :
    (⟨t * r * t⁻¹, by
      change FreeGroup.lift f (t * r * t⁻¹) = 1
      simp only [map_mul, hrels r hr, mul_one, map_inv, mul_inv_cancel]⟩ : (FreeGroup.lift f).ker) ∈
        freeKernelTransversalRelatorSet (f := f) (rels := rels) T

The Reidemeister--Schreier relator identity is obtained by rewriting the original relator with the chosen transversal.

Show proof
theorem freeGroupPullbackRelator_mem
    {Y G : Type*} [Group G] (e : FreeGroup Y ≃* G) {S : Set G} {s : G}
    (hs : s ∈ S) :
    e.symm s ∈ freeGroupPullbackRelatorSet e S

The Reidemeister--Schreier relator identity is obtained by rewriting the original relator with the chosen transversal.

Show proof
theorem freeGroupPullbackRelator_mem_normalClosure
    {Y G : Type*} [Group G] (e : FreeGroup Y ≃* G) {S : Set G} {s : G}
    (hs : s ∈ S) :
    e.symm s ∈ Subgroup.normalClosure (freeGroupPullbackRelatorSet e S)

A pullback of an original relator lies in the normal closure of the pulled-back relator set.

Show proof
theorem freeGroupPullback_transversalRelator_mem_normalClosure
    {X A Y : Type*} [Group A] {rels : Set (FreeGroup X)} {f : X → A}
    (hrels : ∀ r ∈ rels, FreeGroup.lift f r = 1)
    {T : Set (FreeGroup X)} (e : FreeGroup Y ≃* (FreeGroup.lift f).ker)
    {t : FreeGroup X} (ht : t ∈ T) {r : FreeGroup X} (hr : r ∈ rels) :
    e.symm
        (⟨t * r * t⁻¹, by
          change FreeGroup.lift f (t * r * t⁻¹) = 1
          simp only [map_mul, hrels r hr, mul_one, map_inv, mul_inv_cancel]⟩ : (FreeGroup.lift f).ker) ∈
      Subgroup.normalClosure
        (freeGroupPullbackRelatorSet e
          (freeKernelTransversalRelatorSet (f := f) (rels := rels) T))

A pulled-back transversal relator lies in the normal closure of the pulled-back transversal relator set.

Show proof
theorem freeKernelElement_mem_transversalRelator_normalClosure_of_mem_normalClosure
    {X A : Type*} [Group A] {rels : Set (FreeGroup X)} {f : X → A}
    (hrels : ∀ r ∈ rels, FreeGroup.lift f r = 1) {T : Set (FreeGroup X)}
    (hT : Subgroup.IsComplement ((FreeGroup.lift f).ker : Set (FreeGroup X)) T)
    {k : (FreeGroup.lift f).ker}
    (hk : (k : FreeGroup X) ∈ Subgroup.normalClosure rels) :
      k ∈ Subgroup.normalClosure
        (freeKernelTransversalRelatorSet (f := f) (rels := rels) T)

A kernel word whose image lies in the target normal closure lies in the normal closure of the transversal relators.

Show proof
theorem freeGroupPullback_mem_normalClosure_of_image_mem
    {Y G : Type*} [Group G] (e : FreeGroup Y ≃* G) (S : Set G)
    {y : FreeGroup Y} (hy : e y ∈ Subgroup.normalClosure S) :
    y ∈ Subgroup.normalClosure (freeGroupPullbackRelatorSet e S)

A pulled-back free-group word lies in the source normal closure when its image lies in the target normal closure.

Show proof
theorem freeGroupPullback_transversalRelator_mem_normalClosure_of_mem_normalClosure
    {X A Y : Type*} [Group A] {rels : Set (FreeGroup X)} {f : X → A}
    (hrels : ∀ r ∈ rels, FreeGroup.lift f r = 1) {T : Set (FreeGroup X)}
    (hT : Subgroup.IsComplement ((FreeGroup.lift f).ker : Set (FreeGroup X)) T)
    (e : FreeGroup Y ≃* (FreeGroup.lift f).ker) {k : (FreeGroup.lift f).ker}
    (hk : (k : FreeGroup X) ∈ Subgroup.normalClosure rels) :
    e.symm k ∈
        Subgroup.normalClosure
          (freeGroupPullbackRelatorSet e
            (freeKernelTransversalRelatorSet (f := f) (rels := rels) T))

A pulled-back transversal relator lies in the source normal closure whenever the original word lies in the target normal closure.

Show proof