Module

Operations.lean

Nyll.ProCGroups.ReidemeisterSchreier.Discrete.Presentations.Relators.Operations
29 declarations indexed from sourceView source ↗

Operations on relator normal closures

This module proves invariance and closure lemmas for changing relator sets, conjugating and cyclically rotating words, products of lists, and ordered finite products.

Declarations

ReidemeisterSchreier.Discrete.Presentations.normalClosure_eq_of_relatorEquivalent

If every relator on each side is trivial modulo the other side, the normal closures are equal.

Source context 4 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}
theorem normalClosure_eq_of_relatorEquivalent
    (hR_to_S : ∀ r ∈ R, RelatorEquivalent S r 1)
    (hS_to_R : ∀ s ∈ S, RelatorEquivalent R s 1) :
    Subgroup.normalClosure R = Subgroup.normalClosure S
ReidemeisterSchreier.Discrete.Presentations.normalClosure_insert_eq_of_mem

Inserting an element already in the normal closure does not change the normal closure.

Source context 4 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}
theorem normalClosure_insert_eq_of_mem
    (hr : r ∈ Subgroup.normalClosure R) :
    Subgroup.normalClosure (insert r R) = Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.Presentations.normalClosure_diff_singleton_eq_of_mem

Removing a relator that already lies in the normal closure of the remaining relators does not change the normal closure.

Source context 4 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}
theorem normalClosure_diff_singleton_eq_of_mem
    (hr : r ∈ Subgroup.normalClosure (R \ {r})) :
    Subgroup.normalClosure R = Subgroup.normalClosure (R \ {r})
ReidemeisterSchreier.Discrete.Presentations.normalClosure_eq_of_subset_normalClosure

Two relator normal closures are equal when each relator family is contained in the normal closure generated by the other.

Source context 4 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}
theorem normalClosure_eq_of_subset_normalClosure
    (hR_to_S : R ⊆ Subgroup.normalClosure S)
    (hS_to_R : S ⊆ Subgroup.normalClosure R) :
    Subgroup.normalClosure R = Subgroup.normalClosure S
ReidemeisterSchreier.Discrete.Presentations.conjugate_mem_normalClosure_of_mem

Every conjugate of a relator belongs to the normal closure of the relator set.

Source context 4 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}
theorem conjugate_mem_normalClosure_of_mem
    (hr : r ∈ R) (a : G) :
    a * r * a⁻¹ ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.Presentations.conjugate_mem_normalClosure

A conjugate of a relator belongs to the normal closure of the relator set.

Source context 4 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}
theorem conjugate_mem_normalClosure
    (hr : r ∈ Subgroup.normalClosure R) (a : G) :
    a * r * a⁻¹ ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.Presentations.cyclic_rotation_mem_normalClosure

Cyclically rotating a relator keeps it in the same normal closure.

Source context 4 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}
theorem cyclic_rotation_mem_normalClosure
    (h : a * b ∈ Subgroup.normalClosure R) :
    b * a ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.Presentations.mem_of_left_mul_mem_normalClosure

If left multiplication by a relator-normal-closure element gives membership, then the original element has the same membership property.

Source context 4 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}
theorem mem_of_left_mul_mem_normalClosure
    {a b : G}
    (ha : a ∈ Subgroup.normalClosure R)
    (hab : a * b ∈ Subgroup.normalClosure R) :
    b ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.Presentations.cyclic_rotation_pow_mem_normalClosure

A cyclic rotation of a power relator belongs to the normal closure of the original relator set.

Source context 4 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}
theorem cyclic_rotation_pow_mem_normalClosure
    {a b : G} {n : ℕ}
    (h : (a * b) ^ n ∈ Subgroup.normalClosure R) :
    (b * a) ^ n ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.Presentations.pow_mem_normalClosure_of_mul_inv_mem

If u and v are congruent modulo the normal closure and a power of v lies in it, then the same power of u lies in it.

Source context 4 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}
theorem pow_mem_normalClosure_of_mul_inv_mem
    {u v : G} {n : ℕ}
    (huv : u * v⁻¹ ∈ Subgroup.normalClosure R)
    (hv : v ^ n ∈ Subgroup.normalClosure R) :
    u ^ n ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.Presentations.list_prod_mem_normalClosure

The product of a list of relators belongs to the normal closure of the relator set.

Source context 4 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}
theorem list_prod_mem_normalClosure
    {l : List G}
    (h : ∀ x ∈ l, x ∈ Subgroup.normalClosure R) :
    l.prod ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.Presentations.list_prod_map_relatorEquivalent

Mapping a list through relator-equivalent entries preserves relator equivalence of the product.

Source context 4 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}
theorem list_prod_map_relatorEquivalent
    {ι : Type*} (l : List ι) {f g : ι → G}
    (h : ∀ i ∈ l, RelatorEquivalent R (f i) (g i)) :
    RelatorEquivalent R (l.map f).prod (l.map g).prod
ReidemeisterSchreier.Discrete.Presentations.list_prod_map_relatorEquivalent_one

A list product is relator-equivalent to the identity when every mapped entry is relator-equivalent to the identity.

Source context 4 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}
theorem list_prod_map_relatorEquivalent_one
    {ι : Type*} (l : List ι) {f : ι → G}
    (h : ∀ i ∈ l, RelatorEquivalent R (f i) 1) :
    RelatorEquivalent R (l.map f).prod 1
ReidemeisterSchreier.Discrete.Presentations.list_prod_map_inv_reverse

Mapping inversion over a list and then reversing it gives a product equal to the inverse product.

Source context 4 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}
theorem list_prod_map_inv_reverse (l : List G) :
    (l.map Inv.inv).reverse.prod = l.prod⁻¹
ReidemeisterSchreier.Discrete.Presentations.list_prod_reverse_map_inv

Reversing a list and then inverting its entries gives a product equal to the inverse product.

Source context 4 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}
theorem list_prod_reverse_map_inv (l : List G) :
    (l.reverse.map Inv.inv).prod = l.prod⁻¹
ReidemeisterSchreier.Discrete.Presentations.list_prod_reverse_inv_relatorEquivalent

A list product is relator-equivalent to the inverse of the reversed inverse list product.

Source context 4 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}
theorem list_prod_reverse_inv_relatorEquivalent
    {l m : List G}
    (h : RelatorEquivalent R l.prod m.prod) :
    RelatorEquivalent R (l.reverse.map Inv.inv).prod
      (m.reverse.map Inv.inv).prod
ReidemeisterSchreier.Discrete.Presentations.list_prod_append_relatorEquivalent

Appending relator-equivalent list products preserves relator equivalence.

Source context 4 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}
theorem list_prod_append_relatorEquivalent
    {l₁ l₂ m₁ m₂ : List G}
    (h₁ : RelatorEquivalent R l₁.prod m₁.prod)
    (h₂ : RelatorEquivalent R l₂.prod m₂.prod) :
    RelatorEquivalent R (l₁ ++ l₂).prod (m₁ ++ m₂).prod
ReidemeisterSchreier.Discrete.Presentations.list_prod_append_left_relatorEquivalent

Left-appending the same list product preserves relator equivalence.

Source context 4 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}
theorem list_prod_append_left_relatorEquivalent
    (l : List G) {m n : List G}
    (h : RelatorEquivalent R m.prod n.prod) :
    RelatorEquivalent R (l ++ m).prod (l ++ n).prod
ReidemeisterSchreier.Discrete.Presentations.list_prod_middle_eq_one_relatorEquivalent

Removing a middle subproduct equal to one preserves relator equivalence of the list product.

Source context 4 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}
theorem list_prod_middle_eq_one_relatorEquivalent
    (l m : List G) {u : G}
    (h : RelatorEquivalent R u 1) :
    RelatorEquivalent R (l ++ u :: m).prod (l ++ m).prod
ReidemeisterSchreier.Discrete.Presentations.list_prod_middle_mul_inv_relatorEquivalent

Inserting or removing a middle product multiplied by its inverse preserves relator equivalence.

Source context 4 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}
theorem list_prod_middle_mul_inv_relatorEquivalent
    (l m : List G) {u v : G}
    (h : RelatorEquivalent R u v) :
    RelatorEquivalent R (l ++ (u * v⁻¹) :: m).prod
      (l ++ m).prod
ReidemeisterSchreier.Discrete.Presentations.list_prod_append_rotate_mem_normalClosure

Rotating an appended list product gives an element of the relator normal closure.

Source context 4 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}
theorem list_prod_append_rotate_mem_normalClosure
    {l m : List G}
    (h : (l ++ m).prod ∈ Subgroup.normalClosure R) :
    (m ++ l).prod ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.Presentations.list_prod_append_rotate_relatorEquivalent

A rotated append decomposition of a list product is relator-equivalent to the original product.

Source context 4 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}
theorem list_prod_append_rotate_relatorEquivalent
    {l m : List G}
    (h : RelatorEquivalent R (l ++ m).prod 1) :
    RelatorEquivalent R (m ++ l).prod 1
ReidemeisterSchreier.Discrete.Presentations.list_prod_take_drop_rotate_relatorEquivalent

The take/drop rotation of a list product is relator-equivalent to the original product.

Source context 4 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}
theorem list_prod_take_drop_rotate_relatorEquivalent
    (l : List G) (n : ℕ)
    (h : RelatorEquivalent R l.prod 1) :
    RelatorEquivalent R ((l.drop n) ++ (l.take n)).prod 1
ReidemeisterSchreier.Discrete.Presentations.list_prod_take_drop_rotate_mem_normalClosure

A take-drop rotation of a list product belongs to the relator normal closure.

Source context 4 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}
theorem list_prod_take_drop_rotate_mem_normalClosure
    (l : List G) (n : ℕ)
    (h : l.prod ∈ Subgroup.normalClosure R) :
    ((l.drop n) ++ (l.take n)).prod ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.Presentations.orderedFinsetProduct

A noncommutative product indexed by a finite set, with multiplication ordered by the ambient \(LinearOrder\).

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 OrderedFinsetProduct
variable {ι : Type*} [LinearOrder ι]
def orderedFinsetProduct (s : Finset ι) (f : ι → G) : G
ReidemeisterSchreier.Discrete.Presentations.orderedFinsetProduct_mem_normalClosure

An ordered finite product of relators belongs to the normal closure of the relator set.

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 OrderedFinsetProduct
variable {ι : Type*} [LinearOrder ι]
theorem orderedFinsetProduct_mem_normalClosure
    (s : Finset ι) {f : ι → G}
    (h : ∀ i ∈ s, f i ∈ Subgroup.normalClosure R) :
    orderedFinsetProduct s f ∈ Subgroup.normalClosure R
ReidemeisterSchreier.Discrete.Presentations.orderedFinsetProduct_relatorEquivalent

Replacing each term of an ordered finite product by a relator-equivalent term preserves relator equivalence.

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 OrderedFinsetProduct
variable {ι : Type*} [LinearOrder ι]
theorem orderedFinsetProduct_relatorEquivalent
    (s : Finset ι) {f g : ι → G}
    (h : ∀ i ∈ s, RelatorEquivalent R (f i) (g i)) :
    RelatorEquivalent R (orderedFinsetProduct s f)
      (orderedFinsetProduct s g)
ReidemeisterSchreier.Discrete.Presentations.orderedFinsetProduct_relatorEquivalent_one

An ordered finite product is relator-equivalent to the identity when every term is relator-equivalent to the identity.

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 OrderedFinsetProduct
variable {ι : Type*} [LinearOrder ι]
theorem orderedFinsetProduct_relatorEquivalent_one
    (s : Finset ι) {f : ι → G}
    (h : ∀ i ∈ s, RelatorEquivalent R (f i) 1) :
    RelatorEquivalent R (orderedFinsetProduct s f) 1
ReidemeisterSchreier.Discrete.Presentations.orderedFinsetProduct_congr

Pointwise equality on a finite index set gives equality of the corresponding ordered products.

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 OrderedFinsetProduct
variable {ι : Type*} [LinearOrder ι]
theorem orderedFinsetProduct_congr
    (s : Finset ι) {f g : ι → G}
    (h : ∀ i ∈ s, f i = g i) :
    orderedFinsetProduct s f = orderedFinsetProduct s g