Module

Rewriting.lean

Nyll.ProCGroups.ReidemeisterSchreier.Discrete.ReidemeisterSchreier.Rewriting
136 declarations indexed from sourceView source ↗

Reidemeister Schreier / Discrete / Reidemeister Schreier / Rewriting

This module defines abstract right Schreier representatives, their associated symbols and generators, and the rewriting maps that turn kernel words into words on Schreier symbols.

Declarations

ReidemeisterSchreier.Discrete.RightSchreierRepresentative

A normalized representative function for right cosets of \(L\) in a free group. The condition \(g(\operatorname{rep}(g))^{-1}\in L\) says that \(\operatorname{rep}(g)\) represents the same right coset as \(g\).

Source context 3 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
structure RightSchreierRepresentative (L : Subgroup (FreeGroup X)) where
  /-- The chosen representative of the right coset of each free-group element. -/
  representative : FreeGroup X → FreeGroup X
  /-- Every element and its chosen representative belong to the same right coset of \(L\). -/
  sameRightCoset : ∀ g, g * (representative g)⁻¹ ∈ L
  /-- Elements in the same right coset receive the same representative. -/
  representative_eq_of_sameRightCoset :
    ∀ {g h}, g * h⁻¹ ∈ L → representative g = representative h
  /-- The identity coset is represented by the identity. -/
  representative_one : representative 1 = 1
ReidemeisterSchreier.Discrete.RightSchreierRepresentative.representative_mul_inv_mem

A representative differs from the original element by an element of the subgroup.

Source context 5 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace RightSchreierRepresentative
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
theorem representative_mul_inv_mem (g : FreeGroup X) :
    S.representative g * g⁻¹ ∈ L
ReidemeisterSchreier.Discrete.RightSchreierRepresentative.representative_eq_one_of_mem

The right Schreier representative is the identity exactly in the subgroup-membership case.

Source context 5 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace RightSchreierRepresentative
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
theorem representative_eq_one_of_mem {g : FreeGroup X} (hg : g ∈ L) :
    S.representative g = 1
ReidemeisterSchreier.Discrete.RightSchreierRepresentative.representative_mul_generator_eq

Replacing a word by its chosen right Schreier representative does not change the representative selected after multiplying by a generator.

Source context 5 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace RightSchreierRepresentative
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
theorem representative_mul_generator_eq (p : FreeGroup X) (x : X) :
    S.representative (S.representative p * FreeGroup.of x) =
      S.representative (p * FreeGroup.of x)
ReidemeisterSchreier.Discrete.RightSchreierRepresentative.representative_inv_generator_mul_generator_eq

After moving backward by a generator, replacing the resulting word by its representative and then moving forward selects the original word's representative.

Source context 5 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace RightSchreierRepresentative
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
theorem representative_inv_generator_mul_generator_eq (p : FreeGroup X) (x : X) :
    S.representative (S.representative (p * (FreeGroup.of x)⁻¹) * FreeGroup.of x) =
      S.representative p
ReidemeisterSchreier.Discrete.SchreierSymbol

Labels for Schreier generators. A label \((t,x)\) represents the generator \(t x\overline{t x}^{-1}\).

Source context 3 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
abbrev SchreierSymbol (X : Type*)
ReidemeisterSchreier.Discrete.SchreierRewriting.schreierGenerator

The Schreier generator is the correction term \(t x \overline{t x}^{-1}\) attached to a representative and a generator.

Source context 5 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
def schreierGenerator (t : FreeGroup X) (x : X) : FreeGroup X
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEval

Evaluation of one Schreier symbol as its Schreier generator in the free group.

Source context 5 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
def symbolEval (z : SchreierSymbol X) : FreeGroup X
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEval_mem

Each evaluated Schreier symbol lies in the subgroup being rewritten.

Source context 5 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
theorem symbolEval_mem (z : SchreierSymbol X) :
    symbolEval S z ∈ L
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEvalHom

The homomorphism extending Schreier-symbol evaluation to the free group on Schreier symbols.

Source context 5 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
def symbolEvalHom : FreeGroup (SchreierSymbol X) →* FreeGroup X
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEvalHom_of

The evaluation homomorphism sends a Schreier-symbol generator to its symbol evaluation.

Source context 5 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
theorem symbolEvalHom_of (z : SchreierSymbol X) :
    symbolEvalHom S (FreeGroup.of z) = symbolEval S z
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEvalHom_mem

The image of the Schreier-symbol evaluation homomorphism lies in the subgroup being rewritten.

Source context 5 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
theorem symbolEvalHom_mem (q : FreeGroup (SchreierSymbol X)) :
    symbolEvalHom S q ∈ L
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEvalSubgroupHom

Evaluation as a homomorphism into the subgroup being rewritten.

Source context 5 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
def symbolEvalSubgroupHom : FreeGroup (SchreierSymbol X) →* L where
  toFun q := ⟨symbolEvalHom S q, symbolEvalHom_mem (S := S) q⟩
  map_one' := Subtype.ext (symbolEvalHom S).map_one
  map_mul' q r := Subtype.ext ((symbolEvalHom S).map_mul q r)
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEvalSubgroupHom_apply

Forgetting the subgroup target of \(\mathrm{symbolEvalSubgroupHom}\) gives the ordinary evaluation homomorphism.

Source context 5 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
theorem symbolEvalSubgroupHom_apply (q : FreeGroup (SchreierSymbol X)) :
    (symbolEvalSubgroupHom S q : FreeGroup X) = symbolEvalHom S q
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEval_representative_mul_generator

Evaluation of the Schreier symbol starting at a chosen representative has the expected positive-letter formula.

Source context 5 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
theorem symbolEval_representative_mul_generator (p : FreeGroup X) (x : X) :
    symbolEval S (S.representative p, x) =
      S.representative p * FreeGroup.of x * (S.representative (p * FreeGroup.of x))⁻¹
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEval_representative_inv_generator

Evaluation of the Schreier symbol for an inverse-letter step has the expected representative formula.

Source context 5 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
theorem symbolEval_representative_inv_generator (p : FreeGroup X) (x : X) :
    symbolEval S (S.representative (p * (FreeGroup.of x)⁻¹), x) =
      S.representative (p * (FreeGroup.of x)⁻¹) *
        FreeGroup.of x * (S.representative p)⁻¹
ReidemeisterSchreier.Discrete.SchreierRewriting.mk_cons_true

A word list beginning with a positive letter represents that generator multiplied by the word represented by the tail.

Source context 5 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
theorem mk_cons_true (x : X) (xs : List (X × Bool)) :
    FreeGroup.mk ((x, true) :: xs) =
      FreeGroup.of x * FreeGroup.mk xs
ReidemeisterSchreier.Discrete.SchreierRewriting.mk_cons_false

A word list beginning with a negative letter represents the inverse generator multiplied by the word represented by the tail.

Source context 5 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
theorem mk_cons_false (x : X) (xs : List (X × Bool)) :
    FreeGroup.mk ((x, false) :: xs) =
      (FreeGroup.of x)⁻¹ * FreeGroup.mk xs
ReidemeisterSchreier.Discrete.SchreierRewriting.tauList

Schreier rewriting of a raw word list, starting from prefix \(p\).

Source context 5 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
def tauList : FreeGroup X → List (X × Bool) → FreeGroup (SchreierSymbol X)
  | _p, [] => 1
  | p, (x, true) :: xs =>
      FreeGroup.of (S.representative p, x) *
        tauList (p * FreeGroup.of x) xs
  | p, (x, false) :: xs =>
      (FreeGroup.of (S.representative (p * (FreeGroup.of x)⁻¹), x))⁻¹ *
        tauList (p * (FreeGroup.of x)⁻¹) xs
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEvalHom_tauList

Evaluating a \(\tau\)-list gives the quotient-section conjugate of the represented word.

Source context 5 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
theorem symbolEvalHom_tauList
    (p : FreeGroup X) (xs : List (X × Bool)) :
    symbolEvalHom S (tauList S p xs) =
      S.representative p * FreeGroup.mk xs *
        (S.representative (p * FreeGroup.mk xs))⁻¹
ReidemeisterSchreier.Discrete.SchreierRewriting.tauList_append

The \(\tau\)-list rewrite of a concatenated word splits as the product of the first rewrite and the rewrite of the second word from the updated quotient element.

Source context 5 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
theorem tauList_append
    (p : FreeGroup X) (xs ys : List (X × Bool)) :
    tauList S p (xs ++ ys) =
      tauList S p xs * tauList S (p * FreeGroup.mk xs) ys
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEvalHom_tauList_mem

The symbol evaluation of the \(\tau\)-rewrite lies in the Schreier subgroup kernel.

Source context 5 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
theorem symbolEvalHom_tauList_mem
    (p : FreeGroup X) (xs : List (X × Bool)) :
    symbolEvalHom S (tauList S p xs) ∈ L
ReidemeisterSchreier.Discrete.SchreierRewriting.tau

Explicit Schreier rewriting of a free group word.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def tau (t w : FreeGroup X) : FreeGroup (SchreierSymbol X)
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEvalHom_tau

Evaluating a \(\tau\)-word gives the quotient-section conjugate of the rewritten word.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem symbolEvalHom_tau
    (t w : FreeGroup X) :
    symbolEvalHom S (tau S t w) =
      S.representative t * w * (S.representative (t * w))⁻¹
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEvalHom_tau_mem

The symbol evaluation of the \(\tau\)-rewrite lies in the Schreier subgroup kernel.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem symbolEvalHom_tau_mem
    (t w : FreeGroup X) :
    symbolEvalHom S (tau S t w) ∈ L
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEvalHom_tau_of_representative

When the starting word is already the chosen representative, evaluating \(\tau\) gives that representative times the word and the inverse of the next representative.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem symbolEvalHom_tau_of_representative
    {t w : FreeGroup X} (ht : S.representative t = t) :
    symbolEvalHom S (tau S t w) =
      t * w * (S.representative (t * w))⁻¹
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEvalHom_tau_one_of_mem

For a word in the Schreier subgroup, evaluating its \(\tau\)-rewrite from the identity representative recovers that word.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem symbolEvalHom_tau_one_of_mem
    {w : FreeGroup X} (hw : w ∈ L) :
    symbolEvalHom S (tau S 1 w) = w
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSet

The set of representatives selected by a normalized Schreier representative function.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativeSet : Set (FreeGroup X)
ReidemeisterSchreier.Discrete.SchreierRewriting.schreierRelatorsOn

The Schreier relators attached to a relator set \(R\) and an explicit transversal \(T\): all rewrites \(\tau(t,r)\) with \(t \in T\).

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def schreierRelatorsOn
    (T : Set (FreeGroup X)) (R : Set (FreeGroup X)) :
    Set (FreeGroup (SchreierSymbol X))
ReidemeisterSchreier.Discrete.SchreierRewriting.schreierRelators

The default Schreier relator set is formed by rewriting relators with the range of the representative function as the transversal.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def schreierRelators (R : Set (FreeGroup X)) :
    Set (FreeGroup (SchreierSymbol X))
ReidemeisterSchreier.Discrete.SchreierRewriting.degenerateSchreierRelatorsOn

Degenerate Schreier generators \(s(t,x)\) whose evaluation is already \(1\). These are the Tietze-removable generators in the raw Reidemeister--Schreier presentation.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def degenerateSchreierRelatorsOn
    (T : Set (FreeGroup X)) :
    Set (FreeGroup (SchreierSymbol X))
ReidemeisterSchreier.Discrete.SchreierRewriting.degenerateSchreierRelators

The set of degenerate Schreier relators for the default representative set.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def degenerateSchreierRelators :
    Set (FreeGroup (SchreierSymbol X))
ReidemeisterSchreier.Discrete.SchreierRewriting.presentationRelatorsOn

The raw relator set for the Reidemeister--Schreier presentation: rewritten original relators plus degenerate Schreier generators.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def presentationRelatorsOn
    (T : Set (FreeGroup X)) (R : Set (FreeGroup X)) :
    Set (FreeGroup (SchreierSymbol X))
ReidemeisterSchreier.Discrete.SchreierRewriting.presentationRelators

The Reidemeister--Schreier presentation relators are the Schreier relators together with the degenerate Schreier-generator relators.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def presentationRelators
    (R : Set (FreeGroup X)) :
    Set (FreeGroup (SchreierSymbol X))
ReidemeisterSchreier.Discrete.SchreierRewriting.tau_mem_schreierRelatorsOn

The \(\tau\)-rewrite of an original relator at a chosen representative belongs to the Schreier relator set on that representative set.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem tau_mem_schreierRelatorsOn
    {T R : Set (FreeGroup X)} {t : FreeGroup X} (ht : t ∈ T)
    {r : FreeGroup X} (hr : r ∈ R) :
    tau S t r ∈ schreierRelatorsOn S T R
ReidemeisterSchreier.Discrete.SchreierRewriting.tau_representative_mem_schreierRelators

The \(\tau\)-rewrite at the canonical representative of an original relator belongs to the default Schreier relator set.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem tau_representative_mem_schreierRelators
    {R : Set (FreeGroup X)} (t : FreeGroup X) {r : FreeGroup X} (hr : r ∈ R) :
    tau S (S.representative t) r ∈ schreierRelators S R
ReidemeisterSchreier.Discrete.SchreierRewriting.degenerateSchreierRelator_eval_eq_one

Every degenerate Schreier relator evaluates to the identity under the Schreier evaluation map.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem degenerateSchreierRelator_eval_eq_one
    {T : Set (FreeGroup X)}
    {q : FreeGroup (SchreierSymbol X)}
    (hq : q ∈ degenerateSchreierRelatorsOn S T) :
    symbolEvalHom S q = 1
ReidemeisterSchreier.Discrete.SchreierRewriting.eval_degenerateSchreierRelator_mem_normalClosure

The evaluation of a degenerate Schreier relator lies in the normal closure of the defining source relators.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem eval_degenerateSchreierRelator_mem_normalClosure
    {T R : Set (FreeGroup X)}
    {q : FreeGroup (SchreierSymbol X)}
    (hq : q ∈ degenerateSchreierRelatorsOn S T) :
    symbolEvalHom S q ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.SchreierRewriting.representative_mul_relator_eq

Multiplying a chosen representative by an original relator does not change the chosen representative when the relators lie in the subgroup.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem representative_mul_relator_eq
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    (t : FreeGroup X) {r : FreeGroup X} (hr : r ∈ R) :
    S.representative (t * r) = S.representative t
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEvalHom_tau_relator_mem_normalClosure

The symbol evaluation of the \(\tau\)-rewrite of a defining relator lies in the normal closure of the original relators.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem symbolEvalHom_tau_relator_mem_normalClosure
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    (t : FreeGroup X) {r : FreeGroup X} (hr : r ∈ R) :
    symbolEvalHom S (tau S t r) ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.SchreierRewriting.eval_schreierRelatorOn_mem_normalClosure

Evaluating a Schreier relator on a specified representative set gives an element of the normal closure of the original relators.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem eval_schreierRelatorOn_mem_normalClosure
    {T R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    {q : FreeGroup (SchreierSymbol X)}
    (hq : q ∈ schreierRelatorsOn S T R) :
    symbolEvalHom S q ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.SchreierRewriting.eval_schreierRelator_mem_normalClosure

Evaluating a default Schreier relator gives an element of the normal closure of the original relators.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem eval_schreierRelator_mem_normalClosure
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    {q : FreeGroup (SchreierSymbol X)}
    (hq : q ∈ schreierRelators S R) :
    symbolEvalHom S q ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.SchreierRewriting.eval_mem_normalClosure_of_mem_normalClosure_schreierRelatorsOn

Membership in the source relator normal closure is preserved by the Reidemeister--Schreier evaluation map.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem eval_mem_normalClosure_of_mem_normalClosure_schreierRelatorsOn
    {T R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    {q : FreeGroup (SchreierSymbol X)}
    (hq : q ∈ Subgroup.normalClosure (schreierRelatorsOn S T R)) :
    symbolEvalHom S q ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.SchreierRewriting.eval_mem_normalClosure_of_mem_normalClosure_schreierRelators

Membership in the source relator normal closure is preserved by the Reidemeister--Schreier evaluation map.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem eval_mem_normalClosure_of_mem_normalClosure_schreierRelators
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    {q : FreeGroup (SchreierSymbol X)}
    (hq : q ∈ Subgroup.normalClosure (schreierRelators S R)) :
    symbolEvalHom S q ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.SchreierRewriting.eval_presentationRelatorOn_mem_normalClosure

Evaluating a presentation relator on a specified representative set gives an element of the normal closure of the original relators.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem eval_presentationRelatorOn_mem_normalClosure
    {T R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    {q : FreeGroup (SchreierSymbol X)}
    (hq : q ∈ presentationRelatorsOn S T R) :
    symbolEvalHom S q ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.SchreierRewriting.eval_mem_normalClosure_of_mem_normalClosure_presentationRelatorsOn

Membership in the source relator normal closure is preserved by the Reidemeister--Schreier evaluation map.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem eval_mem_normalClosure_of_mem_normalClosure_presentationRelatorsOn
    {T R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    {q : FreeGroup (SchreierSymbol X)}
    (hq : q ∈ Subgroup.normalClosure (presentationRelatorsOn S T R)) :
    symbolEvalHom S q ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.SchreierRewriting.eval_mem_normalClosure_of_mem_normalClosure_presentationRelators

Membership in the source relator normal closure is preserved by the Reidemeister--Schreier evaluation map.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem eval_mem_normalClosure_of_mem_normalClosure_presentationRelators
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    {q : FreeGroup (SchreierSymbol X)}
    (hq : q ∈ Subgroup.normalClosure (presentationRelators S R)) :
    symbolEvalHom S q ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.SchreierRewriting.relatorSubgroup

The subgroup of \(L\) induced by the ambient normal closure of the original relators.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def relatorSubgroup
    (R : Set (FreeGroup X)) :
    Subgroup L where
  carrier := {g | (g : FreeGroup X) ∈ Subgroup.normalClosure R}
  one_mem' := by
    simp only [Set.mem_ofPred_eq, OneMemClass.coe_one, one_mem]
  mul_mem' := by
    intro a b ha hb
    exact Subgroup.mul_mem (Subgroup.normalClosure R) ha hb
  inv_mem' := by
    intro a ha
    exact Subgroup.inv_mem (Subgroup.normalClosure R) ha
ReidemeisterSchreier.Discrete.SchreierRewriting.relatorSubgroup_normal

The subgroup generated by the relators of the presented group is normal.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
instance relatorSubgroup_normal
    (R : Set (FreeGroup X)) :
    (relatorSubgroup (L := L) R).Normal where
  conj_mem n hn g := by
    change ((g : FreeGroup X) * (n : FreeGroup X) * (g : FreeGroup X)⁻¹) ∈
      Subgroup.normalClosure R
    simpa [mul_assoc] using
      (Subgroup.normalClosure_normal.conj_mem
        (n : FreeGroup X) hn (g : FreeGroup X))
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEvalSubgroupHom_mem_relatorSubgroup_of_mem_normalClosure_schreierRelatorsOn

The symbol-evaluation subgroup homomorphism sends the indicated normal-closure element into the relator subgroup.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem symbolEvalSubgroupHom_mem_relatorSubgroup_of_mem_normalClosure_schreierRelatorsOn
    {T R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    {q : FreeGroup (SchreierSymbol X)}
    (hq : q ∈ Subgroup.normalClosure (schreierRelatorsOn S T R)) :
    symbolEvalSubgroupHom S q ∈ relatorSubgroup (L := L) R
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEvalQuotientHomOn

The canonical map from the raw Schreier-relator quotient to the subgroup quotient \(L/(L \cap \langle\!\langle R \rangle\!\rangle)\).

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def symbolEvalQuotientHomOn
    {T R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L) :
    FreeGroup (SchreierSymbol X) ⧸
        Subgroup.normalClosure (schreierRelatorsOn S T R) →*
      L ⧸ relatorSubgroup (L := L) R
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEvalQuotientHom

The canonical evaluation map from the Schreier-relator quotient to the relator-subgroup quotient of the subgroup.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def symbolEvalQuotientHom
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L) :
    FreeGroup (SchreierSymbol X) ⧸
        Subgroup.normalClosure (schreierRelators S R) →*
      L ⧸ relatorSubgroup (L := L) R
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEvalPresentationQuotientHomOn

The evaluation map from a raw presentation quotient with a specified transversal set to the relator-subgroup quotient.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def symbolEvalPresentationQuotientHomOn
    {T R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L) :
    FreeGroup (SchreierSymbol X) ⧸
        Subgroup.normalClosure (presentationRelatorsOn S T R) →*
      L ⧸ relatorSubgroup (L := L) R
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEvalPresentationQuotientHom

The evaluation map from the raw Schreier presentation quotient to the relator-subgroup quotient.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def symbolEvalPresentationQuotientHom
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L) :
    FreeGroup (SchreierSymbol X) ⧸
        Subgroup.normalClosure (presentationRelators S R) →*
      L ⧸ relatorSubgroup (L := L) R
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEvalPresentationQuotientHomOn_surjective

The specified-transversal presentation evaluation quotient map is surjective.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem symbolEvalPresentationQuotientHomOn_surjective
    {T R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L) :
    Function.Surjective (symbolEvalPresentationQuotientHomOn (S := S) (T := T) hR)
ReidemeisterSchreier.Discrete.SchreierRewriting.symbolEvalPresentationQuotientHom_surjective

The raw Schreier presentation evaluation quotient map is surjective.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem symbolEvalPresentationQuotientHom_surjective
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L) :
    Function.Surjective (symbolEvalPresentationQuotientHom (S := S) hR)
ReidemeisterSchreier.Discrete.SchreierRewriting.eval_tau_one_relator_mem_normalClosure

The kernel relator case: if an original relator lies in the subgroup being rewritten, its rewrite from the identity evaluates back to that relator.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem eval_tau_one_relator_mem_normalClosure
    {R : Set (FreeGroup X)}
    {r : FreeGroup X} (hr : r ∈ R) (hrL : r ∈ L) :
    symbolEvalHom S (tau S 1 r) ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.SchreierRewriting.RepresentativeSchreierSymbol

Schreier generator labels indexed by the chosen representative set.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
abbrev RepresentativeSchreierSymbol
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSchreierGenerator

The representative Schreier generator is the correction term determined by a representative and an original generator.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativeSchreierGenerator
    (z : RepresentativeSchreierSymbol S) : FreeGroup X
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSymbolEval

Evaluation of one representative-indexed Schreier symbol as its Schreier generator.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativeSymbolEval
    (z : RepresentativeSchreierSymbol S) : FreeGroup X
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSymbolEval_mem

Each evaluated representative-indexed Schreier symbol lies in the subgroup being rewritten.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem representativeSymbolEval_mem
    (z : RepresentativeSchreierSymbol S) :
    representativeSymbolEval S z ∈ L
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSymbolEvalHom

The homomorphism extending representative-indexed Schreier-symbol evaluation.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativeSymbolEvalHom :
    FreeGroup (RepresentativeSchreierSymbol S) →* FreeGroup X
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSymbolEvalHom_of

The representative evaluation homomorphism sends a generator to its representative symbol evaluation.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem representativeSymbolEvalHom_of
    (z : RepresentativeSchreierSymbol S) :
    representativeSymbolEvalHom S (FreeGroup.of z) =
      representativeSymbolEval S z
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSymbolEvalHom_mem

The image of the representative evaluation homomorphism lies in the subgroup being rewritten.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem representativeSymbolEvalHom_mem
    (q : FreeGroup (RepresentativeSchreierSymbol S)) :
    representativeSymbolEvalHom S q ∈ L
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSymbolEvalSubgroupHom

Representative-indexed Schreier-symbol evaluation bundled as a homomorphism into the subgroup being rewritten.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativeSymbolEvalSubgroupHom :
    FreeGroup (RepresentativeSchreierSymbol S) →* L where
  toFun q := ⟨representativeSymbolEvalHom S q,
    representativeSymbolEvalHom_mem (S := S) q⟩
  map_one' := Subtype.ext (representativeSymbolEvalHom S).map_one
  map_mul' q r := Subtype.ext ((representativeSymbolEvalHom S).map_mul q r)
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSymbolEvalSubgroupHom_apply

Forgetting the subgroup target of the representative evaluation homomorphism gives the ordinary representative evaluation homomorphism.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem representativeSymbolEvalSubgroupHom_apply
    (q : FreeGroup (RepresentativeSchreierSymbol S)) :
    (representativeSymbolEvalSubgroupHom S q : FreeGroup X) =
      representativeSymbolEvalHom S q
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeLabel

The representative label records the chosen representative attached to a free-group word.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativeLabel (p : FreeGroup X) (x : X) :
    RepresentativeSchreierSymbol S
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTauList

Restricted Schreier rewriting of a raw word list.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativeTauList :
    FreeGroup X → List (X × Bool) → FreeGroup (RepresentativeSchreierSymbol S)
  | _p, [] => 1
  | p, (x, true) :: xs =>
      FreeGroup.of (representativeLabel S p x) *
        representativeTauList (p * FreeGroup.of x) xs
  | p, (x, false) :: xs =>
      (FreeGroup.of
        (representativeLabel S (p * (FreeGroup.of x)⁻¹) x))⁻¹ *
        representativeTauList (p * (FreeGroup.of x)⁻¹) xs
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTauList_cons_true_false

The representative \(\tau\)-list rewrite is unchanged when adjacent inverse letters cancel.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem representativeTauList_cons_true_false
    (p : FreeGroup X) (x : X) (xs : List (X × Bool)) :
    representativeTauList S p ((x, true) :: (x, false) :: xs) =
      representativeTauList S p xs
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTauList_cons_false_true

The representative \(\tau\)-list rewrite is unchanged when adjacent inverse letters cancel.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem representativeTauList_cons_false_true
    (p : FreeGroup X) (x : X) (xs : List (X × Bool)) :
    representativeTauList S p ((x, false) :: (x, true) :: xs) =
      representativeTauList S p xs
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTauList_cons_cancel

The representative \(\tau\)-list rewrite is unchanged when adjacent inverse letters cancel.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem representativeTauList_cons_cancel
    (p : FreeGroup X) (x : X) (b : Bool) (xs : List (X × Bool)) :
    representativeTauList S p ((x, b) :: (x, !b) :: xs) =
      representativeTauList S p xs
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTauList_append

The representative \(\tau\)-list rewrite of a concatenated word splits as the product of the first rewrite and the rewrite of the second word from the updated quotient element.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem representativeTauList_append
    (p : FreeGroup X) (xs ys : List (X × Bool)) :
    representativeTauList S p (xs ++ ys) =
      representativeTauList S p xs *
        representativeTauList S (p * FreeGroup.mk xs) ys
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTauList_eq_of_sameRightCoset

Representative \(\tau\)-list rewrites agree for starting words in the same right coset.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem representativeTauList_eq_of_sameRightCoset
    {p q : FreeGroup X} (hpq : p * q⁻¹ ∈ L)
    (xs : List (X × Bool)) :
    representativeTauList S p xs = representativeTauList S q xs
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTauList_redStep

A single free-group reduction step does not change the representative \(\tau\)-list rewrite.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem representativeTauList_redStep
    (p : FreeGroup X) {xs ys : List (X × Bool)}
    (h : FreeGroup.Red.Step xs ys) :
    representativeTauList S p xs = representativeTauList S p ys
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTauList_red

Free-group reduction does not change the representative \(\tau\)-list rewrite.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem representativeTauList_red
    (p : FreeGroup X) {xs ys : List (X × Bool)}
    (h : FreeGroup.Red xs ys) :
    representativeTauList S p xs = representativeTauList S p ys
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTauList_eq_of_mk_eq

Equal free-group words have equal the representative \(\tau\)-list rewrites from the same starting quotient element.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem representativeTauList_eq_of_mk_eq
    (p : FreeGroup X) {xs ys : List (X × Bool)}
    (h : FreeGroup.mk xs = FreeGroup.mk ys) :
    representativeTauList S p xs = representativeTauList S p ys
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSymbolEvalHom_representativeTauList

Evaluating a \(\tau\)-list gives the quotient-section conjugate of the represented word.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem representativeSymbolEvalHom_representativeTauList
    (p : FreeGroup X) (xs : List (X × Bool)) :
    representativeSymbolEvalHom S (representativeTauList S p xs) =
      S.representative p * FreeGroup.mk xs *
        (S.representative (p * FreeGroup.mk xs))⁻¹
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTau

The representative \(\tau\)-map applies the explicit Schreier rewriting procedure to free-group elements.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativeTau (t w : FreeGroup X) :
    FreeGroup (RepresentativeSchreierSymbol S)
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTau_one

Rewriting the identity word by the representative \(\tau\)-map gives the identity.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeTau_one (t : FreeGroup X) :
    representativeTau S t 1 = 1
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTau_mk

The representative \(\tau\)-rewrite of \(\mathrm{FreeGroup.mk}(xs)\) agrees with rewriting the list \(xs\).

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeTau_mk
    (t : FreeGroup X) (xs : List (X × Bool)) :
    representativeTau S t (FreeGroup.mk xs) =
      representativeTauList S t xs
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSymbolEvalHom_tau

Evaluating a \(\tau\)-word gives the quotient-section conjugate of the rewritten word.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeSymbolEvalHom_tau
    (t w : FreeGroup X) :
    representativeSymbolEvalHom S (representativeTau S t w) =
      S.representative t * w * (S.representative (t * w))⁻¹
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTau_mul

The representative \(\tau\)-rewrite of a product factors into the rewrite of the first word and the rewrite of the second word from the updated quotient element.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeTau_mul
    (t u v : FreeGroup X) :
    representativeTau S t (u * v) =
      representativeTau S t u * representativeTau S (t * u) v
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTau_eq_of_sameRightCoset

Representative \(\tau\)-words agree for group elements in the same right coset.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeTau_eq_of_sameRightCoset
    {p q : FreeGroup X} (hpq : p * q⁻¹ ∈ L)
    (w : FreeGroup X) :
    representativeTau S p w = representativeTau S q w
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTau_eq_one_start_of_mem

If the initial word lies in the Schreier subgroup, its representative \(\tau\)-rewrite agrees with the rewrite starting at the identity.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeTau_eq_one_start_of_mem
    {p : FreeGroup X} (hp : p ∈ L) (w : FreeGroup X) :
    representativeTau S p w = representativeTau S 1 w
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTau_mul_of_mem

For a kernel word, the representative \(\tau\)-rewriting preserves products from the identity quotient element.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeTau_mul_of_mem
    {u v : FreeGroup X} (hu : u ∈ L) :
    representativeTau S 1 (u * v) =
      representativeTau S 1 u * representativeTau S 1 v
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTau_inv

The representative \(\tau\)-rewrite of an inverse is the inverse of the \(\tau\)-rewrite from the updated quotient element.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeTau_inv (t u : FreeGroup X) :
    representativeTau S (t * u) u⁻¹ =
      (representativeTau S t u)⁻¹
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTau_inv_of_mem

For a kernel word, the representative \(\tau\)-rewriting commutes with inversion from the identity quotient element.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeTau_inv_of_mem
    {u : FreeGroup X} (hu : u ∈ L) :
    representativeTau S 1 u⁻¹ = (representativeTau S 1 u)⁻¹
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSymbolEvalHom_tau_one_of_mem

For a word in the Schreier subgroup, evaluating its representative \(\tau\)-rewrite from the identity recovers that word.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeSymbolEvalHom_tau_one_of_mem
    {w : FreeGroup X} (hw : w ∈ L) :
    representativeSymbolEvalHom S (representativeTau S 1 w) = w
ReidemeisterSchreier.Discrete.SchreierRewriting.representative_representative

Applying the representative-selection map twice gives the same representative.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem representative_representative (g : FreeGroup X) :
    S.representative (S.representative g) = S.representative g
ReidemeisterSchreier.Discrete.SchreierRewriting.representative_eq_self_of_mem_representativeSet

An element of the representative set is fixed by the representative-selection map.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem representative_eq_self_of_mem_representativeSet
    {t : FreeGroup X} (ht : t ∈ representativeSet S) :
    S.representative t = t
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTau_of_representative

The representative \(\tau\) of a chosen representative is trivial in the Schreier rewriting.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeTau_of_representative
    (t : representativeSet S) (x : X) :
    representativeTau S (t : FreeGroup X) (FreeGroup.of x) =
      FreeGroup.of (t, x)
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSchreierRelators

The representative Schreier relators are the rewrites of the original relators over the chosen representative transversal.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativeSchreierRelators
    (R : Set (FreeGroup X)) :
    Set (FreeGroup (RepresentativeSchreierSymbol S))
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeDegenerateSchreierRelators

The representative degenerate Schreier relators are the section relators forced by the representative transversal.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativeDegenerateSchreierRelators :
    Set (FreeGroup (RepresentativeSchreierSymbol S))
ReidemeisterSchreier.Discrete.SchreierRewriting.representativePresentationRelators

The representative presentation relators are the rewritten original relators together with degenerate Schreier-generator relators.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativePresentationRelators
    (R : Set (FreeGroup X)) :
    Set (FreeGroup (RepresentativeSchreierSymbol S))
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSectionRelators

These extra relators kill the rewrites of the chosen representatives. They are redundant for prefix-closed Schreier systems, but are needed for an arbitrary normalized representative function.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativeSectionRelators :
    Set (FreeGroup (RepresentativeSchreierSymbol S))
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeAugmentedPresentationRelators

The augmented representative presentation relators consist of the representative presentation relators together with the section relators.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativeAugmentedPresentationRelators
    (R : Set (FreeGroup X)) :
    Set (FreeGroup (RepresentativeSchreierSymbol S))
ReidemeisterSchreier.Discrete.SchreierRewriting.representativePrefixClosedAlongList

Prefix-closedness along a concrete representative word. Positive letters say the next prefix is itself a representative; negative letters say the current prefix is obtained from the previous representative by appending the positive letter.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativePrefixClosedAlongList (S : RightSchreierRepresentative L) :
    FreeGroup X → List (X × Bool) → Prop
  | _p, [] => True
  | p, (x, true) :: xs =>
      S.representative (S.representative p * FreeGroup.of x) =
        S.representative p * FreeGroup.of x ∧
      representativePrefixClosedAlongList S (p * FreeGroup.of x) xs
  | p, (x, false) :: xs =>
      S.representative p =
        S.representative (p * (FreeGroup.of x)⁻¹) * FreeGroup.of x ∧
      representativePrefixClosedAlongList S (p * (FreeGroup.of x)⁻¹) xs
ReidemeisterSchreier.Discrete.SchreierRewriting.IsPrefixClosedRepresentativeSystem

The representative system is prefix closed on its own representative words.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def IsPrefixClosedRepresentativeSystem : Prop
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTau_mem_schreierRelators

The representative \(\tau\)-rewrite of an original relator belongs to the representative Schreier relator set.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeTau_mem_schreierRelators
    {R : Set (FreeGroup X)}
    (t : representativeSet S) {r : FreeGroup X} (hr : r ∈ R) :
    representativeTau S (t : FreeGroup X) r ∈
      representativeSchreierRelators S R
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTau_mem_sectionRelators

The representative \(\tau\)-rewrite of a quotient-section word belongs to the representative section-relator set.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeTau_mem_sectionRelators
    (t : representativeSet S) :
    representativeTau S 1 (t : FreeGroup X) ∈
      representativeSectionRelators S
ReidemeisterSchreier.Discrete.SchreierRewriting.representativePresentationRelators_subset_augmented

Every representative presentation relator is an augmented representative presentation relator.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativePresentationRelators_subset_augmented
    (R : Set (FreeGroup X)) :
    representativePresentationRelators S R ⊆
      representativeAugmentedPresentationRelators S R
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSectionRelators_subset_augmented

Every representative section relator is included among the augmented representative presentation relators.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeSectionRelators_subset_augmented
    (R : Set (FreeGroup X)) :
    representativeSectionRelators S ⊆
      representativeAugmentedPresentationRelators S R
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTauList_mem_normalClosure_degenerate_of_prefixClosedAlongList

A list following the prefix-closed representative system rewrites into the normal closure of the degenerate representative Schreier relators.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem representativeTauList_mem_normalClosure_degenerate_of_prefixClosedAlongList
    {p : FreeGroup X} {xs : List (X × Bool)}
    (hprefix : representativePrefixClosedAlongList S p xs) :
    representativeTauList S p xs ∈
      Subgroup.normalClosure (representativeDegenerateSchreierRelators S)
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTau_section_mem_normalClosure_degenerate_of_isPrefixClosed

The \(\tau\)-rewrite of the indicated relator or section word belongs to the appropriate Reidemeister--Schreier normal closure.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeTau_section_mem_normalClosure_degenerate_of_isPrefixClosed
    (hprefix : IsPrefixClosedRepresentativeSystem S)
    (t : representativeSet S) :
    representativeTau S 1 (t : FreeGroup X) ∈
      Subgroup.normalClosure (representativeDegenerateSchreierRelators S)
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTau_section_mem_normalClosure_presentation_of_isPrefixClosed

The \(\tau\)-rewrite of the indicated relator or section word belongs to the appropriate Reidemeister--Schreier normal closure.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeTau_section_mem_normalClosure_presentation_of_isPrefixClosed
    (R : Set (FreeGroup X))
    (hprefix : IsPrefixClosedRepresentativeSystem S)
    (t : representativeSet S) :
    representativeTau S 1 (t : FreeGroup X) ∈
      Subgroup.normalClosure (representativePresentationRelators S R)
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSymbolEvalHom_tau_relator_mem_normalClosure

Evaluating the representative \(\tau\)-rewrite of an original relator gives an element of the normal closure of the original relators.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeSymbolEvalHom_tau_relator_mem_normalClosure
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    (t : representativeSet S) {r : FreeGroup X} (hr : r ∈ R) :
    representativeSymbolEvalHom S
        (representativeTau S (t : FreeGroup X) r) ∈
      Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeEval_schreierRelator_mem_normalClosure

Evaluating a representative Schreier relator gives an element of the normal closure of the original relators.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeEval_schreierRelator_mem_normalClosure
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    {q : FreeGroup (RepresentativeSchreierSymbol S)}
    (hq : q ∈ representativeSchreierRelators S R) :
    representativeSymbolEvalHom S q ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeDegenerateRelator_eval_eq_one

The evaluation of a representative degenerate Schreier relator is the identity.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem representativeDegenerateRelator_eval_eq_one
    {q : FreeGroup (RepresentativeSchreierSymbol S)}
    (hq : q ∈ representativeDegenerateSchreierRelators S) :
    representativeSymbolEvalHom S q = 1
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeEval_degenerateRelator_mem_normalClosure

The indicated evaluated relator belongs to the normal closure supplied by the Reidemeister--Schreier relator comparison.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem representativeEval_degenerateRelator_mem_normalClosure
    {R : Set (FreeGroup X)}
    {q : FreeGroup (RepresentativeSchreierSymbol S)}
    (hq : q ∈ representativeDegenerateSchreierRelators S) :
    representativeSymbolEvalHom S q ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSectionRelator_eval_eq_one

The evaluation of a representative section relator is the identity.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeSectionRelator_eval_eq_one
    {q : FreeGroup (RepresentativeSchreierSymbol S)}
    (hq : q ∈ representativeSectionRelators S) :
    representativeSymbolEvalHom S q = 1
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeEval_sectionRelator_mem_normalClosure

The indicated evaluated relator belongs to the normal closure supplied by the Reidemeister--Schreier relator comparison.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeEval_sectionRelator_mem_normalClosure
    {R : Set (FreeGroup X)}
    {q : FreeGroup (RepresentativeSchreierSymbol S)}
    (hq : q ∈ representativeSectionRelators S) :
    representativeSymbolEvalHom S q ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeEval_presentationRelator_mem_normalClosure

Evaluating a representative presentation relator gives an element of the normal closure of the original relators.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeEval_presentationRelator_mem_normalClosure
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    {q : FreeGroup (RepresentativeSchreierSymbol S)}
    (hq : q ∈ representativePresentationRelators S R) :
    representativeSymbolEvalHom S q ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeEval_augmentedRelator_mem_normalClosure

The indicated evaluated relator belongs to the normal closure supplied by the Reidemeister--Schreier relator comparison.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeEval_augmentedRelator_mem_normalClosure
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    {q : FreeGroup (RepresentativeSchreierSymbol S)}
    (hq : q ∈ representativeAugmentedPresentationRelators S R) :
    representativeSymbolEvalHom S q ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeEval_mem_normalClosure_of_mem_normalClosure_augmentedRelators

Evaluation sends the normal closure of the augmented representative presentation relators into the normal closure of the original relators.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeEval_mem_normalClosure_of_mem_normalClosure_augmentedRelators
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    {q : FreeGroup (RepresentativeSchreierSymbol S)}
    (hq : q ∈
      Subgroup.normalClosure (representativeAugmentedPresentationRelators S R)) :
    representativeSymbolEvalHom S q ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSymbolEvalSubgroupHom_mem_relatorSubgroup_of_mem_normalClosure_augmented

The subgroup-valued evaluation map sends the normal closure of the augmented representative presentation relators into the relator subgroup.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeSymbolEvalSubgroupHom_mem_relatorSubgroup_of_mem_normalClosure_augmented
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    {q : FreeGroup (RepresentativeSchreierSymbol S)}
    (hq : q ∈
      Subgroup.normalClosure (representativeAugmentedPresentationRelators S R)) :
    representativeSymbolEvalSubgroupHom S q ∈ relatorSubgroup (L := L) R
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSymbolEvalAugmentedPresentationQuotientHom

The evaluation map from the representative augmented presentation quotient to the relator-subgroup quotient of the subgroup.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativeSymbolEvalAugmentedPresentationQuotientHom
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L) :
    FreeGroup (RepresentativeSchreierSymbol S) ⧸
        Subgroup.normalClosure (representativeAugmentedPresentationRelators S R) →*
      L ⧸ relatorSubgroup (L := L) R
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTau_conjugate_relator_mem_normalClosure_schreierRelators

The \(\tau\)-rewrite of the indicated relator or section word belongs to the appropriate Reidemeister--Schreier normal closure.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeTau_conjugate_relator_mem_normalClosure_schreierRelators
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    (g : FreeGroup X) {r : FreeGroup X} (hr : r ∈ R) :
    representativeTau S 1 (g * r * g⁻¹) ∈
      Subgroup.normalClosure (representativeSchreierRelators S R)
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTau_conjugate_relator_mem_normalClosure_presentationRelators

The \(\tau\)-rewrite of the indicated relator or section word belongs to the appropriate Reidemeister--Schreier normal closure.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeTau_conjugate_relator_mem_normalClosure_presentationRelators
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    (g : FreeGroup X) {r : FreeGroup X} (hr : r ∈ R) :
    representativeTau S 1 (g * r * g⁻¹) ∈
      Subgroup.normalClosure (representativePresentationRelators S R)
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTau_conjugate_relator_mem_normalClosure_augmentedRelators

The \(\tau\)-rewrite of the indicated relator or section word belongs to the appropriate Reidemeister--Schreier normal closure.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeTau_conjugate_relator_mem_normalClosure_augmentedRelators
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    (g : FreeGroup X) {r : FreeGroup X} (hr : r ∈ R) :
    representativeTau S 1 (g * r * g⁻¹) ∈
      Subgroup.normalClosure (representativeAugmentedPresentationRelators S R)
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTauKernelAugmentedPresentationQuotientHom

The representative \(\tau\)-homomorphism from the kernel to the augmented presentation quotient is defined by Reidemeister--Schreier rewriting.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativeTauKernelAugmentedPresentationQuotientHom
    (R : Set (FreeGroup X)) :
    L →* FreeGroup (RepresentativeSchreierSymbol S) ⧸
      Subgroup.normalClosure (representativeAugmentedPresentationRelators S R) where
  toFun k :=
    QuotientGroup.mk'
      (Subgroup.normalClosure (representativeAugmentedPresentationRelators S R))
      (representativeTau S 1 (k : FreeGroup X))
  map_one' := by
    simp only [OneMemClass.coe_one, representativeTau_one, QuotientGroup.mk'_apply,
        QuotientGroup.mk_one]
  map_mul' k l := by
    change
      QuotientGroup.mk'
          (Subgroup.normalClosure (representativeAugmentedPresentationRelators S R))
          (representativeTau S 1 ((k : FreeGroup X) * (l : FreeGroup X))) =
        QuotientGroup.mk'
          (Subgroup.normalClosure (representativeAugmentedPresentationRelators S R))
          (representativeTau S 1 (k : FreeGroup X)) *
        QuotientGroup.mk'
          (Subgroup.normalClosure (representativeAugmentedPresentationRelators S R))
          (representativeTau S 1 (l : FreeGroup X))
    rw [representativeTau_mul_of_mem (S := S) k.property]
    rfl
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTauKernelAugmentedPresentationQuotientHom_eq_one_of_mem_normalClosure

The representative \(\tau\)-homomorphism to the augmented-presentation quotient kills every element of the normal closure of the original relators.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeTauKernelAugmentedPresentationQuotientHom_eq_one_of_mem_normalClosure
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    {n : FreeGroup X} (hn : n ∈ Subgroup.normalClosure R) :
    representativeTauKernelAugmentedPresentationQuotientHom (S := S) R
      ⟨n, hR hn⟩ = 1
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTauRelatorSubgroupAugmentedPresentationQuotientHom

The quotient homomorphism induced by \(\tau\)-rewriting maps the relator subgroup quotient to the augmented Schreier-presentation quotient.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativeTauRelatorSubgroupAugmentedPresentationQuotientHom
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L) :
    L ⧸ relatorSubgroup (L := L) R →*
      FreeGroup (RepresentativeSchreierSymbol S) ⧸
        Subgroup.normalClosure (representativeAugmentedPresentationRelators S R)
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSectionRelator_relatorEquivalent_one

A representative section relator is relator-equivalent to the identity modulo the augmented presentation relators.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeSectionRelator_relatorEquivalent_one
    (R : Set (FreeGroup X)) (t : representativeSet S) :
    RelatorEquivalent (representativeAugmentedPresentationRelators S R)
      (representativeTau S 1 (t : FreeGroup X)) 1
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTau_symbolEval_relatorEquivalent_augmented

The \(\tau\)-word and its symbol evaluation are relator-equivalent modulo the augmented presentation relators.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeTau_symbolEval_relatorEquivalent_augmented
    (R : Set (FreeGroup X)) (z : RepresentativeSchreierSymbol S) :
    RelatorEquivalent (representativeAugmentedPresentationRelators S R)
      (representativeTau S 1 (representativeSymbolEval S z))
      (FreeGroup.of z)
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTau_symbolEvalHom_relatorEquivalent_augmented

The \(\tau\)-word and its symbol evaluation are relator-equivalent modulo the augmented presentation relators.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeTau_symbolEvalHom_relatorEquivalent_augmented
    (R : Set (FreeGroup X))
    (z : FreeGroup (RepresentativeSchreierSymbol S)) :
    RelatorEquivalent (representativeAugmentedPresentationRelators S R)
      (representativeTau S 1 (representativeSymbolEvalHom S z)) z
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSymbolEvalAugmentedPresentationQuotientHom_tauKernel

The \(\tau\)-map sends kernel elements into the augmented Schreier presentation quotient.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeSymbolEvalAugmentedPresentationQuotientHom_tauKernel
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    (k : L) :
    representativeSymbolEvalAugmentedPresentationQuotientHom (S := S) hR
        (representativeTauKernelAugmentedPresentationQuotientHom (S := S) R k) =
      QuotientGroup.mk' (relatorSubgroup (L := L) R) k
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeSymbolEvalAugmentedPresentationQuotientHom_tauRelatorSubgroup

The \(\tau\)-map descends from the relator-subgroup quotient to the augmented Schreier presentation quotient.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeSymbolEvalAugmentedPresentationQuotientHom_tauRelatorSubgroup
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    (y : L ⧸ relatorSubgroup (L := L) R) :
    representativeSymbolEvalAugmentedPresentationQuotientHom (S := S) hR
        (representativeTauRelatorSubgroupAugmentedPresentationQuotientHom
          (S := S) hR y) = y
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeTauRelatorSubgroupAugmentedPresentationQuotientHom_symbolEval

\(\tau\)-rewriting followed by symbol evaluation is the identity on the augmented Schreier-presentation quotient.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem representativeTauRelatorSubgroupAugmentedPresentationQuotientHom_symbolEval
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    (y : FreeGroup (RepresentativeSchreierSymbol S) ⧸
        Subgroup.normalClosure (representativeAugmentedPresentationRelators S R)) :
    representativeTauRelatorSubgroupAugmentedPresentationQuotientHom
        (S := S) hR
        (representativeSymbolEvalAugmentedPresentationQuotientHom
          (S := S) hR y) = y
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeAugmentedPresentationQuotientEquiv

The augmented representative presentation quotient is equivalent to the relator quotient of the subgroup.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativeAugmentedPresentationQuotientEquiv
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L) :
    FreeGroup (RepresentativeSchreierSymbol S) ⧸
        Subgroup.normalClosure (representativeAugmentedPresentationRelators S R) ≃*
      L ⧸ relatorSubgroup (L := L) R where
  toFun := representativeSymbolEvalAugmentedPresentationQuotientHom (S := S) hR
  invFun :=
    representativeTauRelatorSubgroupAugmentedPresentationQuotientHom
      (S := S) hR
  left_inv :=
    representativeTauRelatorSubgroupAugmentedPresentationQuotientHom_symbolEval
      (S := S) hR
  right_inv :=
    representativeSymbolEvalAugmentedPresentationQuotientHom_tauRelatorSubgroup
      (S := S) hR
  map_mul' x y :=
    (representativeSymbolEvalAugmentedPresentationQuotientHom
      (S := S) hR).map_mul x y
ReidemeisterSchreier.Discrete.SchreierRewriting.representativeAugmentedPresentedGroupEquiv

The presented group for the augmented representative presentation is equivalent to the relator quotient of the subgroup.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativeAugmentedPresentedGroupEquiv
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L) :
    PresentedGroup (representativeAugmentedPresentationRelators S R) ≃*
      L ⧸ relatorSubgroup (L := L) R
ReidemeisterSchreier.Discrete.SchreierRewriting.normalClosure_representativeAugmentedPresentationRelators_eq

The augmented-presentation relator normal closure equals the normal closure generated by the corresponding Reidemeister--Schreier relators.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem normalClosure_representativeAugmentedPresentationRelators_eq
    {R : Set (FreeGroup X)}
    (hsection :
      ∀ t : representativeSet S,
        representativeTau S 1 (t : FreeGroup X) ∈
          Subgroup.normalClosure (representativePresentationRelators S R)) :
    Subgroup.normalClosure (representativeAugmentedPresentationRelators S R) =
      Subgroup.normalClosure (representativePresentationRelators S R)
ReidemeisterSchreier.Discrete.SchreierRewriting.normalClosure_representativeAugmentedPresentationRelators_eq_of_isPrefixClosed

The augmented-presentation relator normal closure equals the normal closure generated by the corresponding Reidemeister--Schreier relators.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
theorem normalClosure_representativeAugmentedPresentationRelators_eq_of_isPrefixClosed
    {R : Set (FreeGroup X)}
    (hprefix : IsPrefixClosedRepresentativeSystem S) :
    Subgroup.normalClosure (representativeAugmentedPresentationRelators S R) =
      Subgroup.normalClosure (representativePresentationRelators S R)
ReidemeisterSchreier.Discrete.SchreierRewriting.representativePresentationQuotientEquivOfSectionRelators

After adding the section relators, the representative presentation quotient is equivalent to the subgroup relator quotient.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativePresentationQuotientEquivOfSectionRelators
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    (hsection :
      ∀ t : representativeSet S,
        representativeTau S 1 (t : FreeGroup X) ∈
          Subgroup.normalClosure (representativePresentationRelators S R)) :
    FreeGroup (RepresentativeSchreierSymbol S) ⧸
        Subgroup.normalClosure (representativePresentationRelators S R) ≃*
      L ⧸ relatorSubgroup (L := L) R
ReidemeisterSchreier.Discrete.SchreierRewriting.representativePresentedGroupEquivOfSectionRelators

After adding the section relators, the representative presented group is equivalent to the subgroup quotient.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativePresentedGroupEquivOfSectionRelators
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    (hsection :
      ∀ t : representativeSet S,
        representativeTau S 1 (t : FreeGroup X) ∈
          Subgroup.normalClosure (representativePresentationRelators S R)) :
    PresentedGroup (representativePresentationRelators S R) ≃*
      L ⧸ relatorSubgroup (L := L) R
ReidemeisterSchreier.Discrete.SchreierRewriting.representativePresentationQuotientEquivOfIsPrefixClosed

For a prefix-closed representative set, the representative presentation quotient is equivalent to the subgroup relator quotient.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativePresentationQuotientEquivOfIsPrefixClosed
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    (hprefix : IsPrefixClosedRepresentativeSystem S) :
    FreeGroup (RepresentativeSchreierSymbol S) ⧸
        Subgroup.normalClosure (representativePresentationRelators S R) ≃*
      L ⧸ relatorSubgroup (L := L) R
ReidemeisterSchreier.Discrete.SchreierRewriting.representativePresentedGroupEquivOfIsPrefixClosed

For a prefix-closed representative set, the representative presented group is equivalent to the subgroup quotient.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X : Type*}
namespace SchreierRewriting
variable {L : Subgroup (FreeGroup X)} (S : RightSchreierRepresentative L)
variable [DecidableEq X]
def representativePresentedGroupEquivOfIsPrefixClosed
    {R : Set (FreeGroup X)}
    (hR : Subgroup.normalClosure R ≤ L)
    (hprefix : IsPrefixClosedRepresentativeSystem S) :
    PresentedGroup (representativePresentationRelators S R) ≃*
      L ⧸ relatorSubgroup (L := L) R