Documentation

Mathlib.GroupTheory.PresentedGroup

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 #

Tags #

generators, relations, group presentations

def PresentedGroup {α : Type u_1} (rels : Set (FreeGroup α)) :
Type u_1

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
Instances For
    def PresentedAddGroup {α : Type u_1} (rels : Set (FreeAddGroup α)) :
    Type u_1

    Given a set of relations, rels, over a type α, PresentedAddGroup constructs the additive group with generators x : α and relations rels as a quotient of FreeAddGroup α.

    Equations
    Instances For
      @[instance_reducible]
      instance instGroupPresentedGroup {α : Type u_1} (rels : Set (FreeGroup α)) :
      Equations
      • One or more equations did not get rendered due to their size.
      def PresentedGroup.mk {α : Type u_1} (rels : Set (FreeGroup α)) :

      The canonical map from the free group on α to a presented group with generators x : α, where x is mapped to its equivalence class under the given set of relations rels

      Equations
      Instances For

        The canonical map from the free additive group on α to a presented additive group with generators x : α, where x is mapped to its equivalence class under the given set of relations rels

        Equations
        Instances For
          theorem PresentedGroup.mk_surjective {α : Type u_1} (rels : Set (FreeGroup α)) :
          def PresentedGroup.of {α : Type u_1} {rels : Set (FreeGroup α)} (x : α) :

          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
          Instances For
            def PresentedAddGroup.of {α : Type u_1} {rels : Set (FreeAddGroup α)} (x : α) :

            of is the canonical map from α to a presented additive group with generators x : α. The term x is mapped to the equivalence class of the image of x in FreeGroup α.

            Equations
            Instances For
              def PresentedGroup.map {α : Type u_1} {β : Type u_2} (f : FreeGroup α →* FreeGroup β) {s : Set (FreeGroup α)} {t : Set (FreeGroup β)} (hst : Set.MapsTo (⇑f) s t) :

              FreeGroup α →* FreeGroup β induces a homomorphism PresentedGroup s →* PresentedGroup t if the image of s is contained in t.

              Equations
              Instances For
                def PresentedAddGroup.map {α : Type u_1} {β : Type u_2} (f : FreeAddGroup α →+ FreeAddGroup β) {s : Set (FreeAddGroup α)} {t : Set (FreeAddGroup β)} (hst : Set.MapsTo (⇑f) s t) :

                FreeAddGroup α →* FreeAddGroup β induces a homomorphism PresentedAddGroup s →* PresentedAddGroup t if the image of s is contained in t.

                Equations
                Instances For
                  theorem PresentedGroup.mk_eq_one_iff {α : Type u_1} {rels : Set (FreeGroup α)} {x : FreeGroup α} :
                  (mk rels) x = 1 ↔ x ∈ Subgroup.normalClosure rels
                  theorem PresentedAddGroup.mk_eq_zero_iff {α : Type u_1} {rels : Set (FreeAddGroup α)} {x : FreeAddGroup α} :
                  theorem PresentedGroup.one_of_mem {α : Type u_1} {rels : Set (FreeGroup α)} {x : FreeGroup α} (hx : x ∈ rels) :
                  (mk rels) x = 1
                  theorem PresentedAddGroup.zero_of_mem {α : Type u_1} {rels : Set (FreeAddGroup α)} {x : FreeAddGroup α} (hx : x ∈ rels) :
                  (mk rels) x = 0
                  theorem PresentedGroup.mk_eq_mk_of_mul_inv_mem {α : Type u_1} {rels : Set (FreeGroup α)} {x y : FreeGroup α} (hx : x * y⁻¹ ∈ rels) :
                  (mk rels) x = (mk rels) y
                  theorem PresentedAddGroup.mk_eq_mk_of_add_neg_mem {α : Type u_1} {rels : Set (FreeAddGroup α)} {x y : FreeAddGroup α} (hx : x + -y ∈ rels) :
                  (mk rels) x = (mk rels) y
                  theorem PresentedGroup.mk_eq_mk_of_inv_mul_mem {α : Type u_1} {rels : Set (FreeGroup α)} {x y : FreeGroup α} (hx : x⁻¹ * y ∈ rels) :
                  (mk rels) x = (mk rels) y
                  theorem PresentedAddGroup.mk_eq_mk_of_neg_add_mem {α : Type u_1} {rels : Set (FreeAddGroup α)} {x y : FreeAddGroup α} (hx : -x + y ∈ rels) :
                  (mk rels) x = (mk rels) y
                  @[simp]

                  The generators of a presented group generate the presented group. That is, the subgroup closure of the set of generators equals ⊤.

                  @[simp]

                  The generators of a presented additive group generate the presented group. That is, the subgroup closure of the set of generators equals ⊤.

                  theorem PresentedGroup.induction_on {α : Type u_1} {rels : Set (FreeGroup α)} {C : PresentedGroup rels → Prop} (x : PresentedGroup rels) (H : ∀ (z : FreeGroup α), C ((mk rels) z)) :
                  C x
                  theorem PresentedAddGroup.induction_on {α : Type u_1} {rels : Set (FreeAddGroup α)} {C : PresentedAddGroup rels → Prop} (x : PresentedAddGroup rels) (H : ∀ (z : FreeAddGroup α), C ((mk rels) z)) :
                  C x
                  theorem PresentedGroup.generated_by {α : Type u_1} (rels : Set (FreeGroup α)) (H : Subgroup (PresentedGroup rels)) (h : ∀ (j : α), of j ∈ H) (x : PresentedGroup rels) :
                  x ∈ H
                  theorem PresentedAddGroup.generated_by {α : Type u_1} (rels : Set (FreeAddGroup α)) (H : AddSubgroup (PresentedAddGroup rels)) (h : ∀ (j : α), of j ∈ H) (x : PresentedAddGroup rels) :
                  x ∈ H
                  theorem PresentedGroup.closure_rels_subset_ker {α : Type u_1} {G : Type u_3} [Group G] {f : α → G} {rels : Set (FreeGroup α)} (h : ∀ r ∈ rels, (FreeGroup.lift f) r = 1) :
                  theorem PresentedAddGroup.closure_rels_subset_ker {α : Type u_1} {G : Type u_3} [AddGroup G] {f : α → G} {rels : Set (FreeAddGroup α)} (h : ∀ r ∈ rels, (FreeAddGroup.lift f) r = 0) :
                  theorem PresentedGroup.to_group_eq_one_of_mem_closure {α : Type u_1} {G : Type u_3} [Group G] {f : α → G} {rels : Set (FreeGroup α)} (h : ∀ r ∈ rels, (FreeGroup.lift f) r = 1) (x : FreeGroup α) :
                  theorem PresentedAddGroup.to_addGroup_eq_zero_of_mem_closure {α : Type u_1} {G : Type u_3} [AddGroup G] {f : α → G} {rels : Set (FreeAddGroup α)} (h : ∀ r ∈ rels, (FreeAddGroup.lift f) r = 0) (x : FreeAddGroup α) :
                  def PresentedGroup.toGroup {α : Type u_1} {G : Type u_3} [Group G] {f : α → G} {rels : Set (FreeGroup α)} (h : ∀ r ∈ rels, (FreeGroup.lift f) r = 1) :

                  The extension of a map f : α → G that satisfies the given relations to a group homomorphism from PresentedGroup rels → G.

                  Equations
                  Instances For
                    def PresentedAddGroup.toAddGroup {α : Type u_1} {G : Type u_3} [AddGroup G] {f : α → G} {rels : Set (FreeAddGroup α)} (h : ∀ r ∈ rels, (FreeAddGroup.lift f) r = 0) :

                    The extension of a map f : α → G that satisfies the given relations to an additive group homomorphism from PresentedGroup rels → G.

                    Equations
                    Instances For
                      @[simp]
                      theorem PresentedGroup.toGroup.of {α : Type u_1} {G : Type u_3} [Group G] {f : α → G} {rels : Set (FreeGroup α)} (h : ∀ r ∈ rels, (FreeGroup.lift f) r = 1) {x : α} :
                      @[simp]
                      theorem PresentedAddGroup.toAddGroup.of {α : Type u_1} {G : Type u_3} [AddGroup G] {f : α → G} {rels : Set (FreeAddGroup α)} (h : ∀ r ∈ rels, (FreeAddGroup.lift f) r = 0) {x : α} :
                      theorem PresentedGroup.toGroup.unique {α : Type u_1} {G : Type u_3} [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 = (toGroup h) x
                      theorem PresentedAddGroup.toAddGroup.unique {α : Type u_1} {G : Type u_3} [AddGroup G] {f : α → G} {rels : Set (FreeAddGroup α)} (h : ∀ r ∈ rels, (FreeAddGroup.lift f) r = 0) (g : PresentedAddGroup rels →+ G) (hg : ∀ (x : α), g (PresentedAddGroup.of x) = f x) {x : PresentedAddGroup rels} :
                      g x = (toAddGroup h) x
                      theorem PresentedGroup.ext {α : Type u_1} {G : Type u_3} [Group G] {rels : Set (FreeGroup α)} {φ ψ : PresentedGroup rels →* G} (hx : ∀ (x : α), φ (of x) = ψ (of x)) :
                      φ = ψ
                      theorem PresentedAddGroup.ext {α : Type u_1} {G : Type u_3} [AddGroup G] {rels : Set (FreeAddGroup α)} {φ ψ : PresentedAddGroup rels →+ G} (hx : ∀ (x : α), φ (of x) = ψ (of x)) :
                      φ = ψ
                      theorem PresentedGroup.ext_iff {α : Type u_1} {G : Type u_3} [Group G] {rels : Set (FreeGroup α)} {φ ψ : PresentedGroup rels →* G} :
                      φ = ψ ↔ ∀ (x : α), φ (of x) = ψ (of x)
                      theorem PresentedAddGroup.ext_iff {α : Type u_1} {G : Type u_3} [AddGroup G] {rels : Set (FreeAddGroup α)} {φ ψ : PresentedAddGroup rels →+ G} :
                      φ = ψ ↔ ∀ (x : α), φ (of x) = ψ (of x)
                      def PresentedGroup.equivPresentedGroup {α : Type u_1} {β : Type u_2} (rels : Set (FreeGroup α)) (e : α ≃ β) :

                      Presented groups of isomorphic types are isomorphic.

                      Equations
                      Instances For

                        Presented additive groups of isomorphic types are isomorphic.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          theorem PresentedGroup.equivPresentedGroup_apply_of {α : Type u_1} {β : Type u_2} (x : α) (rels : Set (FreeGroup α)) (e : α ≃ β) :
                          (equivPresentedGroup rels e) (of x) = of (e x)
                          theorem PresentedAddGroup.equivPresentedAddGroup_apply_of {α : Type u_1} {β : Type u_2} (x : α) (rels : Set (FreeAddGroup α)) (e : α ≃ β) :
                          (equivPresentedAddGroup rels e) (of x) = of (e x)
                          theorem PresentedGroup.equivPresentedGroup_symm_apply_of {α : Type u_1} {β : Type u_2} (x : β) (rels : Set (FreeGroup α)) (e : α ≃ β) :
                          (equivPresentedGroup rels e).symm (of x) = of (e.symm x)
                          theorem PresentedAddGroup.equivPresentedAddGroup_symm_apply_of {α : Type u_1} {β : Type u_2} (x : β) (rels : Set (FreeAddGroup α)) (e : α ≃ β) :
                          (equivPresentedAddGroup rels e).symm (of x) = of (e.symm x)
                          @[instance_reducible]
                          instance PresentedGroup.instInhabited {α : Type u_1} (rels : Set (FreeGroup α)) :
                          Equations
                          @[instance_reducible]
                          Equations
                          def PresentedGroup.toCoprod {α : Type u_1} {β : Type u_2} (rels₁ : Set (FreeGroup α)) (rels₂ : Set (FreeGroup β)) :
                          α ⊕ β → Monoid.Coprod (PresentedGroup rels₁) (PresentedGroup rels₂)

                          The canonical inclusion map from the disjoint union of types to the free product of the relations

                          Equations
                          Instances For
                            def PresentedAddGroup.toCoprod {α : Type u_1} {β : Type u_2} (rels₁ : Set (FreeAddGroup α)) (rels₂ : Set (FreeAddGroup β)) :

                            The canonical inclusion map from the disjoint union of types to the free product of the relations

                            Equations
                            Instances For
                              @[simp]
                              theorem PresentedGroup.lift_toCoprod_inl_eq_inl_mk {α : Type u_1} {β : Type u_2} (rels₁ : Set (FreeGroup α)) (rels₂ : Set (FreeGroup β)) :
                              @[simp]
                              theorem PresentedAddGroup.lift_toCoprod_inl_eq_inl_mk {α : Type u_1} {β : Type u_2} (rels₁ : Set (FreeAddGroup α)) (rels₂ : Set (FreeAddGroup β)) :
                              @[simp]
                              theorem PresentedGroup.lift_toCoprod_inr_eq_inr_mk {α : Type u_1} {β : Type u_2} (rels₁ : Set (FreeGroup α)) (rels₂ : Set (FreeGroup β)) :
                              @[simp]
                              theorem PresentedAddGroup.lift_toCoprod_inr_eq_inr_mk {α : Type u_1} {β : Type u_2} (rels₁ : Set (FreeAddGroup α)) (rels₂ : Set (FreeAddGroup β)) :
                              theorem PresentedGroup.lift_toCoprod_eq_one {α : Type u_1} {β : Type u_2} (rels₁ : Set (FreeGroup α)) (rels₂ : Set (FreeGroup β)) (r : FreeGroup (α ⊕ β)) (hr : r ∈ ⇑(FreeGroup.map Sum.inl) '' rels₁ ∪ ⇑(FreeGroup.map Sum.inr) '' rels₂) :
                              (FreeGroup.lift (toCoprod rels₁ rels₂)) r = 1
                              theorem PresentedAddGroup.lift_toCoprod_eq_zero {α : Type u_1} {β : Type u_2} (rels₁ : Set (FreeAddGroup α)) (rels₂ : Set (FreeAddGroup β)) (r : FreeAddGroup (α ⊕ β)) (hr : r ∈ ⇑(FreeAddGroup.map Sum.inl) '' rels₁ ∪ ⇑(FreeAddGroup.map Sum.inr) '' rels₂) :
                              (FreeAddGroup.lift (toCoprod rels₁ rels₂)) r = 0
                              def PresentedGroup.coprodPresentations {α : Type u_1} {β : Type u_2} (rels₁ : Set (FreeGroup α)) (rels₂ : Set (FreeGroup β)) :

                              The free product (Coproduct) of presentations is isomorphic to the presentation of the union over the FreeGroup (α ⊕ β)

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For

                                The free product (Coproduct) of presentations is isomorphic to the presentation of the union over the FreeAddGroup (α ⊕ β)

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For