Module

RelatorReplacement.lean

Nyll.ProCGroups.ReidemeisterSchreier.Discrete.Presentations.Tietze.RelatorReplacement
36 declarations indexed from sourceView source ↗

Reidemeister Schreier / Discrete / Presentations / Tietze / Relator Replacement

This module supplies semantic presented-group equivalences for replacing relators: equal normal closures, mutual relator maps, generator maps, and compositions of these transformations.

Declarations

ReidemeisterSchreier.Discrete.Presentations.Presented.refl

The identity equivalence of a presented group.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def refl (R : Set (FreeGroup X)) :
    PresentedGroup R ≃* PresentedGroup R
ReidemeisterSchreier.Discrete.Presentations.Presented.symm

Reverse an equivalence between two presented groups.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def symm
    {R : Set (FreeGroup X)} {S : Set (FreeGroup Y)}
    (e : PresentedGroup R ≃* PresentedGroup S) :
    PresentedGroup S ≃* PresentedGroup R
ReidemeisterSchreier.Discrete.Presentations.Presented.trans

Compose equivalences of presented groups through an intermediate presentation.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def trans
    {R : Set (FreeGroup X)} {S : Set (FreeGroup Y)} {Z : Type*}
    {T : Set (FreeGroup Z)}
    (e₁ : PresentedGroup R ≃* PresentedGroup S)
    (e₂ : PresentedGroup S ≃* PresentedGroup T) :
    PresentedGroup R ≃* PresentedGroup T
ReidemeisterSchreier.Discrete.Presentations.Presented.ofMutualMapData

Mutual relator-quotient map data induces an equivalence between the two presented groups.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def ofMutualMapData
    (R : Set (FreeGroup X)) (S : Set (FreeGroup Y))
    (D : RelatorQuotientMutualMapData R S) :
    PresentedGroup R ≃* PresentedGroup S
ReidemeisterSchreier.Discrete.Presentations.Presented.ofTietzeEquiv

A Tietze equivalence induces an isomorphism between the corresponding presented groups.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def ofTietzeEquiv
    {R : Set (FreeGroup X)} {S : Set (FreeGroup Y)}
    (D : TietzeEquiv R S) :
    PresentedGroup R ≃* PresentedGroup S
ReidemeisterSchreier.Discrete.Presentations.Presented.ofNormalClosureEq

Equal normal closures give a Tietze equivalence between presentations with the same generators.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def ofNormalClosureEq
    {R S : Set (FreeGroup X)}
    (h : Subgroup.normalClosure R = Subgroup.normalClosure S) :
    PresentedGroup R ≃* PresentedGroup S
ReidemeisterSchreier.Discrete.Presentations.Presented.ofGeneratorMaps

Compatible generator maps in both directions induce an equivalence between the two presented groups.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def ofGeneratorMaps
    {R : Set (FreeGroup X)} {S : Set (FreeGroup Y)}
    (toGenerator : X → FreeGroup Y)
    (invGenerator : Y → FreeGroup X)
    (hR :
      ∀ r ∈ R,
        FreeGroup.lift toGenerator r ∈ Subgroup.normalClosure S)
    (hS :
      ∀ s ∈ S,
        FreeGroup.lift invGenerator s ∈ Subgroup.normalClosure R)
    (hinv_to :
      ∀ x : X,
        RelatorEquivalent R
          (FreeGroup.lift invGenerator (toGenerator x))
          (FreeGroup.of x))
    (hto_inv :
      ∀ y : Y,
        RelatorEquivalent S
          (FreeGroup.lift toGenerator (invGenerator y))
          (FreeGroup.of y)) :
    PresentedGroup R ≃* PresentedGroup S
ReidemeisterSchreier.Discrete.Presentations.Presented.ofGeneratorMapsRelatorEquivalent

Generator maps that preserve relators up to relator equivalence induce the corresponding presented-group map.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def ofGeneratorMapsRelatorEquivalent
    {R : Set (FreeGroup X)} {S : Set (FreeGroup Y)}
    (toGenerator : X → FreeGroup Y)
    (invGenerator : Y → FreeGroup X)
    (hR :
      ∀ r ∈ R,
        RelatorEquivalent S (FreeGroup.lift toGenerator r) 1)
    (hS :
      ∀ s ∈ S,
        RelatorEquivalent R (FreeGroup.lift invGenerator s) 1)
    (hinv_to :
      ∀ x : X,
        RelatorEquivalent R
          (FreeGroup.lift invGenerator (toGenerator x))
          (FreeGroup.of x))
    (hto_inv :
      ∀ y : Y,
        RelatorEquivalent S
          (FreeGroup.lift toGenerator (invGenerator y))
          (FreeGroup.of y)) :
    PresentedGroup R ≃* PresentedGroup S
ReidemeisterSchreier.Discrete.Presentations.Presented.replaceRelators

Replace a family of relators by equivalent relators in a presented group.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def replaceRelators
    {R S : Set (FreeGroup X)}
    (hR_to_S : ∀ r ∈ R, RelatorEquivalent S r 1)
    (hS_to_R : ∀ s ∈ S, RelatorEquivalent R s 1) :
    PresentedGroup R ≃* PresentedGroup S
ReidemeisterSchreier.Discrete.Presentations.Presented.replaceRelatorsTietzeEquiv

Replacing the relator set by another set with the same normal closure is a Tietze equivalence.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def replaceRelatorsTietzeEquiv
    {R S : Set (FreeGroup X)}
    (hR_to_S : ∀ r ∈ R, RelatorEquivalent S r 1)
    (hS_to_R : ∀ s ∈ S, RelatorEquivalent R s 1) :
    TietzeEquiv R S
ReidemeisterSchreier.Discrete.Presentations.Presented.replaceRelator

Replace one relator by an equivalent relator in a presented group.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def replaceRelator
    {R : Set (FreeGroup X)} {oldRelator newRelator : FreeGroup X}
    (holdRelator :
      RelatorEquivalent (insert newRelator (R \ {oldRelator})) oldRelator 1)
    (hnewRelator : RelatorEquivalent R newRelator 1) :
    PresentedGroup R ≃*
      PresentedGroup (insert newRelator (R \ {oldRelator}))
ReidemeisterSchreier.Discrete.Presentations.Presented.replaceRelatorTietzeEquiv

Replacing one relator by another without changing the normal closure is a Tietze equivalence.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def replaceRelatorTietzeEquiv
    {R : Set (FreeGroup X)} {oldRelator newRelator : FreeGroup X}
    (holdRelator :
      RelatorEquivalent (insert newRelator (R \ {oldRelator})) oldRelator 1)
    (hnewRelator : RelatorEquivalent R newRelator 1) :
    TietzeEquiv R (insert newRelator (R \ {oldRelator}))
ReidemeisterSchreier.Discrete.Presentations.Presented.normalClosure_union_eq_left_of_subset

Adjoining relators already contained in the original normal closure does not change it.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
theorem normalClosure_union_eq_left_of_subset
    {R S : Set (FreeGroup X)}
    (hS : S ⊆ Subgroup.normalClosure R) :
    Subgroup.normalClosure (R ∪ S) = Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.Presentations.Presented.normalClosure_sdiff_eq_of_subset

Removing relators already contained in the normal closure of the remaining relators does not change that normal closure.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
theorem normalClosure_sdiff_eq_of_subset
    {R D : Set (FreeGroup X)}
    (hD : ∀ d ∈ D, d ∈ R → d ∈ Subgroup.normalClosure (R \ D)) :
    Subgroup.normalClosure R = Subgroup.normalClosure (R \ D)
ReidemeisterSchreier.Discrete.Presentations.Presented.addRedundantRelators

Adding a family of redundant relators to a presented group does not change the presented group.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def addRedundantRelators
    {R S : Set (FreeGroup X)}
    (hS : S ⊆ Subgroup.normalClosure R) :
    PresentedGroup (R ∪ S) ≃* PresentedGroup R
ReidemeisterSchreier.Discrete.Presentations.Presented.addRedundantRelatorsRelatorEquivalent

Adding redundant relators preserves relator equivalence in the presented group.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def addRedundantRelatorsRelatorEquivalent
    {R S : Set (FreeGroup X)}
    (hS : ∀ s ∈ S, RelatorEquivalent R s 1) :
    PresentedGroup (R ∪ S) ≃* PresentedGroup R
ReidemeisterSchreier.Discrete.Presentations.Presented.addRedundantRelatorsTietzeEquiv

Adding a set of relators already in the normal closure is a Tietze equivalence.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def addRedundantRelatorsTietzeEquiv
    {R S : Set (FreeGroup X)}
    (hS : S ⊆ Subgroup.normalClosure R) :
    TietzeEquiv (R ∪ S) R
ReidemeisterSchreier.Discrete.Presentations.Presented.addRedundantRelatorsRelatorEquivalentTietzeEquiv

Adding redundant relators gives a Tietze equivalence of presentations.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def addRedundantRelatorsRelatorEquivalentTietzeEquiv
    {R S : Set (FreeGroup X)}
    (hS : ∀ s ∈ S, RelatorEquivalent R s 1) :
    TietzeEquiv (R ∪ S) R
ReidemeisterSchreier.Discrete.Presentations.Presented.addRedundantRelatorsInverse

Remove a previously added family of redundant relators from a presented group.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def addRedundantRelatorsInverse
    {R S : Set (FreeGroup X)}
    (hS : S ⊆ Subgroup.normalClosure R) :
    PresentedGroup R ≃* PresentedGroup (R ∪ S)
ReidemeisterSchreier.Discrete.Presentations.Presented.addRedundantRelatorsRelatorEquivalentInverse

The inverse direction after adding redundant relators preserves relator equivalence.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def addRedundantRelatorsRelatorEquivalentInverse
    {R S : Set (FreeGroup X)}
    (hS : ∀ s ∈ S, RelatorEquivalent R s 1) :
    PresentedGroup R ≃* PresentedGroup (R ∪ S)
ReidemeisterSchreier.Discrete.Presentations.Presented.removeRelatorSubset

Remove a subset of relators already generated by the remaining relators.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def removeRelatorSubset
    {R D : Set (FreeGroup X)}
    (hD : ∀ d ∈ D, d ∈ R → d ∈ Subgroup.normalClosure (R \ D)) :
    PresentedGroup R ≃* PresentedGroup (R \ D)
ReidemeisterSchreier.Discrete.Presentations.Presented.removeRelatorSubsetRelatorEquivalent

Removing a relator subset preserves relator equivalence under the stated normal-closure hypothesis.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def removeRelatorSubsetRelatorEquivalent
    {R D : Set (FreeGroup X)}
    (hD : ∀ d ∈ D, d ∈ R → RelatorEquivalent (R \ D) d 1) :
    PresentedGroup R ≃* PresentedGroup (R \ D)
ReidemeisterSchreier.Discrete.Presentations.Presented.removeRelatorSubsetTietzeEquiv

Removing a subset of redundant relators is a Tietze equivalence when the normal closure is unchanged.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def removeRelatorSubsetTietzeEquiv
    {R D : Set (FreeGroup X)}
    (hD : ∀ d ∈ D, d ∈ R → d ∈ Subgroup.normalClosure (R \ D)) :
    TietzeEquiv R (R \ D)
ReidemeisterSchreier.Discrete.Presentations.Presented.removeRelatorSubsetRelatorEquivalentTietzeEquiv

Removing a redundant relator subset gives a Tietze equivalence of presentations.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def removeRelatorSubsetRelatorEquivalentTietzeEquiv
    {R D : Set (FreeGroup X)}
    (hD : ∀ d ∈ D, d ∈ R → RelatorEquivalent (R \ D) d 1) :
    TietzeEquiv R (R \ D)
ReidemeisterSchreier.Discrete.Presentations.Presented.removeRelatorSubsetInverse

Add back a relator subset previously removed as redundant.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def removeRelatorSubsetInverse
    {R D : Set (FreeGroup X)}
    (hD : ∀ d ∈ D, d ∈ R → d ∈ Subgroup.normalClosure (R \ D)) :
    PresentedGroup (R \ D) ≃* PresentedGroup R
ReidemeisterSchreier.Discrete.Presentations.Presented.removeRelatorSubsetRelatorEquivalentInverse

The inverse direction after removing a relator subset preserves relator equivalence.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def removeRelatorSubsetRelatorEquivalentInverse
    {R D : Set (FreeGroup X)}
    (hD : ∀ d ∈ D, d ∈ R → RelatorEquivalent (R \ D) d 1) :
    PresentedGroup (R \ D) ≃* PresentedGroup R
ReidemeisterSchreier.Discrete.Presentations.Presented.replaceRelatorSubset

Replace a whole subfamily \(D\) of relators by a new family \(E\). Relators outside \(D\) are kept unchanged.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def replaceRelatorSubset
    {R D E : Set (FreeGroup X)}
    (hD :
      ∀ d ∈ D, d ∈ R → d ∈ Subgroup.normalClosure ((R \ D) ∪ E))
    (hE : E ⊆ Subgroup.normalClosure R) :
    PresentedGroup R ≃* PresentedGroup ((R \ D) ∪ E)
ReidemeisterSchreier.Discrete.Presentations.Presented.replaceRelatorSubsetRelatorEquivalent

Replacing a relator subset by relator-equivalent relators preserves relator equivalence.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def replaceRelatorSubsetRelatorEquivalent
    {R D E : Set (FreeGroup X)}
    (hD :
      ∀ d ∈ D, d ∈ R → RelatorEquivalent ((R \ D) ∪ E) d 1)
    (hE : ∀ e ∈ E, RelatorEquivalent R e 1) :
    PresentedGroup R ≃* PresentedGroup ((R \ D) ∪ E)
ReidemeisterSchreier.Discrete.Presentations.Presented.replaceRelatorSubsetTietzeEquiv

Replacing a subset of relators by another subset with the same normal closure is a Tietze equivalence.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def replaceRelatorSubsetTietzeEquiv
    {R D E : Set (FreeGroup X)}
    (hD :
      ∀ d ∈ D, d ∈ R → d ∈ Subgroup.normalClosure ((R \ D) ∪ E))
    (hE : E ⊆ Subgroup.normalClosure R) :
    TietzeEquiv R ((R \ D) ∪ E)
ReidemeisterSchreier.Discrete.Presentations.Presented.replaceRelatorSubsetRelatorEquivalentTietzeEquiv

Replacing a relator subset by relator-equivalent relators gives a Tietze equivalence.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def replaceRelatorSubsetRelatorEquivalentTietzeEquiv
    {R D E : Set (FreeGroup X)}
    (hD :
      ∀ d ∈ D, d ∈ R → RelatorEquivalent ((R \ D) ∪ E) d 1)
    (hE : ∀ e ∈ E, RelatorEquivalent R e 1) :
    TietzeEquiv R ((R \ D) ∪ E)
ReidemeisterSchreier.Discrete.Presentations.Presented.addRedundantRelator

Adding one redundant relator to a presented group does not change the presented group.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def addRedundantRelator
    {R : Set (FreeGroup X)} {r : FreeGroup X}
    (hr : r ∈ Subgroup.normalClosure R) :
    PresentedGroup (insert r R) ≃* PresentedGroup R
ReidemeisterSchreier.Discrete.Presentations.Presented.addRedundantRelatorTietzeEquiv

Adding one relator already in the normal closure is a Tietze equivalence.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def addRedundantRelatorTietzeEquiv
    {R : Set (FreeGroup X)} {r : FreeGroup X}
    (hr : r ∈ Subgroup.normalClosure R) :
    TietzeEquiv (insert r R) R
ReidemeisterSchreier.Discrete.Presentations.Presented.removeRedundantRelator

Remove one redundant relator from a presented group without changing the presented group.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def removeRedundantRelator
    {R : Set (FreeGroup X)} {r : FreeGroup X}
    (hr : r ∈ Subgroup.normalClosure (R \ {r})) :
    PresentedGroup R ≃* PresentedGroup (R \ {r})
ReidemeisterSchreier.Discrete.Presentations.Presented.removeRedundantRelatorTietzeEquiv

Removing one relator whose normal closure is generated by the remaining relators is a Tietze equivalence.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def removeRedundantRelatorTietzeEquiv
    {R : Set (FreeGroup X)} {r : FreeGroup X}
    (hr : r ∈ Subgroup.normalClosure (R \ {r})) :
    TietzeEquiv R (R \ {r})
ReidemeisterSchreier.Discrete.Presentations.Presented.renameGenerators

Rename the generators of a presented group.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def renameGenerators
    (R : Set (FreeGroup X)) (e : X ≃ Y) :
    PresentedGroup R ≃*
      PresentedGroup (FreeGroup.freeGroupCongr e '' R)
ReidemeisterSchreier.Discrete.Presentations.Presented.renameGeneratorsTietzeEquiv

Renaming generators along an equivalence gives a Tietze equivalence.

Source context 4 commands

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

universe u v w
namespace ReidemeisterSchreier.Discrete.Presentations
namespace Presented
variable {X Y : Type*}
def renameGeneratorsTietzeEquiv
    (R : Set (FreeGroup X)) (e : X ≃ Y) :
    TietzeEquiv R (FreeGroup.freeGroupCongr e '' R)