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
      • PresentedMonoid.instMonoid = (conGen rels).monoid
      Equations
      • PresentedAddMonoid.instAddMonoid = (addConGen rels).addMonoid
      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 α₁), δ ((PresentedMonoid.mk rels₁) a)) :
              δ q
              theorem PresentedAddMonoid.inductionOn {α₁ : Type u_2} {rels₁ : FreeAddMonoid α₁FreeAddMonoid α₁Prop} {δ : PresentedAddMonoid rels₁Prop} (q : PresentedAddMonoid rels₁) (h : ∀ (a : FreeAddMonoid α₁), δ ((PresentedAddMonoid.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 α₂), δ ((PresentedMonoid.mk rels₁) a) ((PresentedMonoid.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 α₂), δ ((PresentedAddMonoid.mk rels₁) a) ((PresentedAddMonoid.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 α₃), δ ((PresentedMonoid.mk rels₁) a) ((PresentedMonoid.mk rels₂) b) ((PresentedMonoid.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 α₃), δ ((PresentedAddMonoid.mk rels₁) a) ((PresentedAddMonoid.mk rels₂) b) ((PresentedAddMonoid.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

              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 (PresentedMonoid.of rels a) = f a) :
                  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 (PresentedAddMonoid.of rels a) = f a) :
                  @[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 : α} :
                  @[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 : α} :
                  theorem PresentedAddMonoid.ext {α : Type u_2} {M : Type u_3} [AddMonoid M] (rels : FreeAddMonoid αFreeAddMonoid αProp) {φ ψ : PresentedAddMonoid rels →+ M} (hx : ∀ (x : α), φ (PresentedAddMonoid.of rels x) = ψ (PresentedAddMonoid.of rels x)) :
                  φ = ψ
                  theorem PresentedMonoid.ext {α : Type u_2} {M : Type u_3} [Monoid M] (rels : FreeMonoid αFreeMonoid αProp) {φ ψ : PresentedMonoid rels →* M} (hx : ∀ (x : α), φ (PresentedMonoid.of rels x) = ψ (PresentedMonoid.of rels x)) :
                  φ = ψ