def
category_theory.uncurry
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E] :
The uncurrying functor, taking a functor C ⥤ (D ⥤ E) and producing a functor (C × D) ⥤ E.
Equations
- category_theory.uncurry = {obj := λ (F : C ⥤ D ⥤ E), {obj := λ (X : C × D), (F.obj X.fst).obj X.snd, map := λ (X Y : C × D) (f : X ⟶ Y), (F.map f.fst).app X.snd ≫ (F.obj Y.fst).map f.snd, map_id' := _, map_comp' := _}, map := λ (F G : C ⥤ D ⥤ E) (T : F ⟶ G), {app := λ (X : C × D), (T.app X.fst).app X.snd, naturality' := _}, map_id' := _, map_comp' := _}
 
    
def
category_theory.curry_obj
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E] :
The object level part of the currying functor. (See curry for the functorial version.)
    
def
category_theory.curry
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E] :
The currying functor, taking a functor (C × D) ⥤ E and producing a functor C ⥤ (D ⥤ E).
Equations
- category_theory.curry = {obj := λ (F : C × D ⥤ E), category_theory.curry_obj F, map := λ (F G : C × D ⥤ E) (T : F ⟶ G), {app := λ (X : C), {app := λ (Y : D), T.app (X, Y), naturality' := _}, naturality' := _}, map_id' := _, map_comp' := _}
 
@[simp]
    
theorem
category_theory.uncurry.obj_obj
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E]
    {F : C ⥤ D ⥤ E}
    {X : C × D} :
@[simp]
    
theorem
category_theory.uncurry.obj_map
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E]
    {F : C ⥤ D ⥤ E}
    {X Y : C × D}
    {f : X ⟶ Y} :
@[simp]
    
theorem
category_theory.uncurry.map_app
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E]
    {F G : C ⥤ D ⥤ E}
    {α : F ⟶ G}
    {X : C × D} :
@[simp]
    
theorem
category_theory.curry.obj_obj_obj
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E]
    {F : C × D ⥤ E}
    {X : C}
    {Y : D} :
@[simp]
    
theorem
category_theory.curry.obj_obj_map
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E]
    {F : C × D ⥤ E}
    {X : C}
    {Y Y' : D}
    {g : Y ⟶ Y'} :
@[simp]
    
theorem
category_theory.curry.obj_map_app
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E]
    {F : C × D ⥤ E}
    {X X' : C}
    {f : X ⟶ X'}
    {Y : D} :
@[simp]
    
theorem
category_theory.curry.map_app_app
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E]
    {F G : C × D ⥤ E}
    {α : F ⟶ G}
    {X : C}
    {Y : D} :
@[simp]
    
theorem
category_theory.currying_counit_iso_inv_app_app
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E]
    (X : C × D ⥤ E)
    (X_1 : C × D) :
(category_theory.currying.counit_iso.inv.app X).app X_1 = category_theory.is_iso.inv ({app := λ (X_1 : C × D), ((λ (X_1 : C × D), category_theory.eq_to_iso _) X_1).hom, naturality' := _}.app X_1)
@[simp]
    
theorem
category_theory.currying_functor_map_app
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E]
    (F G : C ⥤ D ⥤ E)
    (T : F ⟶ G)
    (X : C × D) :
@[simp]
    
theorem
category_theory.currying_inverse_obj_map_app
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E]
    (F : C × D ⥤ E)
    (X X' : C)
    (f : X ⟶ X')
    (Y : D) :
    
def
category_theory.currying
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E] :
The equivalence of functor categories given by currying/uncurrying.
Equations
- category_theory.currying = category_theory.equivalence.mk category_theory.uncurry category_theory.curry (category_theory.nat_iso.of_components (λ (F : C ⥤ D ⥤ E), category_theory.nat_iso.of_components (λ (X : C), category_theory.nat_iso.of_components (λ (Y : D), category_theory.as_iso (𝟙 ((((𝟭 (C ⥤ D ⥤ E)).obj F).obj X).obj Y))) _) _) category_theory.currying._proof_3) (category_theory.nat_iso.of_components (λ (F : C × D ⥤ E), category_theory.nat_iso.of_components (λ (X : C × D), category_theory.eq_to_iso _) _) category_theory.currying._proof_6)
 
@[simp]
    
theorem
category_theory.currying_unit_iso_inv_app_app_app
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E]
    (X : C ⥤ D ⥤ E)
    (X_1 : C)
    (X_2 : D) :
((category_theory.currying.unit_iso.inv.app X).app X_1).app X_2 = (((category_theory.uncurry ⋙ category_theory.curry).left_unitor.inv.app X).app X_1).app X_2 ≫ (((((((category_theory.nat_iso.of_components (λ (F : C ⥤ D ⥤ E), category_theory.nat_iso.of_components (λ (X : C), category_theory.nat_iso.of_components (λ (Y : D), category_theory.as_iso (𝟙 ((((𝟭 (C ⥤ D ⥤ E)).obj F).obj X).obj Y))) _) _) category_theory.currying._proof_3 ≪≫ category_theory.iso_whisker_left category_theory.uncurry category_theory.curry.left_unitor.symm) ≪≫ category_theory.iso_whisker_left category_theory.uncurry (category_theory.iso_whisker_right (category_theory.nat_iso.of_components (λ (F : C × D ⥤ E), category_theory.nat_iso.of_components (λ (X : C × D), category_theory.eq_to_iso _) _) category_theory.currying._proof_6).symm category_theory.curry)) ≪≫ category_theory.iso_whisker_left category_theory.uncurry (category_theory.curry.associator category_theory.uncurry category_theory.curry)) ≪≫ (category_theory.uncurry.associator category_theory.curry (category_theory.uncurry ⋙ category_theory.curry)).symm) ≪≫ category_theory.iso_whisker_right (category_theory.nat_iso.of_components (λ (F : C ⥤ D ⥤ E), category_theory.nat_iso.of_components (λ (X : C), category_theory.nat_iso.of_components (λ (Y : D), category_theory.as_iso (𝟙 ((((𝟭 (C ⥤ D ⥤ E)).obj F).obj X).obj Y))) _) _) category_theory.currying._proof_3).symm (category_theory.uncurry ⋙ category_theory.curry)).inv.app X).app X_1).app X_2
@[simp]
    
theorem
category_theory.currying_inverse_map_app_app
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E]
    (F G : C × D ⥤ E)
    (T : F ⟶ G)
    (X : C)
    (Y : D) :
@[simp]
    
theorem
category_theory.currying_functor_obj_obj
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E]
    (F : C ⥤ D ⥤ E)
    (X : C × D) :
@[simp]
    
theorem
category_theory.currying_unit_iso_hom_app_app_app
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E]
    (X : C ⥤ D ⥤ E)
    (X_1 : C)
    (X_2 : D) :
((category_theory.currying.unit_iso.hom.app X).app X_1).app X_2 = (((((((category_theory.nat_iso.of_components (λ (F : C ⥤ D ⥤ E), category_theory.nat_iso.of_components (λ (X : C), category_theory.nat_iso.of_components (λ (Y : D), category_theory.as_iso (𝟙 ((((𝟭 (C ⥤ D ⥤ E)).obj F).obj X).obj Y))) _) _) category_theory.currying._proof_3 ≪≫ category_theory.iso_whisker_left category_theory.uncurry category_theory.curry.left_unitor.symm) ≪≫ category_theory.iso_whisker_left category_theory.uncurry (category_theory.iso_whisker_right (category_theory.nat_iso.of_components (λ (F : C × D ⥤ E), category_theory.nat_iso.of_components (λ (X : C × D), category_theory.eq_to_iso _) _) category_theory.currying._proof_6).symm category_theory.curry)) ≪≫ category_theory.iso_whisker_left category_theory.uncurry (category_theory.curry.associator category_theory.uncurry category_theory.curry)) ≪≫ (category_theory.uncurry.associator category_theory.curry (category_theory.uncurry ⋙ category_theory.curry)).symm) ≪≫ category_theory.iso_whisker_right (category_theory.nat_iso.of_components (λ (F : C ⥤ D ⥤ E), category_theory.nat_iso.of_components (λ (X : C), category_theory.nat_iso.of_components (λ (Y : D), category_theory.as_iso (𝟙 ((((𝟭 (C ⥤ D ⥤ E)).obj F).obj X).obj Y))) _) _) category_theory.currying._proof_3).symm (category_theory.uncurry ⋙ category_theory.curry)).hom.app X).app X_1).app X_2 ≫ (((category_theory.uncurry ⋙ category_theory.curry).left_unitor.hom.app X).app X_1).app X_2
@[simp]
    
theorem
category_theory.currying_inverse_obj_obj_map
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E]
    (F : C × D ⥤ E)
    (X : C)
    (Y Y' : D)
    (g : Y ⟶ Y') :
@[simp]
    
theorem
category_theory.currying_functor_obj_map
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E]
    (F : C ⥤ D ⥤ E)
    (X Y : C × D)
    (f : X ⟶ Y) :
@[simp]
    
theorem
category_theory.currying_inverse_obj_obj_obj
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E]
    (F : C × D ⥤ E)
    (X : C)
    (Y : D) :
@[simp]
    
theorem
category_theory.currying_counit_iso_hom_app_app
    {C : Type u₁}
    [category_theory.category C]
    {D : Type u₂}
    [category_theory.category D]
    {E : Type u₃}
    [category_theory.category E]
    (X : C × D ⥤ E)
    (X_1 : C × D) :
(category_theory.currying.counit_iso.hom.app X).app X_1 = ((λ (X_1 : C × D), category_theory.eq_to_iso _) X_1).hom