Single-object category #
Single object category with a given monoid of endomorphisms. It is defined to facilitate transferring some definitions and lemmas (e.g., conjugacy etc.) from category theory to monoids and groups.
Main definitions #
Given a type M
with a monoid structure, SingleObj M
is Unit
type with Category
structure
such that End (SingleObj M).star
is the monoid M
. This can be extended to a functor
MonCat ⥤ Cat
.
If M
is a group, then SingleObj M
is a groupoid.
An element x : M
can be reinterpreted as an element of End (SingleObj.star M)
using
SingleObj.toEnd
.
Implementation notes #
-
categoryStruct.comp
onEnd (SingleObj.star M)
isflip (*)
, not(*)
. This way multiplication onEnd
agrees with the multiplication onM
. -
By default, Lean puts instances into
CategoryTheory
namespace instead ofCategoryTheory.SingleObj
, so we give all names explicitly.
Abbreviation that allows writing CategoryTheory.SingleObj
rather than Quiver.SingleObj
.
Equations
Instances For
Monoid laws become category laws for the single object category.
Equations
- CategoryTheory.SingleObj.category M = CategoryTheory.Category.mk
If M
is finite and in universe zero, then SingleObj M
is a FinCategory
.
Equations
- CategoryTheory.SingleObj.finCategoryOfFintype M = CategoryTheory.FinCategory.mk
Groupoid structure on SingleObj M
.
See
Equations
- CategoryTheory.SingleObj.groupoid G = CategoryTheory.Groupoid.mk fun {X Y : CategoryTheory.SingleObj G} (x : X ⟶ Y) => x⁻¹
Abbreviation that allows writing CategoryTheory.SingleObj.star
rather than
Quiver.SingleObj.star
.
Equations
Instances For
The endomorphisms monoid of the only object in SingleObj M
is equivalent to the original
monoid M.
Equations
- CategoryTheory.SingleObj.toEnd M = let src := Equiv.refl M; { toEquiv := src, map_mul' := (_ : ∀ (x x_1 : M), (Equiv.refl M).toFun (x * x_1) = (Equiv.refl M).toFun (x * x_1)) }
Instances For
There is a 1-1 correspondence between monoid homomorphisms M → N
and functors between the
corresponding single-object categories. It means that SingleObj
is a fully faithful
functor.
See
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a function f : C → G
from a category to a group, we get a functor
C ⥤ G
sending any morphism x ⟶ y
to f y * (f x)⁻¹
.
Equations
- CategoryTheory.SingleObj.differenceFunctor f = CategoryTheory.Functor.mk { obj := fun (x : C) => (), map := fun {x y : C} (x_1 : x ⟶ y) => f y * (f x)⁻¹ }
Instances For
A monoid homomorphism f: M → End X
into the endomorphisms of an object X
of a category C
induces a functor SingleObj M ⥤ C
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct a natural transformation between functors SingleObj M ⥤ C
by
giving a compatible morphism SingleObj.star M
.
Equations
- CategoryTheory.SingleObj.natTrans u h = CategoryTheory.NatTrans.mk fun (x : CategoryTheory.SingleObj M) => u
Instances For
Reinterpret a monoid homomorphism f : M → N
as a functor (single_obj M) ⥤ (single_obj N)
.
See also CategoryTheory.SingleObj.mapHom
for an equivalence between these types.
Equations
Instances For
The units in a monoid are (multiplicatively) equivalent to
the automorphisms of star
when we think of the monoid as a single-object category.
Equations
Instances For
The fully faithful functor from MonCat
to Cat
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- MonCat.toCatFull = CategoryTheory.Full.mk fun {X Y : MonCat} => (CategoryTheory.SingleObj.mapHom ↑X ↑Y).invFun