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.
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
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)
.
Equations
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
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
Any morphism in a product factors as a morphsim whose left component is an identity followed by a morphism whose right component is an identity.
Any morphism in a product factors as a morphsim whose right component is an identity followed by a morphism whose left component is an identity.
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
Instances For
The cartesian product of two natural transformations.
Equations
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.