Module

CleanedTau.lean

Nyll.ProCGroups.ReidemeisterSchreier.Discrete.ReidemeisterSchreier.FiniteQuotient.CleanedTau
31 declarations indexed from sourceView source ↗

Reidemeister Schreier / Discrete / Reidemeister Schreier / Finite Quotient / Cleaned Tau

This module rewrites tau words on the nondegenerate Schreier-symbol alphabet and proves that the cleaned rewriting respects reduction, multiplication, and the original tau evaluation.

Declarations

ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTauList

List-word form of Schreier rewriting after deleting degenerate finite Schreier generators. This is the computational API for concrete finite examples.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
def cleanedTauList
    [DecidablePred D.IsDegenerateSchreierSymbol]
    (q : Q) (xs : List (X × Bool)) :
    FreeGroup D.NondegenerateSchreierSymbol
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTauList_nil

The cleaned \(\tau\)-list of the empty word 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 Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem cleanedTauList_nil
    [DecidablePred D.IsDegenerateSchreierSymbol] (q : Q) :
    D.cleanedTauList q [] = 1
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTauList_cons_true

The cleaned \(\tau\)-list for a positive letter prefixes the corresponding cleaned Schreier-symbol word.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem cleanedTauList_cons_true
    [DecidablePred D.IsDegenerateSchreierSymbol]
    (q : Q) (x : X) (xs : List (X × Bool)) :
    D.cleanedTauList q ((x, true) :: xs) =
      D.cleanedSchreierSymbolWord (q, x) *
        D.cleanedTauList (D.transition q x) xs
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTauList_cons_false

The cleaned \(\tau\)-list for a negative letter prefixes the inverse of the corresponding cleaned Schreier-symbol word.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem cleanedTauList_cons_false
    [DecidablePred D.IsDegenerateSchreierSymbol]
    (q : Q) (x : X) (xs : List (X × Bool)) :
    D.cleanedTauList q ((x, false) :: xs) =
      (D.cleanedSchreierSymbolWord (D.inverseTransition q x, x))⁻¹ *
        D.cleanedTauList (D.inverseTransition q x) xs
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTauList_append

The cleaned \(\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 Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem cleanedTauList_append
    [DecidablePred D.IsDegenerateSchreierSymbol]
    (q : Q) (xs ys : List (X × Bool)) :
    D.cleanedTauList q (xs ++ ys) =
      D.cleanedTauList q xs *
        D.cleanedTauList
          (D.quotientMap (D.quotientSection q * FreeGroup.mk xs)) ys
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTauList_red

Free-group reduction does not change the cleaned \(\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 Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem cleanedTauList_red
    [DecidablePred D.IsDegenerateSchreierSymbol]
    (q : Q) {xs ys : List (X × Bool)}
    (h : FreeGroup.Red xs ys) :
    D.cleanedTauList q xs = D.cleanedTauList q ys
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTauList_eq_of_mk_eq

The cleaned \(\tau\)-lists agree when the corresponding quotient generators agree.

Source context 7 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem cleanedTauList_eq_of_mk_eq
    [DecidablePred D.IsDegenerateSchreierSymbol]
    (q : Q) {xs ys : List (X × Bool)}
    (h : FreeGroup.mk xs = FreeGroup.mk ys) :
    D.cleanedTauList q xs = D.cleanedTauList q ys
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTau

Schreier rewriting after deleting degenerate finite 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 Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
def cleanedTau
    [DecidablePred D.IsDegenerateSchreierSymbol]
    (q : Q) (w : FreeGroup X) :
    FreeGroup D.NondegenerateSchreierSymbol
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTau_eq_cleanedTauList_toWord

Cleaned \(\tau\) of a free-group word is the cleaned \(\tau\)-list rewrite of its word representation.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
theorem cleanedTau_eq_cleanedTauList_toWord
    [DecidablePred D.IsDegenerateSchreierSymbol]
    (q : Q) (w : FreeGroup X) :
    D.cleanedTau q w = D.cleanedTauList q w.toWord
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTau_mk

The cleaned \(\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 Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
theorem cleanedTau_mk
    [DecidablePred D.IsDegenerateSchreierSymbol]
    (q : Q) (xs : List (X × Bool)) :
    D.cleanedTau q (FreeGroup.mk xs) = D.cleanedTauList q xs
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTauNormalWord

Reduced list-word normal form of \(\mathrm{cleanedTau}(q,w)\). This is the computation-facing output of the cleaned finite Reidemeister--Schreier rewriting map.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
def cleanedTauNormalWord
    [DecidablePred D.IsDegenerateSchreierSymbol]
    [DecidableEq D.NondegenerateSchreierSymbol]
    (q : Q) (w : FreeGroup X) :
    List (D.NondegenerateSchreierSymbol × Bool)
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTauListNormalWord

Reduced list-word normal form of \(\mathrm{cleanedTauList}(q,xs)\).

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
def cleanedTauListNormalWord
    [DecidablePred D.IsDegenerateSchreierSymbol]
    [DecidableEq D.NondegenerateSchreierSymbol]
    (q : Q) (xs : List (X × Bool)) :
    List (D.NondegenerateSchreierSymbol × Bool)
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.mk_cleanedTauNormalWord

The reduced normal word reconstructs the cleaned \(\tau\)-rewrite.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
theorem mk_cleanedTauNormalWord
    [DecidablePred D.IsDegenerateSchreierSymbol]
    [DecidableEq D.NondegenerateSchreierSymbol]
    (q : Q) (w : FreeGroup X) :
    FreeGroup.mk (D.cleanedTauNormalWord q w) = D.cleanedTau q w
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.mk_cleanedTauListNormalWord

The reduced normal word reconstructs the cleaned \(\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 Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem mk_cleanedTauListNormalWord
    [DecidablePred D.IsDegenerateSchreierSymbol]
    [DecidableEq D.NondegenerateSchreierSymbol]
    (q : Q) (xs : List (X × Bool)) :
    FreeGroup.mk (D.cleanedTauListNormalWord q xs) =
      D.cleanedTauList q xs
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTauNormalWord_mk

The normal word of the cleaned \(\tau\)-rewrite of FreeGroup.mk xs is the normal word obtained by cleaning the list xs directly.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
theorem cleanedTauNormalWord_mk
    [DecidablePred D.IsDegenerateSchreierSymbol]
    [DecidableEq D.NondegenerateSchreierSymbol]
    (q : Q) (xs : List (X × Bool)) :
    D.cleanedTauNormalWord q (FreeGroup.mk xs) =
      D.cleanedTauListNormalWord q xs
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTau_eq_mk_iff_cleanedTauNormalWord_eq_reduce

A cleaned \(\tau\)-rewrite equals FreeGroup.mk ys exactly when its normal word is FreeGroup.reduce ys.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
theorem cleanedTau_eq_mk_iff_cleanedTauNormalWord_eq_reduce
    {D : FiniteQuotientSchreierData X Q}
    [DecidablePred D.IsDegenerateSchreierSymbol]
    [DecidableEq D.NondegenerateSchreierSymbol]
    {q : Q} {w : FreeGroup X}
    {ys : List (D.NondegenerateSchreierSymbol × Bool)} :
    D.cleanedTau q w = FreeGroup.mk ys ↔
      D.cleanedTauNormalWord q w = FreeGroup.reduce ys
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTauList_eq_mk_iff_cleanedTauListNormalWord_eq_reduce

The cleaned \(\tau\)-list normal word records the reduced list form of the cleaned \(\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 Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
omit [DecidableEq X] in
theorem cleanedTauList_eq_mk_iff_cleanedTauListNormalWord_eq_reduce
    {D : FiniteQuotientSchreierData X Q}
    [DecidablePred D.IsDegenerateSchreierSymbol]
    [DecidableEq D.NondegenerateSchreierSymbol]
    {q : Q} {xs : List (X × Bool)}
    {ys : List (D.NondegenerateSchreierSymbol × Bool)} :
    D.cleanedTauList q xs = FreeGroup.mk ys ↔
      D.cleanedTauListNormalWord q xs = FreeGroup.reduce ys
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.targetLift_cleanedTau_eq_mk_of_substitutionWord_reduce_eq

If the substituted cleaned \(\tau\)-normal word reduces to \(ys\), then the target lift of the cleaned \(\tau\)-word is \(\mathrm{FreeGroup.mk}(ys)\).

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
theorem targetLift_cleanedTau_eq_mk_of_substitutionWord_reduce_eq
    [DecidablePred D.IsDegenerateSchreierSymbol]
    [DecidableEq D.NondegenerateSchreierSymbol]
    {Y : Type*} [DecidableEq Y]
    {toTargetGenerator : D.NondegenerateSchreierSymbol → FreeGroup Y}
    (q : Q) (w : FreeGroup X) {ys : List (Y × Bool)}
    (h :
      FreeGroup.reduce
          (freeGroupSubstitutionWord toTargetGenerator
            (D.cleanedTauNormalWord q w)) =
        FreeGroup.reduce ys) :
    FreeGroup.lift toTargetGenerator (D.cleanedTau q w) =
      FreeGroup.mk ys
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.targetLift_cleanedTau_relatorEquivalent_one_of_substitutionWord_reduce_eq

If the substituted cleaned \(\tau\)-normal word reduces to a word relator-equivalent to \(1\), then the target lift of the cleaned \(\tau\)-word is relator-equivalent to \(1\).

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
theorem targetLift_cleanedTau_relatorEquivalent_one_of_substitutionWord_reduce_eq
    [DecidablePred D.IsDegenerateSchreierSymbol]
    [DecidableEq D.NondegenerateSchreierSymbol]
    {Y : Type*} [DecidableEq Y]
    {S : Set (FreeGroup Y)}
    {toTargetGenerator : D.NondegenerateSchreierSymbol → FreeGroup Y}
    (q : Q) (w : FreeGroup X) {ys : List (Y × Bool)}
    (h :
      FreeGroup.reduce
          (freeGroupSubstitutionWord toTargetGenerator
            (D.cleanedTauNormalWord q w)) =
        FreeGroup.reduce ys)
    (hy : RelatorEquivalent S (FreeGroup.mk ys) 1) :
    RelatorEquivalent S
      (FreeGroup.lift toTargetGenerator (D.cleanedTau q w)) 1
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.targetLift_cleanedTau_relatorEquivalent_one_of_substitutionWord_reduce_mem

If the substituted cleaned \(\tau\)-normal word reduces to a target relator, then the target lift of the cleaned \(\tau\)-word is relator-equivalent to \(1\).

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
theorem targetLift_cleanedTau_relatorEquivalent_one_of_substitutionWord_reduce_mem
    [DecidablePred D.IsDegenerateSchreierSymbol]
    [DecidableEq D.NondegenerateSchreierSymbol]
    {Y : Type*} [DecidableEq Y]
    {S : Set (FreeGroup Y)}
    {toTargetGenerator : D.NondegenerateSchreierSymbol → FreeGroup Y}
    (q : Q) (w : FreeGroup X) {ys : List (Y × Bool)}
    (h :
      FreeGroup.reduce
          (freeGroupSubstitutionWord toTargetGenerator
            (D.cleanedTauNormalWord q w)) =
        FreeGroup.reduce ys)
    (hy : FreeGroup.mk ys ∈ S) :
    RelatorEquivalent S
      (FreeGroup.lift toTargetGenerator (D.cleanedTau q w)) 1
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.mapsCleanedRelators_of_cleanedTauNormalWord_reduce

If substitution reduces every cleaned source relator to a target word relator-equivalent to \(1\), then the induced generator map sends every cleaned relator to a word relator-equivalent to \(1\).

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
theorem mapsCleanedRelators_of_cleanedTauNormalWord_reduce
    [DecidablePred D.IsDegenerateSchreierSymbol]
    [DecidableEq D.NondegenerateSchreierSymbol]
    {Y : Type*} [DecidableEq Y]
    {R : Set (FreeGroup X)} {S : Set (FreeGroup Y)}
    {toTargetGenerator : D.NondegenerateSchreierSymbol → FreeGroup Y}
    (targetWord : Q → FreeGroup X → List (Y × Bool))
    (hword :
      ∀ q : Q, ∀ r ∈ R,
        FreeGroup.reduce
            (freeGroupSubstitutionWord toTargetGenerator
              (D.cleanedTauNormalWord q r)) =
          FreeGroup.reduce (targetWord q r))
    (hrel :
      ∀ q : Q, ∀ r ∈ R,
        RelatorEquivalent S (FreeGroup.mk (targetWord q r)) 1) :
    ∀ q : Q, ∀ r ∈ R,
      RelatorEquivalent S
        (FreeGroup.lift toTargetGenerator (D.cleanedTau q r)) 1
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.mapsCleanedRelators_of_cleanedTauNormalWord_reduce_mem

If substitution reduces every cleaned source relator to a word in the target relator set, then the induced generator map sends every cleaned relator to a word relator-equivalent to \(1\).

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
theorem mapsCleanedRelators_of_cleanedTauNormalWord_reduce_mem
    [DecidablePred D.IsDegenerateSchreierSymbol]
    [DecidableEq D.NondegenerateSchreierSymbol]
    {Y : Type*} [DecidableEq Y]
    {R : Set (FreeGroup X)} {S : Set (FreeGroup Y)}
    {toTargetGenerator : D.NondegenerateSchreierSymbol → FreeGroup Y}
    (targetWord : Q → FreeGroup X → List (Y × Bool))
    (hword :
      ∀ q : Q, ∀ r ∈ R,
        FreeGroup.reduce
            (freeGroupSubstitutionWord toTargetGenerator
              (D.cleanedTauNormalWord q r)) =
          FreeGroup.reduce (targetWord q r))
    (hmem :
      ∀ q : Q, ∀ r ∈ R, FreeGroup.mk (targetWord q r) ∈ S) :
    ∀ q : Q, ∀ r ∈ R,
      RelatorEquivalent S
        (FreeGroup.lift toTargetGenerator (D.cleanedTau q r)) 1
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTau_one

The \(\tau\)-word for the identity case evaluates to 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 Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
theorem cleanedTau_one
    [DecidablePred D.IsDegenerateSchreierSymbol] (q : Q) :
    D.cleanedTau q 1 = 1
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTau_mul

The cleaned \(\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 Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
theorem cleanedTau_mul
    [DecidablePred D.IsDegenerateSchreierSymbol]
    (q : Q) (u v : FreeGroup X) :
    D.cleanedTau q (u * v) =
      D.cleanedTau q u *
        D.cleanedTau (D.quotientMap (D.quotientSection q * u)) v
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTau_mul_of_mem_kernel

For a kernel word, the cleaned \(\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 Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
theorem cleanedTau_mul_of_mem_kernel
    [DecidablePred D.IsDegenerateSchreierSymbol]
    {u : FreeGroup X} (hu : u ∈ D.kernel) (v : FreeGroup X) :
    D.cleanedTau 1 (u * v) = D.cleanedTau 1 u * D.cleanedTau 1 v
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTau_inv

The cleaned \(\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 Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
theorem cleanedTau_inv
    [DecidablePred D.IsDegenerateSchreierSymbol]
    (q : Q) (u : FreeGroup X) :
    D.cleanedTau (D.quotientMap (D.quotientSection q * u)) u⁻¹ =
      (D.cleanedTau q u)⁻¹
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTau_inv_of_mem_kernel

For a kernel word, the cleaned \(\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 Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
theorem cleanedTau_inv_of_mem_kernel
    [DecidablePred D.IsDegenerateSchreierSymbol]
    {u : FreeGroup X} (hu : u ∈ D.kernel) :
    D.cleanedTau 1 u⁻¹ = (D.cleanedTau 1 u)⁻¹
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.nondegenerateSymbolEvalHom_cleanedTau

Evaluating a cleaned \(\tau\)-word through nondegenerate symbols gives the same quotient-section conjugate as the uncleaned \(\tau\)-word.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
theorem nondegenerateSymbolEvalHom_cleanedTau
    [DecidablePred D.IsDegenerateSchreierSymbol]
    (q : Q) (w : FreeGroup X) :
    D.nondegenerateSymbolEvalHom (D.cleanedTau q w) =
      D.quotientSection q * w *
        (D.quotientSection
          (D.quotientMap (D.quotientSection q * w)))⁻¹
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTau_pow_of_mem_kernel

For a kernel word, cleaned \(\tau\) sends natural powers to powers of the cleaned \(\tau\)-word.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
theorem cleanedTau_pow_of_mem_kernel
    [DecidablePred D.IsDegenerateSchreierSymbol]
    {u : FreeGroup X} (hu : u ∈ D.kernel) (n : ℕ) :
    D.cleanedTau 1 (u ^ n) = (D.cleanedTau 1 u) ^ n
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTau_zpow_of_mem_kernel

For a kernel word, cleaned \(\tau\) sends integer powers to powers of the cleaned \(\tau\)-word.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
theorem cleanedTau_zpow_of_mem_kernel
    [DecidablePred D.IsDegenerateSchreierSymbol]
    {u : FreeGroup X} (hu : u ∈ D.kernel) (n : ℤ) :
    D.cleanedTau 1 (u ^ n) = (D.cleanedTau 1 u) ^ n
ReidemeisterSchreier.Discrete.FiniteQuotientSchreierData.cleanedTau_conj_of_mem_kernel

For kernel words, cleaned \(\tau\) sends a conjugate to the conjugate of the cleaned \(\tau\)-words.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete
open ReidemeisterSchreier.Discrete.Presentations
variable {X Q : Type*} [Group Q] [Fintype Q]
namespace FiniteQuotientSchreierData
variable (D : FiniteQuotientSchreierData X Q)
variable [DecidableEq X]
theorem cleanedTau_conj_of_mem_kernel
    [DecidablePred D.IsDegenerateSchreierSymbol]
    {a u : FreeGroup X} (ha : a ∈ D.kernel) (hu : u ∈ D.kernel) :
    D.cleanedTau 1 (a * u * a⁻¹) =
      D.cleanedTau 1 a * D.cleanedTau 1 u * (D.cleanedTau 1 a)⁻¹