Documentation

Mathlib.Algebra.Category.MonCat.Basic

Category instances for Monoid, AddMonoid, CommMonoid, and AddCommMmonoid. #

We introduce the bundled categories:

def AddMonCat :
Type (u + 1)

The category of additive monoids and monoid morphisms.

Equations
def MonCat :
Type (u + 1)

The category of monoids and monoid morphisms.

Equations
@[reducible, inline]
abbrev AddMonCat.AssocAddMonoidHom (M : Type u_1) (N : Type u_2) [AddMonoid M] [AddMonoid N] :
Type (max u_1 u_2)

AddMonoidHom doesn't actually assume associativity. This alias is needed to make the category theory machinery work.

Equations
@[reducible, inline]
abbrev MonCat.AssocMonoidHom (M : Type u_1) (N : Type u_2) [Monoid M] [Monoid N] :
Type (max u_1 u_2)

MonoidHom doesn't actually assume associativity. This alias is needed to make the category theory machinery work.

Equations
Equations
  • One or more equations did not get rendered due to their size.
Equations
  • One or more equations did not get rendered due to their size.
Equations
Equations
Equations
  • X.instMonoidα = X.str
instance MonCat.instMonoidα (X : MonCat) :
Monoid X
Equations
  • X.instMonoidα = X.str
instance AddMonCat.instCoeFunHomForallαAddMonoid {X : AddMonCat} {Y : AddMonCat} :
CoeFun (X Y) fun (x : X Y) => XY
Equations
  • AddMonCat.instCoeFunHomForallαAddMonoid = { coe := fun (f : X →+ Y) => f }
instance MonCat.instCoeFunHomForallαMonoid {X : MonCat} {Y : MonCat} :
CoeFun (X Y) fun (x : X Y) => XY
Equations
  • MonCat.instCoeFunHomForallαMonoid = { coe := fun (f : X →* Y) => f }
instance AddMonCat.instFunLike (X : AddMonCat) (Y : AddMonCat) :
FunLike (X Y) X Y
Equations
instance MonCat.instFunLike (X : MonCat) (Y : MonCat) :
FunLike (X Y) X Y
Equations
Equations
  • =
instance MonCat.instMonoidHomClass (X : MonCat) (Y : MonCat) :
MonoidHomClass (X Y) X Y
Equations
  • =
@[simp]
theorem AddMonCat.coe_comp {X : AddMonCat} {Y : AddMonCat} {Z : AddMonCat} {f : X Y} {g : Y Z} :
@[simp]
theorem MonCat.coe_comp {X : MonCat} {Y : MonCat} {Z : MonCat} {f : X Y} {g : Y Z} :
@[simp]
theorem AddMonCat.forget_map {X : AddMonCat} {Y : AddMonCat} (f : X Y) :
@[simp]
theorem MonCat.forget_map {X : MonCat} {Y : MonCat} (f : X Y) :
theorem AddMonCat.ext {X : AddMonCat} {Y : AddMonCat} {f : X Y} {g : X Y} (w : ∀ (x : X), f x = g x) :
f = g
theorem AddMonCat.ext_iff {X : AddMonCat} {Y : AddMonCat} {f : X Y} {g : X Y} :
f = g ∀ (x : X), f x = g x
theorem MonCat.ext_iff {X : MonCat} {Y : MonCat} {f : X Y} {g : X Y} :
f = g ∀ (x : X), f x = g x
theorem MonCat.ext {X : MonCat} {Y : MonCat} {f : X Y} {g : X Y} (w : ∀ (x : X), f x = g x) :
f = g

Construct a bundled AddMonCat from the underlying type and typeclass.

Equations
def MonCat.of (M : Type u) [Monoid M] :

Construct a bundled MonCat from the underlying type and typeclass.

Equations
theorem AddMonCat.coe_of (R : Type u) [AddMonoid R] :
(AddMonCat.of R) = R
theorem MonCat.coe_of (R : Type u) [Monoid R] :
(MonCat.of R) = R
def AddMonCat.ofHom {X : Type u} {Y : Type u} [AddMonoid X] [AddMonoid Y] (f : X →+ Y) :

Typecheck an AddMonoidHom as a morphism in AddMonCat.

Equations
def MonCat.ofHom {X : Type u} {Y : Type u} [Monoid X] [Monoid Y] (f : X →* Y) :

Typecheck a MonoidHom as a morphism in MonCat.

Equations
@[simp]
theorem AddMonCat.ofHom_apply {X : Type u} {Y : Type u} [AddMonoid X] [AddMonoid Y] (f : X →+ Y) (x : X) :
(AddMonCat.ofHom f) x = f x
@[simp]
theorem MonCat.ofHom_apply {X : Type u} {Y : Type u} [Monoid X] [Monoid Y] (f : X →* Y) (x : X) :
(MonCat.ofHom f) x = f x
instance AddMonCat.instZeroHom (X : AddMonCat) (Y : AddMonCat) :
Zero (X Y)
Equations
instance MonCat.instOneHom (X : MonCat) (Y : MonCat) :
One (X Y)
Equations
@[simp]
theorem AddMonCat.zeroHom_apply (X : AddMonCat) (Y : AddMonCat) (x : X) :
0 x = 0
@[simp]
theorem MonCat.oneHom_apply (X : MonCat) (Y : MonCat) (x : X) :
1 x = 1
@[simp]
theorem AddMonCat.zero_of {A : Type u_1} [AddMonoid A] :
0 = 0
@[simp]
theorem MonCat.one_of {A : Type u_1} [Monoid A] :
1 = 1
@[simp]
theorem AddMonCat.add_of {A : Type u_1} [AddMonoid A] (a : A) (b : A) :
a + b = a + b
@[simp]
theorem MonCat.mul_of {A : Type u_1} [Monoid A] (a : A) (b : A) :
a * b = a * b
Equations
  • AddMonCat.instGroupαAddMonoidOf = inst
instance MonCat.instGroupαMonoidOf {G : Type u_1} [Group G] :
Equations
  • MonCat.instGroupαMonoidOf = inst

Universe lift functor for additive monoids.

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem MonCat.uliftFunctor_map :
∀ {x x_1 : MonCat} (f : x x_1), MonCat.uliftFunctor.map f = MonCat.ofHom (MulEquiv.ulift.symm.toMonoidHom.comp (MonoidHom.comp f MulEquiv.ulift.toMonoidHom))
@[simp]
theorem AddMonCat.uliftFunctor_map :
∀ {x x_1 : AddMonCat} (f : x x_1), AddMonCat.uliftFunctor.map f = AddMonCat.ofHom (AddEquiv.ulift.symm.toAddMonoidHom.comp (AddMonoidHom.comp f AddEquiv.ulift.toAddMonoidHom))

Universe lift functor for monoids.

Equations
  • One or more equations did not get rendered due to their size.
def AddCommMonCat :
Type (u + 1)

The category of additive commutative monoids and monoid morphisms.

Equations
def CommMonCat :
Type (u + 1)

The category of commutative monoids and monoid morphisms.

Equations
Equations
  • X.instCommMonoidα = X.str
Equations
  • X.instCommMonoidα = X.str
instance AddCommMonCat.instCoeFunHomForallαAddCommMonoid {X : AddCommMonCat} {Y : AddCommMonCat} :
CoeFun (X Y) fun (x : X Y) => XY
Equations
  • AddCommMonCat.instCoeFunHomForallαAddCommMonoid = { coe := fun (f : X →+ Y) => f }
instance CommMonCat.instCoeFunHomForallαCommMonoid {X : CommMonCat} {Y : CommMonCat} :
CoeFun (X Y) fun (x : X Y) => XY
Equations
  • CommMonCat.instCoeFunHomForallαCommMonoid = { coe := fun (f : X →* Y) => f }
instance AddCommMonCat.instFunLike (X : AddCommMonCat) (Y : AddCommMonCat) :
FunLike (X Y) X Y
Equations
  • X.instFunLike Y = inferInstance
instance CommMonCat.instFunLike (X : CommMonCat) (Y : CommMonCat) :
FunLike (X Y) X Y
Equations
  • X.instFunLike Y = inferInstance
@[simp]
theorem AddCommMonCat.coe_comp {X : AddCommMonCat} {Y : AddCommMonCat} {Z : AddCommMonCat} {f : X Y} {g : Y Z} :
@[simp]
theorem CommMonCat.coe_comp {X : CommMonCat} {Y : CommMonCat} {Z : CommMonCat} {f : X Y} {g : Y Z} :
@[simp]
theorem AddCommMonCat.ext {X : AddCommMonCat} {Y : AddCommMonCat} {f : X Y} {g : X Y} (w : ∀ (x : X), f x = g x) :
f = g
theorem CommMonCat.ext_iff {X : CommMonCat} {Y : CommMonCat} {f : X Y} {g : X Y} :
f = g ∀ (x : X), f x = g x
theorem AddCommMonCat.ext_iff {X : AddCommMonCat} {Y : AddCommMonCat} {f : X Y} {g : X Y} :
f = g ∀ (x : X), f x = g x
theorem CommMonCat.ext {X : CommMonCat} {Y : CommMonCat} {f : X Y} {g : X Y} (w : ∀ (x : X), f x = g x) :
f = g

Construct a bundled AddCommMonCat from the underlying type and typeclass.

Equations

Construct a bundled CommMonCat from the underlying type and typeclass.

Equations
theorem CommMonCat.coe_of (R : Type u) [CommMonoid R] :
(CommMonCat.of R) = R

Typecheck an AddMonoidHom as a morphism in AddCommMonCat.

Equations

Typecheck a MonoidHom as a morphism in CommMonCat.

Equations
@[simp]
theorem AddCommMonCat.ofHom_apply {X : Type u} {Y : Type u} [AddCommMonoid X] [AddCommMonoid Y] (f : X →+ Y) (x : X) :
@[simp]
theorem CommMonCat.ofHom_apply {X : Type u} {Y : Type u} [CommMonoid X] [CommMonoid Y] (f : X →* Y) (x : X) :

Universe lift functor for additive commutative monoids.

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem CommMonCat.uliftFunctor_map :
∀ {x x_1 : CommMonCat} (f : x x_1), CommMonCat.uliftFunctor.map f = CommMonCat.ofHom (MulEquiv.ulift.symm.toMonoidHom.comp (MonoidHom.comp f MulEquiv.ulift.toMonoidHom))
@[simp]
theorem AddCommMonCat.uliftFunctor_map :
∀ {x x_1 : AddCommMonCat} (f : x x_1), AddCommMonCat.uliftFunctor.map f = AddCommMonCat.ofHom (AddEquiv.ulift.symm.toAddMonoidHom.comp (AddMonoidHom.comp f AddEquiv.ulift.toAddMonoidHom))

Universe lift functor for commutative monoids.

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

Build an isomorphism in the category AddMonCat from an AddEquiv between AddMonoids.

Equations
@[simp]
theorem MulEquiv.toMonCatIso_inv {X : Type u} {Y : Type u} [Monoid X] [Monoid Y] (e : X ≃* Y) :
e.toMonCatIso.inv = MonCat.ofHom e.symm.toMonoidHom
@[simp]
theorem AddEquiv.toAddMonCatIso_inv {X : Type u} {Y : Type u} [AddMonoid X] [AddMonoid Y] (e : X ≃+ Y) :
e.toAddMonCatIso.inv = AddMonCat.ofHom e.symm.toAddMonoidHom
@[simp]
theorem MulEquiv.toMonCatIso_hom {X : Type u} {Y : Type u} [Monoid X] [Monoid Y] (e : X ≃* Y) :
e.toMonCatIso.hom = MonCat.ofHom e.toMonoidHom
@[simp]
theorem AddEquiv.toAddMonCatIso_hom {X : Type u} {Y : Type u} [AddMonoid X] [AddMonoid Y] (e : X ≃+ Y) :
e.toAddMonCatIso.hom = AddMonCat.ofHom e.toAddMonoidHom
def MulEquiv.toMonCatIso {X : Type u} {Y : Type u} [Monoid X] [Monoid Y] (e : X ≃* Y) :

Build an isomorphism in the category MonCat from a MulEquiv between Monoids.

Equations
  • e.toMonCatIso = { hom := MonCat.ofHom e.toMonoidHom, inv := MonCat.ofHom e.symm.toMonoidHom, hom_inv_id := , inv_hom_id := }

Build an isomorphism in the category AddCommMonCat from an AddEquiv between AddCommMonoids.

Equations
@[simp]
theorem MulEquiv.toCommMonCatIso_hom {X : Type u} {Y : Type u} [CommMonoid X] [CommMonoid Y] (e : X ≃* Y) :
e.toCommMonCatIso.hom = CommMonCat.ofHom e.toMonoidHom
@[simp]
theorem MulEquiv.toCommMonCatIso_inv {X : Type u} {Y : Type u} [CommMonoid X] [CommMonoid Y] (e : X ≃* Y) :
e.toCommMonCatIso.inv = CommMonCat.ofHom e.symm.toMonoidHom
@[simp]
theorem AddEquiv.toAddCommMonCatIso_inv {X : Type u} {Y : Type u} [AddCommMonoid X] [AddCommMonoid Y] (e : X ≃+ Y) :
e.toAddCommMonCatIso.inv = AddCommMonCat.ofHom e.symm.toAddMonoidHom
@[simp]
theorem AddEquiv.toAddCommMonCatIso_hom {X : Type u} {Y : Type u} [AddCommMonoid X] [AddCommMonoid Y] (e : X ≃+ Y) :
e.toAddCommMonCatIso.hom = AddCommMonCat.ofHom e.toAddMonoidHom

Build an isomorphism in the category CommMonCat from a MulEquiv between CommMonoids.

Equations

Build an AddEquiv from an isomorphism in the category AddMonCat.

Equations
def CategoryTheory.Iso.monCatIsoToMulEquiv {X : MonCat} {Y : MonCat} (i : X Y) :
X ≃* Y

Build a MulEquiv from an isomorphism in the category MonCat.

Equations

Build an AddEquiv from an isomorphism in the category AddCommMonCat.

Equations

Build a MulEquiv from an isomorphism in the category CommMonCat.

Equations

additive equivalences between AddMonoids are the same as (isomorphic to) isomorphisms in AddMonCat

Equations
  • addEquivIsoAddMonCatIso = { hom := fun (e : X ≃+ Y) => e.toAddMonCatIso, inv := fun (i : AddMonCat.of X AddMonCat.of Y) => i.addMonCatIsoToAddEquiv, hom_inv_id := , inv_hom_id := }
def mulEquivIsoMonCatIso {X : Type u} {Y : Type u} [Monoid X] [Monoid Y] :

multiplicative equivalences between Monoids are the same as (isomorphic to) isomorphisms in MonCat

Equations
  • mulEquivIsoMonCatIso = { hom := fun (e : X ≃* Y) => e.toMonCatIso, inv := fun (i : MonCat.of X MonCat.of Y) => i.monCatIsoToMulEquiv, hom_inv_id := , inv_hom_id := }

additive equivalences between AddCommMonoids are the same as (isomorphic to) isomorphisms in AddCommMonCat

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

multiplicative equivalences between CommMonoids are the same as (isomorphic to) isomorphisms in CommMonCat

Equations
  • mulEquivIsoCommMonCatIso = { hom := fun (e : X ≃* Y) => e.toCommMonCatIso, inv := fun (i : CommMonCat.of X CommMonCat.of Y) => i.commMonCatIsoToMulEquiv, hom_inv_id := , inv_hom_id := }

@[simp] lemmas for MonoidHom.comp and categorical identities.

@[simp]
theorem AddMonoidHom.comp_id_monCat {G : AddMonCat} {H : Type u} [AddMonoid H] (f : G →+ H) :
@[simp]
theorem MonoidHom.comp_id_monCat {G : MonCat} {H : Type u} [Monoid H] (f : G →* H) :
@[simp]