Cartesian products of categories #
We define the category instance on C × D
when C
and D
are categories.
We define:
sectL C Z
: the functorC ⥤ C × D
given byX ↦ ⟨X, Z⟩
sectR Z D
: the functorD ⥤ C × D
given byY ↦ ⟨Z, Y⟩
fst
: the functor⟨X, Y⟩ ↦ X
snd
: the functor⟨X, Y⟩ ↦ Y
swap
: the functorC × D ⥤ D × C
given by⟨X, Y⟩ ↦ ⟨Y, X⟩
(and the fact this is an equivalence)
We further define evaluation : C ⥤ (C ⥤ D) ⥤ D
and evaluationUncurried : C × (C ⥤ D) ⥤ D
,
and products of functors and natural transformations, written F.prod G
and α.prod β
.
prod C D
gives the cartesian product of two categories.
See https://stacks.math.columbia.edu/tag/001K.
Equations
- CategoryTheory.prod C D = CategoryTheory.Category.mk ⋯ ⋯ ⋯
Two rfl lemmas that cannot be generated by @[simps]
.
The isomorphism between (X.1, X.2)
and X
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct an isomorphism in C × D
out of two isomorphisms in C
and D
.
Equations
- f.prod g = { hom := (f.hom, g.hom), inv := (f.inv, g.inv), hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
Category.uniformProd C D
is an additional instance specialised so both factors have the same
universe levels. This helps typeclass resolution.
Equations
sectL C Z
is the functor C ⥤ C × D
given by X ↦ (X, Z)
.
Equations
- CategoryTheory.Prod.sectL C Z = { obj := fun (X : C) => (X, Z), map := fun {X Y : C} (f : X ⟶ Y) => (f, CategoryTheory.CategoryStruct.id Z), map_id := ⋯, map_comp := ⋯ }
Instances For
sectR Z D
is the functor D ⥤ C × D
given by Y ↦ (Z, Y)
.
Equations
- CategoryTheory.Prod.sectR Z D = { obj := fun (X : D) => (Z, X), map := fun {X Y : D} (f : X ⟶ Y) => (CategoryTheory.CategoryStruct.id Z, f), map_id := ⋯, map_comp := ⋯ }
Instances For
Alias of CategoryTheory.Prod.sectL
.
sectL C Z
is the functor C ⥤ C × D
given by X ↦ (X, Z)
.
Instances For
Alias of CategoryTheory.Prod.sectR
.
sectR Z D
is the functor D ⥤ C × D
given by Y ↦ (Z, Y)
.
Instances For
Alias of CategoryTheory.Prod.sectL_obj
.
Alias of CategoryTheory.Prod.sectR_obj
.
Alias of CategoryTheory.Prod.sectL_map
.
Alias of CategoryTheory.Prod.sectR_map
.
fst
is the functor (X, Y) ↦ X
.
Equations
- CategoryTheory.Prod.fst C D = { obj := fun (X : C × D) => X.1, map := fun {X Y : C × D} (f : X ⟶ Y) => f.1, map_id := ⋯, map_comp := ⋯ }
Instances For
snd
is the functor (X, Y) ↦ Y
.
Equations
- CategoryTheory.Prod.snd C D = { obj := fun (X : C × D) => X.2, map := fun {X Y : C × D} (f : X ⟶ Y) => f.2, map_id := ⋯, map_comp := ⋯ }
Instances For
The functor swapping the factors of a cartesian product of categories, C × D ⥤ D × C
.
Equations
- CategoryTheory.Prod.swap C D = { obj := fun (X : C × D) => (X.2, X.1), map := fun {X Y : C × D} (f : X ⟶ Y) => (f.2, f.1), map_id := ⋯, map_comp := ⋯ }
Instances For
Swapping the factors of a cartesian product of categories twice is naturally isomorphic to the identity functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The equivalence, given by swapping factors, between C × D
and D × C
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The "evaluation at X
" functor, such that
(evaluation.obj X).obj F = F.obj X
,
which is functorial in both X
and F
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The "evaluation of F
at X
" functor,
as a functor C × (C ⥤ D) ⥤ D
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The constant functor followed by the evaluation functor is just the identity.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The cartesian product of two functors.
Equations
Instances For
Similar to prod
, but both functors start from the same category A
Equations
Instances For
The product F.prod' G
followed by projection on the first component is isomorphic to F
Equations
- F.prod'CompFst G = CategoryTheory.NatIso.ofComponents (fun (x : A) => CategoryTheory.Iso.refl (((F.prod' G).comp (CategoryTheory.Prod.fst B C)).obj x)) ⋯
Instances For
The product F.prod' G
followed by projection on the second component is isomorphic to G
Equations
- F.prod'CompSnd G = CategoryTheory.NatIso.ofComponents (fun (x : A) => CategoryTheory.Iso.refl (((F.prod' G).comp (CategoryTheory.Prod.snd B C)).obj x)) ⋯
Instances For
The diagonal functor.
Equations
Instances For
The cartesian product of two natural transformations.
Equations
- CategoryTheory.NatTrans.prod α β = { app := fun (X : A × C) => (α.app X.1, β.app X.2), naturality := ⋯ }
Instances For
The cartesian product of two natural transformations.
Equations
- CategoryTheory.NatTrans.prod' α β = { app := fun (X : A) => (α.app X, β.app X), naturality := ⋯ }
Instances For
The cartesian product functor between functor categories
Equations
- One or more equations did not get rendered due to their size.
Instances For
The cartesian product of two natural isomorphisms.
Equations
- CategoryTheory.NatIso.prod e₁ e₂ = { hom := CategoryTheory.NatTrans.prod e₁.hom e₂.hom, inv := CategoryTheory.NatTrans.prod e₁.inv e₂.inv, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
The cartesian product of two equivalences of categories.
Equations
- One or more equations did not get rendered due to their size.
Instances For
F.flip
composed with evaluation is the same as evaluating F
.
Equations
- CategoryTheory.flipCompEvaluation F a = CategoryTheory.NatIso.ofComponents (fun (b : B) => CategoryTheory.Iso.refl ((F.flip.comp ((CategoryTheory.evaluation A C).obj a)).obj b)) ⋯
Instances For
F
composed with evaluation is the same as evaluating F.flip
.
Equations
- CategoryTheory.compEvaluation F b = CategoryTheory.NatIso.ofComponents (fun (a : A) => CategoryTheory.Iso.refl ((F.comp ((CategoryTheory.evaluation B C).obj b)).obj a)) ⋯
Instances For
Whiskering by F
and then evaluating at a
is the same as evaluating at F.obj a
.
Equations
- CategoryTheory.whiskeringLeftCompEvaluation F a = CategoryTheory.Iso.refl (((CategoryTheory.whiskeringLeft A B C).obj F).comp ((CategoryTheory.evaluation A C).obj a))
Instances For
Whiskering by F
and then evaluating at a
is the same as evaluating at F.obj a
.
Whiskering by F
and then evaluating at a
is the same as evaluating at F
and then
applying F
.
Equations
- CategoryTheory.whiskeringRightCompEvaluation F a = CategoryTheory.Iso.refl (((CategoryTheory.whiskeringRight A B C).obj F).comp ((CategoryTheory.evaluation A C).obj a))
Instances For
Whiskering by F
and then evaluating at a
is the same as evaluating at F
and then
applying F
.
The forward direction for functorProdFunctorEquiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
The backward direction for functorProdFunctorEquiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
The unit isomorphism for functorProdFunctorEquiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
The counit isomorphism for functorProdFunctorEquiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
The equivalence of categories between (A ⥤ B) × (A ⥤ C)
and A ⥤ (B × C)
Equations
- One or more equations did not get rendered due to their size.
Instances For
The equivalence between the opposite of a product and the product of the opposites.
Equations
- One or more equations did not get rendered due to their size.