Comma categories
A comma category is a construction in category theory, which builds a category out of two functors
with a common codomain. Specifically, for functors L : A ⥤ T
and R : B ⥤ T
, an object in
comma L R
is a morphism hom : L.obj left ⟶ R.obj right
for some objects left : A
and
right : B
, and a morphism in comma L R
between hom : L.obj left ⟶ R.obj right
and
hom' : L.obj left' ⟶ R.obj right'
is a commutative square
L.obj left ⟶ L.obj left' | | hom | | hom' ↓ ↓ R.obj right ⟶ R.obj right',
where the top and bottom morphism come from morphisms left ⟶ left'
and right ⟶ right'
,
respectively.
Main definitions
comma L R
: the comma category of the functorsL
andR
.over X
: the over category of the objectX
(developed inover.lean
).under X
: the under category of the objectX
(also developed inover.lean
).arrow T
: the arrow category of the categoryT
(developed inarrow.lean
).
References
- https://ncatlab.org/nlab/show/comma+category
Tags
comma, slice, coslice, over, under, arrow
The objects of the comma category are triples of an object left : A
, an object
right : B
and a morphism hom : L.obj left ⟶ R.obj right
.
Equations
- category_theory.comma.inhabited = {default := {left := inhabited.default T _inst_4, right := inhabited.default T _inst_4, hom := 𝟙 (inhabited.default T)}}
- left : (X.left ⟶ Y.left) . "obviously"
- right : (X.right ⟶ Y.right) . "obviously"
- w' : L.map c.left ≫ Y.hom = X.hom ≫ R.map c.right . "obviously"
A morphism between two objects in the comma category is a commutative square connecting the
morphisms coming from the two objects using morphisms in the image of the functors L
and R
.
Equations
- category_theory.comma_morphism.inhabited = {default := {left := 𝟙 (inhabited.default (category_theory.comma L R)).left, right := 𝟙 (inhabited.default (category_theory.comma L R)).right, w' := _}}
Equations
- category_theory.comma_category = {to_category_struct := {to_has_hom := {hom := category_theory.comma_morphism R}, id := λ (X : category_theory.comma L R), {left := 𝟙 X.left, right := 𝟙 X.right, w' := _}, comp := λ (X Y Z : category_theory.comma L R) (f : X ⟶ Y) (g : Y ⟶ Z), {left := f.left ≫ g.left, right := f.right ≫ g.right, w' := _}}, id_comp' := _, comp_id' := _, assoc' := _}
The functor sending an object X
in the comma category to X.left
.
Equations
- category_theory.comma.fst L R = {obj := λ (X : category_theory.comma L R), X.left, map := λ (_x _x_1 : category_theory.comma L R) (f : _x ⟶ _x_1), f.left, map_id' := _, map_comp' := _}
The functor sending an object X
in the comma category to X.right
.
Equations
- category_theory.comma.snd L R = {obj := λ (X : category_theory.comma L R), X.right, map := λ (_x _x_1 : category_theory.comma L R) (f : _x ⟶ _x_1), f.right, map_id' := _, map_comp' := _}
We can interpret the commutative square constituting a morphism in the comma category as a
natural transformation between the functors fst ⋙ L
and snd ⋙ R
from the comma category
to T
, where the components are given by the morphism that constitutes an object of the comma
category.
Equations
- category_theory.comma.nat_trans L R = {app := λ (X : category_theory.comma L R), X.hom, naturality' := _}
Construct an isomorphism in the comma category given isomorphisms of the objects whose forward directions give a commutative square.
A natural transformation L₁ ⟶ L₂
induces a functor comma L₂ R ⥤ comma L₁ R
.
The functor comma L R ⥤ comma L R
induced by the identity natural transformation on L
is
naturally isomorphic to the identity functor.
Equations
- category_theory.comma.map_left_id L R = {hom := {app := λ (X : category_theory.comma L R), {left := 𝟙 ((category_theory.comma.map_left R (𝟙 L)).obj X).left, right := 𝟙 ((category_theory.comma.map_left R (𝟙 L)).obj X).right, w' := _}, naturality' := _}, inv := {app := λ (X : category_theory.comma L R), {left := 𝟙 ((𝟭 (category_theory.comma L R)).obj X).left, right := 𝟙 ((𝟭 (category_theory.comma L R)).obj X).right, w' := _}, naturality' := _}, hom_inv_id' := _, inv_hom_id' := _}
The functor comma L₁ R ⥤ comma L₃ R
induced by the composition of two natural transformations
l : L₁ ⟶ L₂
and l' : L₂ ⟶ L₃
is naturally isomorphic to the composition of the two functors
induced by these natural transformations.
Equations
- category_theory.comma.map_left_comp R l l' = {hom := {app := λ (X : category_theory.comma L₃ R), {left := 𝟙 ((category_theory.comma.map_left R (l ≫ l')).obj X).left, right := 𝟙 ((category_theory.comma.map_left R (l ≫ l')).obj X).right, w' := _}, naturality' := _}, inv := {app := λ (X : category_theory.comma L₃ R), {left := 𝟙 ((category_theory.comma.map_left R l' ⋙ category_theory.comma.map_left R l).obj X).left, right := 𝟙 ((category_theory.comma.map_left R l' ⋙ category_theory.comma.map_left R l).obj X).right, w' := _}, naturality' := _}, hom_inv_id' := _, inv_hom_id' := _}
A natural transformation R₁ ⟶ R₂
induces a functor comma L R₁ ⥤ comma L R₂
.
The functor comma L R ⥤ comma L R
induced by the identity natural transformation on R
is
naturally isomorphic to the identity functor.
Equations
- category_theory.comma.map_right_id L R = {hom := {app := λ (X : category_theory.comma L R), {left := 𝟙 ((category_theory.comma.map_right L (𝟙 R)).obj X).left, right := 𝟙 ((category_theory.comma.map_right L (𝟙 R)).obj X).right, w' := _}, naturality' := _}, inv := {app := λ (X : category_theory.comma L R), {left := 𝟙 ((𝟭 (category_theory.comma L R)).obj X).left, right := 𝟙 ((𝟭 (category_theory.comma L R)).obj X).right, w' := _}, naturality' := _}, hom_inv_id' := _, inv_hom_id' := _}
The functor comma L R₁ ⥤ comma L R₃
induced by the composition of the natural transformations
r : R₁ ⟶ R₂
and r' : R₂ ⟶ R₃
is naturally isomorphic to the composition of the functors
induced by these natural transformations.
Equations
- category_theory.comma.map_right_comp L r r' = {hom := {app := λ (X : category_theory.comma L R₁), {left := 𝟙 ((category_theory.comma.map_right L (r ≫ r')).obj X).left, right := 𝟙 ((category_theory.comma.map_right L (r ≫ r')).obj X).right, w' := _}, naturality' := _}, inv := {app := λ (X : category_theory.comma L R₁), {left := 𝟙 ((category_theory.comma.map_right L r ⋙ category_theory.comma.map_right L r').obj X).left, right := 𝟙 ((category_theory.comma.map_right L r ⋙ category_theory.comma.map_right L r').obj X).right, w' := _}, naturality' := _}, hom_inv_id' := _, inv_hom_id' := _}