Currying of functors in four variables #
We study the equivalence of categories
currying₄ : (C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄ ⥤ E) ≌ C₁ × C₂ × C₃ × C₄ ⥤ E.
@[implicit_reducible]
def CategoryTheory.Functor.currying₄ {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {C₄ : Type u_4} {E : Type u_9} [Category.{v_1, u_1} C₁] [Category.{v_2, u_2} C₂] [Category.{v_3, u_3} C₃] [Category.{v_4, u_4} C₄] [Category.{v_9, u_9} E] :
The equivalence of categories (C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄ ⥤ E) ≌ C₁ × C₂ × C₃ × C₄ ⥤ E
given by the curryfication of functors in four variables.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[reducible, inline]
abbrev CategoryTheory.Functor.uncurry₄ {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {C₄ : Type u_4} {E : Type u_9} [Category.{v_1, u_1} C₁] [Category.{v_2, u_2} C₂] [Category.{v_3, u_3} C₃] [Category.{v_4, u_4} C₄] [Category.{v_9, u_9} E] :
Uncurrying a functor in four variables.
Instances For
@[reducible, inline]
abbrev CategoryTheory.Functor.curry₄ {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {C₄ : Type u_4} {E : Type u_9} [Category.{v_1, u_1} C₁] [Category.{v_2, u_2} C₂] [Category.{v_3, u_3} C₃] [Category.{v_4, u_4} C₄] [Category.{v_9, u_9} E] :
Currying a functor in four variables.
Instances For
@[simp]
theorem CategoryTheory.Functor.curry₄_map_app_app_app_app {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {C₄ : Type u_4} {E : Type u_9} [Category.{v_1, u_1} C₁] [Category.{v_2, u_2} C₂] [Category.{v_3, u_3} C₃] [Category.{v_4, u_4} C₄] [Category.{v_9, u_9} E] {X✝ Y✝ : Functor (C₁ × C₂ × C₃ × C₄) E} (f : X✝ ⟶ Y✝) (X : C₁) (Y : C₂) (Y✝¹ : C₃) (Y✝² : C₄) :
@[simp]
theorem CategoryTheory.Functor.curry₄_obj_map_app_app_app {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {C₄ : Type u_4} {E : Type u_9} [Category.{v_1, u_1} C₁] [Category.{v_2, u_2} C₂] [Category.{v_3, u_3} C₃] [Category.{v_4, u_4} C₄] [Category.{v_9, u_9} E] (X : Functor (C₁ × C₂ × C₃ × C₄) E) {X✝ Y✝ : C₁} (f : X✝ ⟶ Y✝) (Y : C₂) (Y✝¹ : C₃) (Y✝² : C₄) :
((((curry₄.obj X).map f).app Y).app Y✝¹).app Y✝² = X.map (Prod.mkHom f (Prod.mkHom (CategoryStruct.id Y) (Prod.mkHom (CategoryStruct.id Y✝¹) (CategoryStruct.id Y✝²))))
@[simp]
theorem CategoryTheory.Functor.curry₄_obj_obj_obj_obj_map {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {C₄ : Type u_4} {E : Type u_9} [Category.{v_1, u_1} C₁] [Category.{v_2, u_2} C₂] [Category.{v_3, u_3} C₃] [Category.{v_4, u_4} C₄] [Category.{v_9, u_9} E] (X : Functor (C₁ × C₂ × C₃ × C₄) E) (X✝ : C₁) (Y : C₂) (Y✝ : C₃) {X✝¹ Y✝¹ : C₄} (g : X✝¹ ⟶ Y✝¹) :
((((curry₄.obj X).obj X✝).obj Y).obj Y✝).map g = X.map (Prod.mkHom (CategoryStruct.id X✝) (Prod.mkHom (CategoryStruct.id Y) (Prod.mkHom (CategoryStruct.id Y✝) g)))
@[simp]
theorem CategoryTheory.Functor.curry₄_obj_obj_obj_map_app {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {C₄ : Type u_4} {E : Type u_9} [Category.{v_1, u_1} C₁] [Category.{v_2, u_2} C₂] [Category.{v_3, u_3} C₃] [Category.{v_4, u_4} C₄] [Category.{v_9, u_9} E] (X : Functor (C₁ × C₂ × C₃ × C₄) E) (X✝ : C₁) (Y : C₂) {X✝¹ Y✝ : C₃} (g : X✝¹ ⟶ Y✝) (Y✝¹ : C₄) :
((((curry₄.obj X).obj X✝).obj Y).map g).app Y✝¹ = X.map (Prod.mkHom (CategoryStruct.id X✝) (Prod.mkHom (CategoryStruct.id Y) (Prod.mkHom g (CategoryStruct.id Y✝¹))))
@[simp]
theorem CategoryTheory.Functor.curry₄_obj_obj_map_app_app {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {C₄ : Type u_4} {E : Type u_9} [Category.{v_1, u_1} C₁] [Category.{v_2, u_2} C₂] [Category.{v_3, u_3} C₃] [Category.{v_4, u_4} C₄] [Category.{v_9, u_9} E] (X : Functor (C₁ × C₂ × C₃ × C₄) E) (X✝ : C₁) {X✝¹ Y✝ : C₂} (g : X✝¹ ⟶ Y✝) (Y : C₃) (Y✝¹ : C₄) :
((((curry₄.obj X).obj X✝).map g).app Y).app Y✝¹ = X.map (Prod.mkHom (CategoryStruct.id X✝) (Prod.mkHom g (Prod.mkHom (CategoryStruct.id Y) (CategoryStruct.id Y✝¹))))
@[implicit_reducible]
def CategoryTheory.Functor.fullyFaithfulUncurry₄ {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {C₄ : Type u_4} {E : Type u_9} [Category.{v_1, u_1} C₁] [Category.{v_2, u_2} C₂] [Category.{v_3, u_3} C₃] [Category.{v_4, u_4} C₄] [Category.{v_9, u_9} E] :
Uncurrying functors in four variables gives a fully faithful functor.
Equations
Instances For
@[implicit_reducible]
def CategoryTheory.Functor.fullyFaithfulCurry₄ {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {C₄ : Type u_4} {E : Type u_9} [Category.{v_1, u_1} C₁] [Category.{v_2, u_2} C₂] [Category.{v_3, u_3} C₃] [Category.{v_4, u_4} C₄] [Category.{v_9, u_9} E] :
Currying functors in four variables gives a fully faithful functor.
Equations
Instances For
instance CategoryTheory.Functor.instFullProdUncurry₄ {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {C₄ : Type u_4} {E : Type u_9} [Category.{v_1, u_1} C₁] [Category.{v_2, u_2} C₂] [Category.{v_3, u_3} C₃] [Category.{v_4, u_4} C₄] [Category.{v_9, u_9} E] :
instance CategoryTheory.Functor.instFaithfulProdUncurry₄ {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {C₄ : Type u_4} {E : Type u_9} [Category.{v_1, u_1} C₁] [Category.{v_2, u_2} C₂] [Category.{v_3, u_3} C₃] [Category.{v_4, u_4} C₄] [Category.{v_9, u_9} E] :
instance CategoryTheory.Functor.instFullProdCurry₄ {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {C₄ : Type u_4} {E : Type u_9} [Category.{v_1, u_1} C₁] [Category.{v_2, u_2} C₂] [Category.{v_3, u_3} C₃] [Category.{v_4, u_4} C₄] [Category.{v_9, u_9} E] :
instance CategoryTheory.Functor.instFaithfulProdCurry₄ {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {C₄ : Type u_4} {E : Type u_9} [Category.{v_1, u_1} C₁] [Category.{v_2, u_2} C₂] [Category.{v_3, u_3} C₃] [Category.{v_4, u_4} C₄] [Category.{v_9, u_9} E] :
@[simp]
theorem CategoryTheory.Functor.currying₄_unitIso_hom_app_app_app_app_app {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {C₄ : Type u_4} {E : Type u_9} [Category.{v_1, u_1} C₁] [Category.{v_2, u_2} C₂] [Category.{v_3, u_3} C₃] [Category.{v_4, u_4} C₄] [Category.{v_9, u_9} E] (F : Functor C₁ (Functor C₂ (Functor C₃ (Functor C₄ E)))) (X₁ : C₁) (X₂ : C₂) (X₃ : C₃) (X₄ : C₄) :
@[simp]
theorem CategoryTheory.Functor.currying₄_unitIso_inv_app_app_app_app_app {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {C₄ : Type u_4} {E : Type u_9} [Category.{v_1, u_1} C₁] [Category.{v_2, u_2} C₂] [Category.{v_3, u_3} C₃] [Category.{v_4, u_4} C₄] [Category.{v_9, u_9} E] (F : Functor C₁ (Functor C₂ (Functor C₃ (Functor C₄ E)))) (X₁ : C₁) (X₂ : C₂) (X₃ : C₃) (X₄ : C₄) :
@[implicit_reducible]
def CategoryTheory.Functor.curry₄ObjProdComp {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {C₄ : Type u_4} {D₁ : Type u_5} {D₂ : Type u_6} {D₃ : Type u_7} {D₄ : Type u_8} {E : Type u_9} [Category.{v_1, u_1} C₁] [Category.{v_2, u_2} C₂] [Category.{v_3, u_3} C₃] [Category.{v_4, u_4} C₄] [Category.{v_5, u_5} D₁] [Category.{v_6, u_6} D₂] [Category.{v_7, u_7} D₃] [Category.{v_8, u_8} D₄] [Category.{v_9, u_9} E] (F₁ : Functor C₁ D₁) (F₂ : Functor C₂ D₂) (F₃ : Functor C₃ D₃) (F₄ : Functor C₄ D₄) (G : Functor (D₁ × D₂ × D₃ × D₄) E) :
Given functors F₁ : C₁ ⥤ D₁, F₂ : C₂ ⥤ D₂, F₃ : C₃ ⥤ D₃,
F₄ : C₄ ⥤ D₄ and G : D₁ × D₂ × D₃ × D₄ ⥤ E, this is the isomorphism between
curry₄.obj (F₁.prod (F₂.prod (F₃.prod F₄)) ⋙ G) : C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄ ⥤ E
and F₁ ⋙ curry₄.obj G ⋙ ((((whiskeringLeft₃ E).obj F₂).obj F₃).obj F₄).
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem CategoryTheory.Functor.curry₄ObjProdComp_hom_app_app_app_app {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {C₄ : Type u_4} {D₁ : Type u_5} {D₂ : Type u_6} {D₃ : Type u_7} {D₄ : Type u_8} {E : Type u_9} [Category.{v_1, u_1} C₁] [Category.{v_2, u_2} C₂] [Category.{v_3, u_3} C₃] [Category.{v_4, u_4} C₄] [Category.{v_5, u_5} D₁] [Category.{v_6, u_6} D₂] [Category.{v_7, u_7} D₃] [Category.{v_8, u_8} D₄] [Category.{v_9, u_9} E] (F₁ : Functor C₁ D₁) (F₂ : Functor C₂ D₂) (F₃ : Functor C₃ D₃) (F₄ : Functor C₄ D₄) (G : Functor (D₁ × D₂ × D₃ × D₄) E) (X : C₁) (X✝ : C₂) (X✝¹ : C₃) (X✝² : C₄) :
@[simp]
theorem CategoryTheory.Functor.curry₄ObjProdComp_inv_app_app_app_app {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {C₄ : Type u_4} {D₁ : Type u_5} {D₂ : Type u_6} {D₃ : Type u_7} {D₄ : Type u_8} {E : Type u_9} [Category.{v_1, u_1} C₁] [Category.{v_2, u_2} C₂] [Category.{v_3, u_3} C₃] [Category.{v_4, u_4} C₄] [Category.{v_5, u_5} D₁] [Category.{v_6, u_6} D₂] [Category.{v_7, u_7} D₃] [Category.{v_8, u_8} D₄] [Category.{v_9, u_9} E] (F₁ : Functor C₁ D₁) (F₂ : Functor C₂ D₂) (F₃ : Functor C₃ D₃) (F₄ : Functor C₄ D₄) (G : Functor (D₁ × D₂ × D₃ × D₄) E) (X : C₁) (X✝ : C₂) (X✝¹ : C₃) (X✝² : C₄) :