Documentation

Mathlib.Algebra.PresentedMonoid.Basic

Defining a monoid given by generators and relations #

Given relations rels on the free monoid on a type α, this file constructs the monoid given by generators x : α and relations rels.

Main definitions #

Tags #

generators, relations, monoid presentations

def PresentedMonoid {α : Type u_1} (rel : FreeMonoid αFreeMonoid αProp) :
Type u_1

Given a set of relations, rels, over a type α, PresentedMonoid constructs the monoid with generators x : α and relations rels as a quotient of a congruence structure over rels.

Equations
    Instances For
      def PresentedAddMonoid {α : Type u_1} (rel : FreeAddMonoid αFreeAddMonoid αProp) :
      Type u_1

      Given a set of relations, rels, over a type α, PresentedAddMonoid constructs the monoid with generators x : α and relations rels as a quotient of an AddCon structure over rels

      Equations
        Instances For
          instance PresentedMonoid.instMonoid {α : Type u_1} {rels : FreeMonoid αFreeMonoid αProp} :
          Equations
            Equations
              def PresentedMonoid.mk {α : Type u_1} (rels : FreeMonoid αFreeMonoid αProp) :

              The quotient map from the free monoid on α to the presented monoid with the same generators and the given relations rels.

              Equations
                Instances For

                  The quotient map from the free additive monoid on α to the presented additive monoid with the same generators and the given relations rels

                  Equations
                    Instances For
                      def PresentedMonoid.of {α : Type u_1} (rels : FreeMonoid αFreeMonoid αProp) (x : α) :

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

                      Equations
                        Instances For
                          def PresentedAddMonoid.of {α : Type u_1} (rels : FreeAddMonoid αFreeAddMonoid αProp) (x : α) :

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

                          Equations
                            Instances For
                              theorem PresentedMonoid.inductionOn {α₁ : Type u_2} {rels₁ : FreeMonoid α₁FreeMonoid α₁Prop} {δ : PresentedMonoid rels₁Prop} (q : PresentedMonoid rels₁) (h : ∀ (a : FreeMonoid α₁), δ ((mk rels₁) a)) :
                              δ q
                              theorem PresentedAddMonoid.inductionOn {α₁ : Type u_2} {rels₁ : FreeAddMonoid α₁FreeAddMonoid α₁Prop} {δ : PresentedAddMonoid rels₁Prop} (q : PresentedAddMonoid rels₁) (h : ∀ (a : FreeAddMonoid α₁), δ ((mk rels₁) a)) :
                              δ q
                              theorem PresentedMonoid.inductionOn₂ {α₁ : Type u_2} {α₂ : Type u_3} {rels₁ : FreeMonoid α₁FreeMonoid α₁Prop} {rels₂ : FreeMonoid α₂FreeMonoid α₂Prop} {δ : PresentedMonoid rels₁PresentedMonoid rels₂Prop} (q₁ : PresentedMonoid rels₁) (q₂ : PresentedMonoid rels₂) (h : ∀ (a : FreeMonoid α₁) (b : FreeMonoid α₂), δ ((mk rels₁) a) ((mk rels₂) b)) :
                              δ q₁ q₂
                              theorem PresentedAddMonoid.inductionOn₂ {α₁ : Type u_2} {α₂ : Type u_3} {rels₁ : FreeAddMonoid α₁FreeAddMonoid α₁Prop} {rels₂ : FreeAddMonoid α₂FreeAddMonoid α₂Prop} {δ : PresentedAddMonoid rels₁PresentedAddMonoid rels₂Prop} (q₁ : PresentedAddMonoid rels₁) (q₂ : PresentedAddMonoid rels₂) (h : ∀ (a : FreeAddMonoid α₁) (b : FreeAddMonoid α₂), δ ((mk rels₁) a) ((mk rels₂) b)) :
                              δ q₁ q₂
                              theorem PresentedMonoid.inductionOn₃ {α₁ : Type u_2} {α₂ : Type u_3} {α₃ : Type u_4} {rels₁ : FreeMonoid α₁FreeMonoid α₁Prop} {rels₂ : FreeMonoid α₂FreeMonoid α₂Prop} {rels₃ : FreeMonoid α₃FreeMonoid α₃Prop} {δ : PresentedMonoid rels₁PresentedMonoid rels₂PresentedMonoid rels₃Prop} (q₁ : PresentedMonoid rels₁) (q₂ : PresentedMonoid rels₂) (q₃ : PresentedMonoid rels₃) (h : ∀ (a : FreeMonoid α₁) (b : FreeMonoid α₂) (c : FreeMonoid α₃), δ ((mk rels₁) a) ((mk rels₂) b) ((mk rels₃) c)) :
                              δ q₁ q₂ q₃
                              theorem PresentedAddMonoid.inductionOn₃ {α₁ : Type u_2} {α₂ : Type u_3} {α₃ : Type u_4} {rels₁ : FreeAddMonoid α₁FreeAddMonoid α₁Prop} {rels₂ : FreeAddMonoid α₂FreeAddMonoid α₂Prop} {rels₃ : FreeAddMonoid α₃FreeAddMonoid α₃Prop} {δ : PresentedAddMonoid rels₁PresentedAddMonoid rels₂PresentedAddMonoid rels₃Prop} (q₁ : PresentedAddMonoid rels₁) (q₂ : PresentedAddMonoid rels₂) (q₃ : PresentedAddMonoid rels₃) (h : ∀ (a : FreeAddMonoid α₁) (b : FreeAddMonoid α₂) (c : FreeAddMonoid α₃), δ ((mk rels₁) a) ((mk rels₂) b) ((mk rels₃) c)) :
                              δ q₁ q₂ q₃
                              @[simp]

                              The generators of a presented monoid generate the presented monoid. That is, the submonoid closure of the set of generators equals .

                              @[simp]

                              The generators of a presented additive monoid generate the presented additive monoid. That is, the additive submonoid closure of the set of generators equals .

                              theorem PresentedMonoid.surjective_mk {α : Type u_2} {rels : FreeMonoid αFreeMonoid αProp} :
                              def PresentedMonoid.lift {α : Type u_3} {M : Type u_4} [Monoid M] (f : αM) {rels : FreeMonoid αFreeMonoid αProp} (h : ∀ (a b : FreeMonoid α), rels a b(FreeMonoid.lift f) a = (FreeMonoid.lift f) b) :

                              The extension of a map f : α → M that satisfies the given relations to a monoid homomorphism from PresentedMonoid rels → M.

                              Equations
                                Instances For
                                  def PresentedAddMonoid.lift {α : Type u_3} {M : Type u_4} [AddMonoid M] (f : αM) {rels : FreeAddMonoid αFreeAddMonoid αProp} (h : ∀ (a b : FreeAddMonoid α), rels a b(FreeAddMonoid.lift f) a = (FreeAddMonoid.lift f) b) :

                                  The extension of a map f : α → M that satisfies the given relations to an additive-monoid homomorphism from PresentedAddMonoid rels → M

                                  Equations
                                    Instances For
                                      theorem PresentedMonoid.toMonoid.unique {α : Type u_3} {M : Type u_4} [Monoid M] (f : αM) {rels : FreeMonoid αFreeMonoid αProp} (h : ∀ (a b : FreeMonoid α), rels a b(FreeMonoid.lift f) a = (FreeMonoid.lift f) b) (g : (conGen rels).Quotient →* M) (hg : ∀ (a : α), g (of rels a) = f a) :
                                      g = lift f h
                                      theorem PresentedAddMonoid.toMonoid.unique {α : Type u_3} {M : Type u_4} [AddMonoid M] (f : αM) {rels : FreeAddMonoid αFreeAddMonoid αProp} (h : ∀ (a b : FreeAddMonoid α), rels a b(FreeAddMonoid.lift f) a = (FreeAddMonoid.lift f) b) (g : (addConGen rels).Quotient →+ M) (hg : ∀ (a : α), g (of rels a) = f a) :
                                      g = lift f h
                                      @[simp]
                                      theorem PresentedMonoid.lift_of {α : Type u_3} {M : Type u_4} [Monoid M] (f : αM) {rels : FreeMonoid αFreeMonoid αProp} (h : ∀ (a b : FreeMonoid α), rels a b(FreeMonoid.lift f) a = (FreeMonoid.lift f) b) {x : α} :
                                      (lift f h) (of rels x) = f x
                                      @[simp]
                                      theorem PresentedAddMonoid.lift_of {α : Type u_3} {M : Type u_4} [AddMonoid M] (f : αM) {rels : FreeAddMonoid αFreeAddMonoid αProp} (h : ∀ (a b : FreeAddMonoid α), rels a b(FreeAddMonoid.lift f) a = (FreeAddMonoid.lift f) b) {x : α} :
                                      (lift f h) (of rels x) = f x
                                      theorem PresentedMonoid.ext {α : Type u_2} {M : Type u_3} [Monoid M] (rels : FreeMonoid αFreeMonoid αProp) {φ ψ : PresentedMonoid rels →* M} (hx : ∀ (x : α), φ (of rels x) = ψ (of rels x)) :
                                      φ = ψ
                                      theorem PresentedAddMonoid.ext {α : Type u_2} {M : Type u_3} [AddMonoid M] (rels : FreeAddMonoid αFreeAddMonoid αProp) {φ ψ : PresentedAddMonoid rels →+ M} (hx : ∀ (x : α), φ (of rels x) = ψ (of rels x)) :
                                      φ = ψ
                                      theorem PresentedAddMonoid.ext_iff {α : Type u_2} {M : Type u_3} [AddMonoid M] {rels : FreeAddMonoid αFreeAddMonoid αProp} {φ ψ : PresentedAddMonoid rels →+ M} :
                                      φ = ψ ∀ (x : α), φ (of rels x) = ψ (of rels x)
                                      theorem PresentedMonoid.ext_iff {α : Type u_2} {M : Type u_3} [Monoid M] {rels : FreeMonoid αFreeMonoid αProp} {φ ψ : PresentedMonoid rels →* M} :
                                      φ = ψ ∀ (x : α), φ (of rels x) = ψ (of rels x)