ProCGroups.ReidemeisterSchreier.Discrete.Presentations.Relators.FreeGroupLift

14 Theorems | 1 Definition

This module relates reduced words and FreeGroup.mk, then proves that lifts whose generator images agree modulo a relator normal closure agree on every free-group word.

import
Imported by

Declarations

theorem freeGroup_relatorEquivalent_of_toWord_eq_reduce
    [DecidableEq X]
    {R : Set (FreeGroup X)} {u : FreeGroup X} {w : List (X × Bool)}
    (h : u.toWord = FreeGroup.reduce w) :
    RelatorEquivalent R u (FreeGroup.mk w)

A free-group element is relator-equivalent to the word built from a list when its word representation reduces to that list.

Show Lean proof
theorem freeGroup_relatorEquivalent_mk_of_reduce_eq
    [DecidableEq X]
    {R : Set (FreeGroup X)} {u : FreeGroup X} {w : List (X × Bool)}
    (h : FreeGroup.reduce w = u.toWord) :
    RelatorEquivalent R (FreeGroup.mk w) u

A free-group word is relator-equivalent to the word built from a list when their reduced words agree.

Show Lean proof
def freeGroupSubstitutionWord {Y : Type*} [DecidableEq Y]
    (f : X → FreeGroup Y) :
    List (X × Bool) → List (Y × Bool)
  | [] => []
  | (x, true) :: xs => (f x).toWord ++ freeGroupSubstitutionWord f xs
  | (x, false) :: xs => FreeGroup.invRev (f x).toWord ++ freeGroupSubstitutionWord f xs

Expand each signed source letter to the reduced word of its image, reversing and inverting negative letters.

@[simp]
theorem freeGroupSubstitutionWord_nil {Y : Type*} [DecidableEq Y]
    (f : X → FreeGroup Y) :
    freeGroupSubstitutionWord f [] = []

Substitution sends the empty word to the empty word.

Show Lean proof
@[simp]
theorem freeGroupSubstitutionWord_cons_true {Y : Type*} [DecidableEq Y]
    (f : X → FreeGroup Y) (x : X) (xs : List (X × Bool)) :
    freeGroupSubstitutionWord f ((x, true) :: xs) =
      (f x).toWord ++ freeGroupSubstitutionWord f xs

Substitution of a positive letter prepends the reduced word of its image.

Show Lean proof
@[simp]
theorem freeGroupSubstitutionWord_cons_false {Y : Type*} [DecidableEq Y]
    (f : X → FreeGroup Y) (x : X) (xs : List (X × Bool)) :
    freeGroupSubstitutionWord f ((x, false) :: xs) =
      FreeGroup.invRev (f x).toWord ++ freeGroupSubstitutionWord f xs

Substitution of a negative letter prepends the inverse-reversal of its image word.

Show Lean proof
theorem freeGroupSubstitutionWord_append {Y : Type*} [DecidableEq Y]
    (f : X → FreeGroup Y) (xs ys : List (X × Bool)) :
    freeGroupSubstitutionWord f (xs ++ ys) =
      freeGroupSubstitutionWord f xs ++ freeGroupSubstitutionWord f ys

Substitution preserves concatenation of signed words.

Show Lean proof
theorem freeGroup_mk_substitutionWord {Y : Type*} [DecidableEq Y]
    (f : X → FreeGroup Y) (xs : List (X × Bool)) :
    FreeGroup.mk (freeGroupSubstitutionWord f xs) =
      FreeGroup.lift f (FreeGroup.mk xs)

Evaluating a substitution word agrees with applying the free-group lift.

Show Lean proof
theorem freeGroup_toWord_lift_mk {Y : Type*} [DecidableEq Y]
    (f : X → FreeGroup Y) (xs : List (X × Bool)) :
    (FreeGroup.lift f (FreeGroup.mk xs)).toWord =
      FreeGroup.reduce (freeGroupSubstitutionWord f xs)

The lifted generator maps to the corresponding word in the free-group presentation.

Show Lean proof
theorem freeGroup_lift_mk_eq_mk_of_substitutionWord_reduce_eq
    {Y : Type*} [DecidableEq Y]
    {f : X → FreeGroup Y} {xs : List (X × Bool)}
    {ys : List (Y × Bool)}
    (h :
      FreeGroup.reduce (freeGroupSubstitutionWord f xs) =
        FreeGroup.reduce ys) :
    FreeGroup.lift f (FreeGroup.mk xs) = FreeGroup.mk ys

The free-group lift of a reduced substitution word agrees with the corresponding generator.

Show Lean proof
theorem freeGroup_relatorEquivalent_lift_mk_of_substitutionWord_reduce_eq
    {Y : Type*} [DecidableEq Y]
    {R : Set (FreeGroup Y)}
    {f : X → FreeGroup Y} {xs : List (X × Bool)}
    {ys : List (Y × Bool)}
    (h :
      FreeGroup.reduce (freeGroupSubstitutionWord f xs) =
        FreeGroup.reduce ys) :
    RelatorEquivalent R (FreeGroup.lift f (FreeGroup.mk xs))
      (FreeGroup.mk ys)

A lifted generator word is relator-equivalent to the corresponding word when the substitution word has the stated reduction.

Show Lean proof
theorem freeGroup_relatorEquivalent_lift_mk_one_of_substitutionWord_reduce_eq
    {Y : Type*} [DecidableEq Y]
    {R : Set (FreeGroup Y)}
    {f : X → FreeGroup Y} {xs : List (X × Bool)}
    {ys : List (Y × Bool)}
    (h :
      FreeGroup.reduce (freeGroupSubstitutionWord f xs) =
        FreeGroup.reduce ys)
    (hy : RelatorEquivalent R (FreeGroup.mk ys) 1) :
    RelatorEquivalent R (FreeGroup.lift f (FreeGroup.mk xs)) 1

A lifted generator word is relator-equivalent to the identity when its substitution word reduces to the empty word.

Show Lean proof
theorem freeGroup_lift_relatorEquivalent_of_generator_relatorEquivalent
    {R : Set G} {f g : X → G}
    (h : ∀ x : X, RelatorEquivalent R (f x) (g x))
    (w : FreeGroup X) :
    RelatorEquivalent R (FreeGroup.lift f w) (FreeGroup.lift g w)

A free-group lift preserves relator equivalence when the generator images are relator-equivalent.

Show Lean proof
theorem freeGroup_lift_relatorEquivalent_one_of_generator_relatorEquivalent
    {R : Set G} {f : X → G}
    (h : ∀ x : X, RelatorEquivalent R (f x) 1)
    (w : FreeGroup X) :
    RelatorEquivalent R (FreeGroup.lift f w) 1

A free-group lift sends the word to a relator-equivalent trivial word when the generator images are relator-equivalent to one.

Show Lean proof
theorem freeGroup_lift_relatorEquivalent_of_generator_eq
    {R : Set G} {f g : X → G}
    (h : ∀ x : X, f x = g x)
    (w : FreeGroup X) :
    RelatorEquivalent R (FreeGroup.lift f w) (FreeGroup.lift g w)

A free-group lift preserves relator equivalence when the generator images are equal.

Show Lean proof