Module

FreeGroupLift.lean

Nyll.ProCGroups.ReidemeisterSchreier.Discrete.Presentations.Relators.FreeGroupLift
15 declarations indexed from sourceView source ↗

Free-group lifts modulo relators

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.

Declarations

ReidemeisterSchreier.Discrete.Presentations.freeGroup_relatorEquivalent_of_toWord_eq_reduce

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

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete.Presentations
variable {G H : Type*} [Group G] [Group H]
section NormalClosure
variable {R S : Set G} {r a b : G}
section FreeGroupLift
variable {X : Type*}
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)
ReidemeisterSchreier.Discrete.Presentations.freeGroup_relatorEquivalent_mk_of_reduce_eq

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

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete.Presentations
variable {G H : Type*} [Group G] [Group H]
section NormalClosure
variable {R S : Set G} {r a b : G}
section FreeGroupLift
variable {X : Type*}
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
ReidemeisterSchreier.Discrete.Presentations.freeGroupSubstitutionWord

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

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete.Presentations
variable {G H : Type*} [Group G] [Group H]
section NormalClosure
variable {R S : Set G} {r a b : G}
section FreeGroupLift
variable {X : Type*}
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
ReidemeisterSchreier.Discrete.Presentations.freeGroupSubstitutionWord_nil

Substitution sends the empty word to the empty word.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete.Presentations
variable {G H : Type*} [Group G] [Group H]
section NormalClosure
variable {R S : Set G} {r a b : G}
section FreeGroupLift
variable {X : Type*}
theorem freeGroupSubstitutionWord_nil {Y : Type*} [DecidableEq Y]
    (f : X → FreeGroup Y) :
    freeGroupSubstitutionWord f [] = []
ReidemeisterSchreier.Discrete.Presentations.freeGroupSubstitutionWord_cons_true

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

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete.Presentations
variable {G H : Type*} [Group G] [Group H]
section NormalClosure
variable {R S : Set G} {r a b : G}
section FreeGroupLift
variable {X : Type*}
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
ReidemeisterSchreier.Discrete.Presentations.freeGroupSubstitutionWord_cons_false

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

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete.Presentations
variable {G H : Type*} [Group G] [Group H]
section NormalClosure
variable {R S : Set G} {r a b : G}
section FreeGroupLift
variable {X : Type*}
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
ReidemeisterSchreier.Discrete.Presentations.freeGroupSubstitutionWord_append

Substitution preserves concatenation of signed words.

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete.Presentations
variable {G H : Type*} [Group G] [Group H]
section NormalClosure
variable {R S : Set G} {r a b : G}
section FreeGroupLift
variable {X : Type*}
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
ReidemeisterSchreier.Discrete.Presentations.freeGroup_mk_substitutionWord

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

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete.Presentations
variable {G H : Type*} [Group G] [Group H]
section NormalClosure
variable {R S : Set G} {r a b : G}
section FreeGroupLift
variable {X : Type*}
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)
ReidemeisterSchreier.Discrete.Presentations.freeGroup_toWord_lift_mk

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

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete.Presentations
variable {G H : Type*} [Group G] [Group H]
section NormalClosure
variable {R S : Set G} {r a b : G}
section FreeGroupLift
variable {X : Type*}
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)
ReidemeisterSchreier.Discrete.Presentations.freeGroup_lift_mk_eq_mk_of_substitutionWord_reduce_eq

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

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete.Presentations
variable {G H : Type*} [Group G] [Group H]
section NormalClosure
variable {R S : Set G} {r a b : G}
section FreeGroupLift
variable {X : Type*}
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
ReidemeisterSchreier.Discrete.Presentations.freeGroup_relatorEquivalent_lift_mk_of_substitutionWord_reduce_eq

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

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete.Presentations
variable {G H : Type*} [Group G] [Group H]
section NormalClosure
variable {R S : Set G} {r a b : G}
section FreeGroupLift
variable {X : Type*}
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)
ReidemeisterSchreier.Discrete.Presentations.freeGroup_relatorEquivalent_lift_mk_one_of_substitutionWord_reduce_eq

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

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete.Presentations
variable {G H : Type*} [Group G] [Group H]
section NormalClosure
variable {R S : Set G} {r a b : G}
section FreeGroupLift
variable {X : Type*}
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
ReidemeisterSchreier.Discrete.Presentations.freeGroup_lift_relatorEquivalent_of_generator_relatorEquivalent

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

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete.Presentations
variable {G H : Type*} [Group G] [Group H]
section NormalClosure
variable {R S : Set G} {r a b : G}
section FreeGroupLift
variable {X : Type*}
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)
ReidemeisterSchreier.Discrete.Presentations.freeGroup_lift_relatorEquivalent_one_of_generator_relatorEquivalent

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

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete.Presentations
variable {G H : Type*} [Group G] [Group H]
section NormalClosure
variable {R S : Set G} {r a b : G}
section FreeGroupLift
variable {X : Type*}
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
ReidemeisterSchreier.Discrete.Presentations.freeGroup_lift_relatorEquivalent_of_generator_eq

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

Source context 6 commands

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

namespace ReidemeisterSchreier.Discrete.Presentations
variable {G H : Type*} [Group G] [Group H]
section NormalClosure
variable {R S : Set G} {r a b : G}
section FreeGroupLift
variable {X : Type*}
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)