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
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
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

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

Equations
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
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
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
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
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)