Defining a group given by generators and relations #
Given a subset rels of relations of the free group on a type α, this file constructs the group
given by generators x : α and relations r ∈ rels.
Main definitions #
- PresentedGroup rels: the quotient group of the free group on a type- αby a subset- relsof relations of the free group on- α.
- of: The canonical map from- αto a presented group with generators- α.
- toGroup f: the canonical group homomorphism- PresentedGroup rels → G, given a function- f : α → Gfrom a type- αto a group- Gwhich satisfies the relations- rels.
Tags #
generators, relations, group presentations
Given a set of relations, rels, over a type α, PresentedGroup constructs the group with
generators x : α and relations rels as a quotient of FreeGroup α.
Equations
- PresentedGroup rels = (FreeGroup α ⧸ Subgroup.normalClosure rels)
Instances For
instance
PresentedGroup.instGroupPresentedGroup
{α : Type u_1}
(rels : Set (FreeGroup α))
 :
Group (PresentedGroup rels)
Equations
of is the canonical map from α to a presented group with generators x : α. The term x is
mapped to the equivalence class of the image of x in FreeGroup α.
Equations
- PresentedGroup.of x = ↑(FreeGroup.of x)
Instances For
theorem
PresentedGroup.closure_rels_subset_ker
{α : Type u_1}
{G : Type u_2}
[Group G]
{f : α → G}
{rels : Set (FreeGroup α)}
(h : ∀ r ∈ rels, (FreeGroup.lift f) r = 1)
 :
Subgroup.normalClosure rels ≤ MonoidHom.ker (FreeGroup.lift f)
def
PresentedGroup.toGroup
{α : Type u_1}
{G : Type u_2}
[Group G]
{f : α → G}
{rels : Set (FreeGroup α)}
(h : ∀ r ∈ rels, (FreeGroup.lift f) r = 1)
 :
PresentedGroup rels →* G
The extension of a map f : α → G that satisfies the given relations to a group homomorphism
from PresentedGroup rels → G.
Equations
- PresentedGroup.toGroup h = QuotientGroup.lift (Subgroup.normalClosure rels) (FreeGroup.lift f) ⋯
Instances For
@[simp]
theorem
PresentedGroup.toGroup.of
{α : Type u_1}
{G : Type u_2}
[Group G]
{f : α → G}
{rels : Set (FreeGroup α)}
(h : ∀ r ∈ rels, (FreeGroup.lift f) r = 1)
{x : α}
 :
(PresentedGroup.toGroup h) (PresentedGroup.of x) = f x
theorem
PresentedGroup.toGroup.unique
{α : Type u_1}
{G : Type u_2}
[Group G]
{f : α → G}
{rels : Set (FreeGroup α)}
(h : ∀ r ∈ rels, (FreeGroup.lift f) r = 1)
(g : PresentedGroup rels →* G)
(hg : ∀ (x : α), g (PresentedGroup.of x) = f x)
{x : PresentedGroup rels}
 :
g x = (PresentedGroup.toGroup h) x
theorem
PresentedGroup.ext
{α : Type u_1}
{G : Type u_2}
[Group G]
{rels : Set (FreeGroup α)}
{φ : PresentedGroup rels →* G}
{ψ : PresentedGroup rels →* G}
(hx : ∀ (x : α), φ (PresentedGroup.of x) = ψ (PresentedGroup.of x))
 :
φ = ψ
def
PresentedGroup.equivPresentedGroup
{α : Type u_1}
{β : Type u_3}
(rels : Set (FreeGroup α))
(e : α ≃ β)
 :
PresentedGroup rels ≃* PresentedGroup (⇑(FreeGroup.freeGroupCongr e) '' rels)
Presented groups of isomorphic types are isomorphic.
Equations
- PresentedGroup.equivPresentedGroup rels e = QuotientGroup.congr (Subgroup.normalClosure rels) (Subgroup.normalClosure (⇑(FreeGroup.freeGroupCongr e) '' rels)) (FreeGroup.freeGroupCongr e) ⋯
Instances For
theorem
PresentedGroup.equivPresentedGroup_apply_of
{α : Type u_1}
{β : Type u_3}
(x : α)
(rels : Set (FreeGroup α))
(e : α ≃ β)
 :
(PresentedGroup.equivPresentedGroup rels e) (PresentedGroup.of x) = PresentedGroup.of (e x)
theorem
PresentedGroup.equivPresentedGroup_symm_apply_of
{α : Type u_1}
{β : Type u_3}
(x : β)
(rels : Set (FreeGroup α))
(e : α ≃ β)
 :
(MulEquiv.symm (PresentedGroup.equivPresentedGroup rels e)) (PresentedGroup.of x) = PresentedGroup.of (e.symm x)
instance
PresentedGroup.instInhabitedPresentedGroup
{α : Type u_1}
(rels : Set (FreeGroup α))
 :
Inhabited (PresentedGroup rels)
Equations
- PresentedGroup.instInhabitedPresentedGroup rels = { default := 1 }