Module

KernelQuotient.lean

Nyll.ProCGroups.ReidemeisterSchreier.Discrete.Presentations.KernelQuotient
23 declarations indexed from sourceView source ↗

Reidemeister Schreier / Discrete / Presentations / Kernel Quotient

This module identifies a presented free-group kernel with its relator quotient. It packages the canonical surjection, computes its kernel, and derives quotient equivalences for the conjugate and transversal relators.

Declarations

ReidemeisterSchreier.Discrete.Presentations.presentedGroup_toGroup_ker_eq_map_freeGroupLift_ker

The kernel of the map from the presented group is the image of the free-group lift kernel.

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
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
ReidemeisterSchreier.Discrete.Presentations.presentedFreeKernelToPresentedKernelHom

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

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
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]
ReidemeisterSchreier.Discrete.Presentations.presentedFreeKernelToPresentedKernelHom_surjective

Every element of the presented kernel lifts to an element of the free-group lift kernel.

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
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)
ReidemeisterSchreier.Discrete.Presentations.presentedFreeKernelToPresentedKernelHom_ker_eq_comap_normalClosure

The kernel of the restricted map to the presented kernel is the pullback of the relator normal closure.

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
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)
ReidemeisterSchreier.Discrete.Presentations.presentedFreeKernelRelatorQuotientEquivPresentedKernel

Quotienting the free lift kernel by the pulled-back relator closure gives the presented kernel.

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
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
ReidemeisterSchreier.Discrete.Presentations.freeKernelConjugateRelatorSet

The relators in the free lift kernel obtained by conjugating defining relators by arbitrary words.

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
def freeKernelConjugateRelatorSet
    {X A : Type*} [Group A] {rels : Set (FreeGroup X)} {f : X → A} :
    Set (FreeGroup.lift f).ker
ReidemeisterSchreier.Discrete.Presentations.freeKernelTransversalRelatorSet

The conjugate relators obtained using only conjugating words from a chosen transversal.

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
def freeKernelTransversalRelatorSet
    {X A : Type*} [Group A] {rels : Set (FreeGroup X)} {f : X → A}
    (T : Set (FreeGroup X)) :
    Set (FreeGroup.lift f).ker
ReidemeisterSchreier.Discrete.Presentations.freeKernelTransversalRelatorSet_subset_conjugateRelatorSet

Every transversal conjugate relator is an unrestricted conjugate relator.

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
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)
ReidemeisterSchreier.Discrete.Presentations.freeKernelTransversalRelatorSet_normalClosure_eq_conjugateRelatorSet

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

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
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))
ReidemeisterSchreier.Discrete.Presentations.freeKernelConjugateRelatorSet_subset_comap_normalClosure

Every conjugate relator in the free lift kernel lies over the original relator normal closure.

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
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)
ReidemeisterSchreier.Discrete.Presentations.freeKernelConjugateRelatorSet_normalClosure_le_comap_normalClosure

The normal closure of the conjugate relators is contained in the pulled-back relator closure.

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
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)
ReidemeisterSchreier.Discrete.Presentations.freeKernelConjugateRelatorSet_normalClosure_eq_comap_normalClosure

Arbitrary conjugate relators normally generate the pullback of the original relator closure.

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
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)
ReidemeisterSchreier.Discrete.Presentations.freeKernelTransversalRelatorSet_normalClosure_eq_comap_normalClosure

Transversal conjugate relators normally generate the pullback of the original relator closure.

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
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)
ReidemeisterSchreier.Discrete.Presentations.presentedFreeKernelTransversalRelatorQuotientEquivPresentedKernel

The quotient of the free lift kernel by transversal relators is equivalent to the presented kernel.

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
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
ReidemeisterSchreier.Discrete.Presentations.presentedFreeKernelSchreierRelatorQuotientEquivPresentedKernel

Pulling transversal relators back to a free basis gives a relator quotient equivalent to the presented kernel.

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
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
ReidemeisterSchreier.Discrete.Presentations.mem_freeGroupPullbackRelatorSet_iff

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

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
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
ReidemeisterSchreier.Discrete.Presentations.freeKernelTransversalRelatorSet_mem

A conjugate of a defining relator by a transversal word belongs to the transversal relator set.

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
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 := by
  exact ⟨t, ht, r, hr, rfl⟩
ReidemeisterSchreier.Discrete.Presentations.freeGroupPullbackRelator_mem

The inverse image of a relator belongs to its pullback relator set.

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
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
ReidemeisterSchreier.Discrete.Presentations.freeGroupPullbackRelator_mem_normalClosure

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

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
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)
ReidemeisterSchreier.Discrete.Presentations.freeGroupPullback_transversalRelator_mem_normalClosure

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

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
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)) :=
  freeGroupPullbackRelator_mem_normalClosure e
    (freeKernelTransversalRelatorSet_mem hrels ht hr)
ReidemeisterSchreier.Discrete.Presentations.freeKernelElement_mem_transversalRelator_normalClosure_of_mem_normalClosure

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

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
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)
ReidemeisterSchreier.Discrete.Presentations.freeGroupPullback_mem_normalClosure_of_image_mem

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

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
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)
ReidemeisterSchreier.Discrete.Presentations.freeGroupPullback_transversalRelator_mem_normalClosure_of_mem_normalClosure

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

Source context 1 command

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

namespace ReidemeisterSchreier.Discrete.Presentations
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))