Single-object category #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
Single object category with a given monoid of endomorphisms. It is defined to facilitate transfering some definitions and lemmas (e.g., conjugacy etc.) from category theory to monoids and groups.
Main definitions #
Given a type α
with a monoid structure, single_obj α
is unit
type with category
structure
such that End (single_obj α).star
is the monoid α
. This can be extended to a functor Mon ⥤ Cat
.
If α
is a group, then single_obj α
is a groupoid.
An element x : α
can be reinterpreted as an element of End (single_obj.star α)
using
single_obj.to_End
.
Implementation notes #
-
category_struct.comp
onEnd (single_obj.star α)
isflip (*)
, not(*)
. This way multiplication onEnd
agrees with the multiplication onα
. -
By default, Lean puts instances into
category_theory
namespace instead ofcategory_theory.single_obj
, so we give all names explicitly.
Abbreviation that allows writing category_theory.single_obj
rather than quiver.single_obj
.
One and flip (*)
become id
and comp
for morphisms of the single object category.
Equations
- category_theory.single_obj.category_struct α = {to_quiver := {hom := λ (_x _x : category_theory.single_obj α), α}, id := λ (_x : category_theory.single_obj α), 1, comp := λ (_x _x_1 _x_2 : category_theory.single_obj α) (x : _x ⟶ _x_1) (y : _x_1 ⟶ _x_2), y * x}
Monoid laws become category laws for the single object category.
Equations
- category_theory.single_obj.category α = {to_category_struct := category_theory.single_obj.category_struct α (mul_one_class.to_has_mul α), id_comp' := _, comp_id' := _, assoc' := _}
Groupoid structure on single_obj α
.
See https://stacks.math.columbia.edu/tag/0019.
Equations
- category_theory.single_obj.groupoid α = {to_category := {to_category_struct := category_theory.single_obj.category_struct α (mul_one_class.to_has_mul α), id_comp' := _, comp_id' := _, assoc' := _}, inv := λ (_x _x_1 : category_theory.single_obj α) (x : _x ⟶ _x_1), x⁻¹, inv_comp' := _, comp_inv' := _}
Abbreviation that allows writing category_theory.single_obj.star
rather than
quiver.single_obj.star
.
The endomorphisms monoid of the only object in single_obj α
is equivalent to the original
monoid α.
Equations
- category_theory.single_obj.to_End α = {to_fun := (equiv.refl α).to_fun, inv_fun := (equiv.refl α).inv_fun, left_inv := _, right_inv := _, map_mul' := _}
There is a 1-1 correspondence between monoid homomorphisms α → β
and functors between the
corresponding single-object categories. It means that single_obj
is a fully faithful
functor.
See https://stacks.math.columbia.edu/tag/001F -- although we do not characterize when the functor is full or faithful.
Equations
- category_theory.single_obj.map_hom α β = {to_fun := λ (f : α →* β), {obj := id (category_theory.single_obj α), map := λ (_x _x_1 : category_theory.single_obj α), ⇑f, map_id' := _, map_comp' := _}, inv_fun := λ (f : category_theory.single_obj α ⥤ category_theory.single_obj β), {to_fun := f.map (category_theory.single_obj.star α), map_one' := _, map_mul' := _}, left_inv := _, right_inv := _}
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)⁻¹
.
Reinterpret a monoid homomorphism f : α → β
as a functor (single_obj α) ⥤ (single_obj β)
.
See also category_theory.single_obj.map_hom
for an equivalence between these types.
Equations
- f.to_functor = ⇑(category_theory.single_obj.map_hom α β) f
The units in a monoid are (multiplicatively) equivalent to
the automorphisms of star
when we think of the monoid as a single-object category.
The fully faithful functor from Mon
to Cat
.
Equations
- Mon.to_Cat = {obj := λ (x : Mon), category_theory.Cat.of (category_theory.single_obj ↥x), map := λ (x y : Mon) (f : x ⟶ y), ⇑(category_theory.single_obj.map_hom ↥x ↥y) f, map_id' := Mon.to_Cat._proof_1, map_comp' := Mon.to_Cat._proof_2}
Instances for Mon.to_Cat
Equations
- Mon.to_Cat_full = {preimage := λ (x y : Mon), (category_theory.single_obj.map_hom ↥x ↥y).inv_fun, witness' := Mon.to_Cat_full._proof_1}