Documentation

Mathlib.CategoryTheory.Whiskering

Whiskering #

Given a functor F : C ⥤ D and functors G H : D ⥤ E and a natural transformation α : G ⟶ H, we can construct a new natural transformation F ⋙ G ⟶ F ⋙ H, called whiskerLeft F α. This is the same as the horizontal composition of 𝟙 F with α.

This operation is functorial in F, and we package this as whiskeringLeft. Here (whiskeringLeft.obj F).obj G is F ⋙ G, and (whiskeringLeft.obj F).map α is whiskerLeft F α. (That is, we might have alternatively named this as the "left composition functor".)

We also provide analogues for composition on the right, and for these operations on isomorphisms.

At the end of the file, we provide the left and right unitors, and the associator, for functor composition. (In fact functor composition is definitionally associative, but very often relying on this causes extremely slow elaboration, so it is better to insert it explicitly.) We also show these natural isomorphisms satisfy the triangle and pentagon identities.

@[elab_without_expected_type]

If α : G ⟶ H then whiskerLeft F α : (F ⋙ G) ⟶ (F ⋙ H) has components α.app (F.obj X).

Equations
Instances For
    @[elab_without_expected_type]

    If α : G ⟶ H then whisker_right α F : (G ⋙ F) ⟶ (G ⋙ F) has components F.map (α.app X).

    Equations
    Instances For

      Left-composition gives a functor (C ⥤ D) ⥤ ((D ⥤ E) ⥤ (C ⥤ E)).

      (whiskeringLeft.obj F).obj G is F ⋙ G, and (whiskeringLeft.obj F).map α is whiskerLeft F α.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        @[simp]
        theorem CategoryTheory.whiskeringLeft_map_app_app (C : Type u₁) [CategoryTheory.Category.{v₁, u₁} C] (D : Type u₂) [CategoryTheory.Category.{v₂, u₂} D] (E : Type u₃) [CategoryTheory.Category.{v₃, u₃} E] {X✝ Y✝ : CategoryTheory.Functor C D} (τ : X✝ Y✝) (H : CategoryTheory.Functor D E) (c : C) :
        (((CategoryTheory.whiskeringLeft C D E).map τ).app H).app c = H.map (τ.app c)

        Right-composition gives a functor (D ⥤ E) ⥤ ((C ⥤ D) ⥤ (C ⥤ E)).

        (whiskeringRight.obj H).obj F is F ⋙ H, and (whiskeringRight.obj H).map α is whiskerRight α H.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          theorem CategoryTheory.whiskeringRight_map_app_app (C : Type u₁) [CategoryTheory.Category.{v₁, u₁} C] (D : Type u₂) [CategoryTheory.Category.{v₂, u₂} D] (E : Type u₃) [CategoryTheory.Category.{v₃, u₃} E] {X✝ Y✝ : CategoryTheory.Functor D E} (τ : X✝ Y✝) (F : CategoryTheory.Functor C D) (c : C) :
          (((CategoryTheory.whiskeringRight C D E).map τ).app F).app c = τ.app (F.obj c)

          If F : D ⥤ E is fully faithful, then so is (whiskeringRight C D E).obj F : (C ⥤ D) ⥤ C ⥤ E.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            @[simp]
            theorem CategoryTheory.Functor.FullyFaithful.whiskeringRight_preimage_app {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] {E : Type u₃} [CategoryTheory.Category.{v₃, u₃} E] {F : CategoryTheory.Functor D E} (hF : F.FullyFaithful) (C : Type u_1) [CategoryTheory.Category.{u_2, u_1} C] {X✝ Y✝ : CategoryTheory.Functor C D} (f : ((CategoryTheory.whiskeringRight C D E).obj F).obj X✝ ((CategoryTheory.whiskeringRight C D E).obj F).obj Y✝) (X : C) :
            ((hF.whiskeringRight C).preimage f).app X = hF.preimage (f.app X)

            The isomorphism between left-whiskering on the identity functor and the identity of the functor between the resulting functor categories.

            Equations
            Instances For

              The isomorphism between left-whiskering on the composition of functors and the composition of two left-whiskering applications.

              Equations
              Instances For

                The isomorphism between right-whiskering on the identity functor and the identity of the functor between the resulting functor categories.

                Equations
                Instances For

                  The isomorphism between right-whiskering on the composition of functors and the composition of two right-whiskering applications.

                  Equations
                  Instances For

                    If α : G ≅ H is a natural isomorphism then iso_whisker_left F α : (F ⋙ G) ≅ (F ⋙ H) has components α.app (F.obj X).

                    Equations
                    Instances For

                      If α : G ≅ H then iso_whisker_right α F : (G ⋙ F) ≅ (H ⋙ F) has components F.map_iso (α.app X).

                      Equations
                      Instances For

                        The left unitor, a natural isomorphism ((𝟭 _) ⋙ F) ≅ F.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For

                          The right unitor, a natural isomorphism (F ⋙ (𝟭 B)) ≅ F.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For

                            The associator for functors, a natural isomorphism ((F ⋙ G) ⋙ H) ≅ (F ⋙ (G ⋙ H)).

                            (In fact, iso.refl _ will work here, but it tends to make Lean slow later, and it's usually best to insert explicit associators.)

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For

                              The obvious functor (C₁ ⥤ D₁) ⥤ (C₂ ⥤ D₂) ⥤ (D₁ ⥤ D₂ ⥤ E) ⥤ (C₁ ⥤ C₂ ⥤ E).

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                @[simp]
                                theorem CategoryTheory.whiskeringLeft₂_map_app_app_app_app {C₁ : Type u_1} {C₂ : Type u_2} {D₁ : Type u_4} {D₂ : Type u_5} [CategoryTheory.Category.{u_8, u_1} C₁] [CategoryTheory.Category.{u_9, u_2} C₂] [CategoryTheory.Category.{u_10, u_4} D₁] [CategoryTheory.Category.{u_11, u_5} D₂] (E : Type u_7) [CategoryTheory.Category.{u_12, u_7} E] {X✝ Y✝ : CategoryTheory.Functor C₁ D₁} (ψ : X✝ Y✝) (F₂ : CategoryTheory.Functor C₂ D₂) (X : CategoryTheory.Functor D₁ (CategoryTheory.Functor D₂ E)) (c : C₁) (X✝¹ : C₂) :
                                (((((CategoryTheory.whiskeringLeft₂ E).map ψ).app F₂).app X).app c).app X✝¹ = (X.map (ψ.app c)).app (F₂.obj X✝¹)
                                @[simp]
                                theorem CategoryTheory.whiskeringLeft₂_obj_obj_obj_obj_map {C₁ : Type u_1} {C₂ : Type u_2} {D₁ : Type u_4} {D₂ : Type u_5} [CategoryTheory.Category.{u_8, u_1} C₁] [CategoryTheory.Category.{u_9, u_2} C₂] [CategoryTheory.Category.{u_10, u_4} D₁] [CategoryTheory.Category.{u_11, u_5} D₂] (E : Type u_7) [CategoryTheory.Category.{u_12, u_7} E] (F₁ : CategoryTheory.Functor C₁ D₁) (F₂ : CategoryTheory.Functor C₂ D₂) (X : CategoryTheory.Functor D₁ (CategoryTheory.Functor D₂ E)) (X✝ : C₁) {X✝¹ Y✝ : C₂} (f : X✝¹ Y✝) :
                                (((((CategoryTheory.whiskeringLeft₂ E).obj F₁).obj F₂).obj X).obj X✝).map f = (X.obj (F₁.obj X✝)).map (F₂.map f)
                                @[simp]
                                theorem CategoryTheory.whiskeringLeft₂_obj_obj_obj_obj_obj {C₁ : Type u_1} {C₂ : Type u_2} {D₁ : Type u_4} {D₂ : Type u_5} [CategoryTheory.Category.{u_8, u_1} C₁] [CategoryTheory.Category.{u_9, u_2} C₂] [CategoryTheory.Category.{u_10, u_4} D₁] [CategoryTheory.Category.{u_11, u_5} D₂] (E : Type u_7) [CategoryTheory.Category.{u_12, u_7} E] (F₁ : CategoryTheory.Functor C₁ D₁) (F₂ : CategoryTheory.Functor C₂ D₂) (X : CategoryTheory.Functor D₁ (CategoryTheory.Functor D₂ E)) (X✝ : C₁) (X✝ : C₂) :
                                (((((CategoryTheory.whiskeringLeft₂ E).obj F₁).obj F₂).obj X).obj X✝).obj X✝ = (X.obj (F₁.obj X✝)).obj (F₂.obj X✝)
                                @[simp]
                                theorem CategoryTheory.whiskeringLeft₂_obj_map_app_app_app {C₁ : Type u_1} {C₂ : Type u_2} {D₁ : Type u_4} {D₂ : Type u_5} [CategoryTheory.Category.{u_8, u_1} C₁] [CategoryTheory.Category.{u_9, u_2} C₂] [CategoryTheory.Category.{u_10, u_4} D₁] [CategoryTheory.Category.{u_11, u_5} D₂] (E : Type u_7) [CategoryTheory.Category.{u_12, u_7} E] (F₁ : CategoryTheory.Functor C₁ D₁) {X✝ Y✝ : CategoryTheory.Functor C₂ D₂} (φ : X✝ Y✝) (X : CategoryTheory.Functor D₁ (CategoryTheory.Functor D₂ E)) (X✝¹ : C₁) (c : C₂) :
                                (((((CategoryTheory.whiskeringLeft₂ E).obj F₁).map φ).app X).app X✝¹).app c = (X.obj (F₁.obj X✝¹)).map (φ.app c)
                                @[simp]
                                theorem CategoryTheory.whiskeringLeft₂_obj_obj_obj_map_app {C₁ : Type u_1} {C₂ : Type u_2} {D₁ : Type u_4} {D₂ : Type u_5} [CategoryTheory.Category.{u_8, u_1} C₁] [CategoryTheory.Category.{u_9, u_2} C₂] [CategoryTheory.Category.{u_10, u_4} D₁] [CategoryTheory.Category.{u_11, u_5} D₂] (E : Type u_7) [CategoryTheory.Category.{u_12, u_7} E] (F₁ : CategoryTheory.Functor C₁ D₁) (F₂ : CategoryTheory.Functor C₂ D₂) (X : CategoryTheory.Functor D₁ (CategoryTheory.Functor D₂ E)) {X✝ Y✝ : C₁} (f : X✝ Y✝) (X✝¹ : C₂) :
                                (((((CategoryTheory.whiskeringLeft₂ E).obj F₁).obj F₂).obj X).map f).app X✝¹ = (X.map (F₁.map f)).app (F₂.obj X✝¹)
                                @[simp]
                                theorem CategoryTheory.whiskeringLeft₂_obj_obj_map_app_app {C₁ : Type u_1} {C₂ : Type u_2} {D₁ : Type u_4} {D₂ : Type u_5} [CategoryTheory.Category.{u_8, u_1} C₁] [CategoryTheory.Category.{u_9, u_2} C₂] [CategoryTheory.Category.{u_10, u_4} D₁] [CategoryTheory.Category.{u_11, u_5} D₂] (E : Type u_7) [CategoryTheory.Category.{u_12, u_7} E] (F₁ : CategoryTheory.Functor C₁ D₁) (F₂ : CategoryTheory.Functor C₂ D₂) {X✝ Y✝ : CategoryTheory.Functor D₁ (CategoryTheory.Functor D₂ E)} (f : X✝ Y✝) (X : C₁) (X✝¹ : C₂) :
                                (((((CategoryTheory.whiskeringLeft₂ E).obj F₁).obj F₂).map f).app X).app X✝¹ = (f.app (F₁.obj X)).app (F₂.obj X✝¹)

                                Auxiliary definition for whiskeringLeft₃.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  @[simp]
                                  theorem CategoryTheory.whiskeringLeft₃ObjObjObj_map_app_app_app {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {D₁ : Type u_4} {D₂ : Type u_5} {D₃ : Type u_6} [CategoryTheory.Category.{u_8, u_1} C₁] [CategoryTheory.Category.{u_9, u_2} C₂] [CategoryTheory.Category.{u_10, u_3} C₃] [CategoryTheory.Category.{u_11, u_4} D₁] [CategoryTheory.Category.{u_12, u_5} D₂] [CategoryTheory.Category.{u_13, u_6} D₃] (E : Type u_7) [CategoryTheory.Category.{u_14, u_7} E] (F₁ : CategoryTheory.Functor C₁ D₁) (F₂ : CategoryTheory.Functor C₂ D₂) (F₃ : CategoryTheory.Functor C₃ D₃) {X✝ Y✝ : CategoryTheory.Functor D₁ (CategoryTheory.Functor D₂ (CategoryTheory.Functor D₃ E))} (f : X✝ Y✝) (X : C₁) (X✝¹ : C₂) (X✝¹ : C₃) :
                                  ((((CategoryTheory.whiskeringLeft₃ObjObjObj E F₁ F₂ F₃).map f).app X).app X✝¹).app X✝¹ = ((f.app (F₁.obj X)).app (F₂.obj X✝¹)).app (F₃.obj X✝¹)
                                  @[simp]
                                  theorem CategoryTheory.whiskeringLeft₃ObjObjObj_obj_obj_map_app {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {D₁ : Type u_4} {D₂ : Type u_5} {D₃ : Type u_6} [CategoryTheory.Category.{u_8, u_1} C₁] [CategoryTheory.Category.{u_9, u_2} C₂] [CategoryTheory.Category.{u_10, u_3} C₃] [CategoryTheory.Category.{u_11, u_4} D₁] [CategoryTheory.Category.{u_12, u_5} D₂] [CategoryTheory.Category.{u_13, u_6} D₃] (E : Type u_7) [CategoryTheory.Category.{u_14, u_7} E] (F₁ : CategoryTheory.Functor C₁ D₁) (F₂ : CategoryTheory.Functor C₂ D₂) (F₃ : CategoryTheory.Functor C₃ D₃) (X : CategoryTheory.Functor D₁ (CategoryTheory.Functor D₂ (CategoryTheory.Functor D₃ E))) (X✝ : C₁) {X✝¹ Y✝ : C₂} (f : X✝¹ Y✝) (X✝ : C₃) :
                                  ((((CategoryTheory.whiskeringLeft₃ObjObjObj E F₁ F₂ F₃).obj X).obj X✝).map f).app X✝ = ((X.obj (F₁.obj X✝)).map (F₂.map f)).app (F₃.obj X✝)
                                  @[simp]
                                  theorem CategoryTheory.whiskeringLeft₃ObjObjObj_obj_map_app_app {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {D₁ : Type u_4} {D₂ : Type u_5} {D₃ : Type u_6} [CategoryTheory.Category.{u_8, u_1} C₁] [CategoryTheory.Category.{u_9, u_2} C₂] [CategoryTheory.Category.{u_10, u_3} C₃] [CategoryTheory.Category.{u_11, u_4} D₁] [CategoryTheory.Category.{u_12, u_5} D₂] [CategoryTheory.Category.{u_13, u_6} D₃] (E : Type u_7) [CategoryTheory.Category.{u_14, u_7} E] (F₁ : CategoryTheory.Functor C₁ D₁) (F₂ : CategoryTheory.Functor C₂ D₂) (F₃ : CategoryTheory.Functor C₃ D₃) (X : CategoryTheory.Functor D₁ (CategoryTheory.Functor D₂ (CategoryTheory.Functor D₃ E))) {X✝ Y✝ : C₁} (f : X✝ Y✝) (X✝¹ : C₂) (X✝¹ : C₃) :
                                  ((((CategoryTheory.whiskeringLeft₃ObjObjObj E F₁ F₂ F₃).obj X).map f).app X✝¹).app X✝¹ = ((X.map (F₁.map f)).app (F₂.obj X✝¹)).app (F₃.obj X✝¹)
                                  @[simp]
                                  theorem CategoryTheory.whiskeringLeft₃ObjObjObj_obj_obj_obj_obj {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {D₁ : Type u_4} {D₂ : Type u_5} {D₃ : Type u_6} [CategoryTheory.Category.{u_8, u_1} C₁] [CategoryTheory.Category.{u_9, u_2} C₂] [CategoryTheory.Category.{u_10, u_3} C₃] [CategoryTheory.Category.{u_11, u_4} D₁] [CategoryTheory.Category.{u_12, u_5} D₂] [CategoryTheory.Category.{u_13, u_6} D₃] (E : Type u_7) [CategoryTheory.Category.{u_14, u_7} E] (F₁ : CategoryTheory.Functor C₁ D₁) (F₂ : CategoryTheory.Functor C₂ D₂) (F₃ : CategoryTheory.Functor C₃ D₃) (X : CategoryTheory.Functor D₁ (CategoryTheory.Functor D₂ (CategoryTheory.Functor D₃ E))) (X✝ : C₁) (X✝ : C₂) (X✝ : C₃) :
                                  ((((CategoryTheory.whiskeringLeft₃ObjObjObj E F₁ F₂ F₃).obj X).obj X✝).obj X✝).obj X✝ = ((X.obj (F₁.obj X✝)).obj (F₂.obj X✝)).obj (F₃.obj X✝)
                                  @[simp]
                                  theorem CategoryTheory.whiskeringLeft₃ObjObjObj_obj_obj_obj_map {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {D₁ : Type u_4} {D₂ : Type u_5} {D₃ : Type u_6} [CategoryTheory.Category.{u_8, u_1} C₁] [CategoryTheory.Category.{u_9, u_2} C₂] [CategoryTheory.Category.{u_10, u_3} C₃] [CategoryTheory.Category.{u_11, u_4} D₁] [CategoryTheory.Category.{u_12, u_5} D₂] [CategoryTheory.Category.{u_13, u_6} D₃] (E : Type u_7) [CategoryTheory.Category.{u_14, u_7} E] (F₁ : CategoryTheory.Functor C₁ D₁) (F₂ : CategoryTheory.Functor C₂ D₂) (F₃ : CategoryTheory.Functor C₃ D₃) (X : CategoryTheory.Functor D₁ (CategoryTheory.Functor D₂ (CategoryTheory.Functor D₃ E))) (X✝ : C₁) (X✝ : C₂) {X✝¹ Y✝ : C₃} (f : X✝¹ Y✝) :
                                  ((((CategoryTheory.whiskeringLeft₃ObjObjObj E F₁ F₂ F₃).obj X).obj X✝).obj X✝).map f = ((X.obj (F₁.obj X✝)).obj (F₂.obj X✝)).map (F₃.map f)

                                  Auxiliary definition for whiskeringLeft₃.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For

                                    Auxiliary definition for whiskeringLeft₃.

                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      @[simp]
                                      theorem CategoryTheory.whiskeringLeft₃Obj_map {C₁ : Type u_1} (C₂ : Type u_2) (C₃ : Type u_3) {D₁ : Type u_4} (D₂ : Type u_5) (D₃ : Type u_6) [CategoryTheory.Category.{u_8, u_1} C₁] [CategoryTheory.Category.{u_9, u_2} C₂] [CategoryTheory.Category.{u_10, u_3} C₃] [CategoryTheory.Category.{u_11, u_4} D₁] [CategoryTheory.Category.{u_12, u_5} D₂] [CategoryTheory.Category.{u_13, u_6} D₃] (E : Type u_7) [CategoryTheory.Category.{u_14, u_7} E] (F₁ : CategoryTheory.Functor C₁ D₁) {X✝ Y✝ : CategoryTheory.Functor C₂ D₂} (τ₂ : X✝ Y✝) :
                                      (CategoryTheory.whiskeringLeft₃Obj C₂ C₃ D₂ D₃ E F₁).map τ₂ = CategoryTheory.whiskeringLeft₃ObjMap C₃ D₃ E F₁ τ₂

                                      Auxiliary definition for whiskeringLeft₃.

                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For

                                        The obvious functor (C₁ ⥤ D₁) ⥤ (C₂ ⥤ D₂) ⥤ (D₁ ⥤ D₂ ⥤ E) ⥤ (C₁ ⥤ C₂ ⥤ E).

                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For
                                          @[simp]
                                          theorem CategoryTheory.whiskeringLeft₃_obj_obj_map_app_app_app_app {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {D₁ : Type u_4} {D₂ : Type u_5} {D₃ : Type u_6} [CategoryTheory.Category.{u_8, u_1} C₁] [CategoryTheory.Category.{u_9, u_2} C₂] [CategoryTheory.Category.{u_10, u_3} C₃] [CategoryTheory.Category.{u_11, u_4} D₁] [CategoryTheory.Category.{u_12, u_5} D₂] [CategoryTheory.Category.{u_13, u_6} D₃] (E : Type u_7) [CategoryTheory.Category.{u_14, u_7} E] (F₁ : CategoryTheory.Functor C₁ D₁) (F₂ : CategoryTheory.Functor C₂ D₂) {X✝ Y✝ : CategoryTheory.Functor C₃ D₃} (τ₃ : X✝ Y✝) (F : CategoryTheory.Functor D₁ (CategoryTheory.Functor D₂ (CategoryTheory.Functor D₃ E))) (X : C₁) (X✝¹ : C₂) (c : C₃) :
                                          (((((((CategoryTheory.whiskeringLeft₃ E).obj F₁).obj F₂).map τ₃).app F).app X).app X✝¹).app c = ((F.obj (F₁.obj X)).obj (F₂.obj X✝¹)).map (τ₃.app c)
                                          @[simp]
                                          theorem CategoryTheory.whiskeringLeft₃_obj_map_app_app_app_app_app {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {D₁ : Type u_4} {D₂ : Type u_5} {D₃ : Type u_6} [CategoryTheory.Category.{u_8, u_1} C₁] [CategoryTheory.Category.{u_9, u_2} C₂] [CategoryTheory.Category.{u_10, u_3} C₃] [CategoryTheory.Category.{u_11, u_4} D₁] [CategoryTheory.Category.{u_12, u_5} D₂] [CategoryTheory.Category.{u_13, u_6} D₃] (E : Type u_7) [CategoryTheory.Category.{u_14, u_7} E] (F₁ : CategoryTheory.Functor C₁ D₁) {X✝ Y✝ : CategoryTheory.Functor C₂ D₂} (τ₂ : X✝ Y✝) (F₃ : CategoryTheory.Functor C₃ D₃) (X : CategoryTheory.Functor D₁ (CategoryTheory.Functor D₂ (CategoryTheory.Functor D₃ E))) (X✝¹ : C₁) (c : C₂) (X✝¹ : C₃) :
                                          (((((((CategoryTheory.whiskeringLeft₃ E).obj F₁).map τ₂).app F₃).app X).app X✝¹).app c).app X✝¹ = ((X.obj (F₁.obj X✝¹)).map (τ₂.app c)).app (F₃.obj X✝¹)
                                          @[simp]
                                          theorem CategoryTheory.whiskeringLeft₃_obj_obj_obj_obj_map_app_app {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {D₁ : Type u_4} {D₂ : Type u_5} {D₃ : Type u_6} [CategoryTheory.Category.{u_8, u_1} C₁] [CategoryTheory.Category.{u_9, u_2} C₂] [CategoryTheory.Category.{u_10, u_3} C₃] [CategoryTheory.Category.{u_11, u_4} D₁] [CategoryTheory.Category.{u_12, u_5} D₂] [CategoryTheory.Category.{u_13, u_6} D₃] (E : Type u_7) [CategoryTheory.Category.{u_14, u_7} E] (F₁ : CategoryTheory.Functor C₁ D₁) (F₂ : CategoryTheory.Functor C₂ D₂) (F₃ : CategoryTheory.Functor C₃ D₃) (X : CategoryTheory.Functor D₁ (CategoryTheory.Functor D₂ (CategoryTheory.Functor D₃ E))) {X✝ Y✝ : C₁} (f : X✝ Y✝) (X✝¹ : C₂) (X✝¹ : C₃) :
                                          (((((((CategoryTheory.whiskeringLeft₃ E).obj F₁).obj F₂).obj F₃).obj X).map f).app X✝¹).app X✝¹ = ((X.map (F₁.map f)).app (F₂.obj X✝¹)).app (F₃.obj X✝¹)
                                          @[simp]
                                          theorem CategoryTheory.whiskeringLeft₃_map_app_app_app_app_app_app {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {D₁ : Type u_4} {D₂ : Type u_5} {D₃ : Type u_6} [CategoryTheory.Category.{u_8, u_1} C₁] [CategoryTheory.Category.{u_9, u_2} C₂] [CategoryTheory.Category.{u_10, u_3} C₃] [CategoryTheory.Category.{u_11, u_4} D₁] [CategoryTheory.Category.{u_12, u_5} D₂] [CategoryTheory.Category.{u_13, u_6} D₃] (E : Type u_7) [CategoryTheory.Category.{u_14, u_7} E] {X✝ Y✝ : CategoryTheory.Functor C₁ D₁} (τ₁ : X✝ Y✝) (F₂ : CategoryTheory.Functor C₂ D₂) (F₃ : CategoryTheory.Functor C₃ D₃) (X : CategoryTheory.Functor D₁ (CategoryTheory.Functor D₂ (CategoryTheory.Functor D₃ E))) (c : C₁) (X✝¹ : C₂) (X✝¹ : C₃) :
                                          (((((((CategoryTheory.whiskeringLeft₃ E).map τ₁).app F₂).app F₃).app X).app c).app X✝¹).app X✝¹ = ((X.map (τ₁.app c)).app (F₂.obj X✝¹)).app (F₃.obj X✝¹)
                                          @[simp]
                                          theorem CategoryTheory.whiskeringLeft₃_obj_obj_obj_obj_obj_obj_obj {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {D₁ : Type u_4} {D₂ : Type u_5} {D₃ : Type u_6} [CategoryTheory.Category.{u_8, u_1} C₁] [CategoryTheory.Category.{u_9, u_2} C₂] [CategoryTheory.Category.{u_10, u_3} C₃] [CategoryTheory.Category.{u_11, u_4} D₁] [CategoryTheory.Category.{u_12, u_5} D₂] [CategoryTheory.Category.{u_13, u_6} D₃] (E : Type u_7) [CategoryTheory.Category.{u_14, u_7} E] (F₁ : CategoryTheory.Functor C₁ D₁) (F₂ : CategoryTheory.Functor C₂ D₂) (F₃ : CategoryTheory.Functor C₃ D₃) (X : CategoryTheory.Functor D₁ (CategoryTheory.Functor D₂ (CategoryTheory.Functor D₃ E))) (X✝ : C₁) (X✝ : C₂) (X✝ : C₃) :
                                          (((((((CategoryTheory.whiskeringLeft₃ E).obj F₁).obj F₂).obj F₃).obj X).obj X✝).obj X✝).obj X✝ = ((X.obj (F₁.obj X✝)).obj (F₂.obj X✝)).obj (F₃.obj X✝)
                                          @[simp]
                                          theorem CategoryTheory.whiskeringLeft₃_obj_obj_obj_obj_obj_obj_map {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {D₁ : Type u_4} {D₂ : Type u_5} {D₃ : Type u_6} [CategoryTheory.Category.{u_8, u_1} C₁] [CategoryTheory.Category.{u_9, u_2} C₂] [CategoryTheory.Category.{u_10, u_3} C₃] [CategoryTheory.Category.{u_11, u_4} D₁] [CategoryTheory.Category.{u_12, u_5} D₂] [CategoryTheory.Category.{u_13, u_6} D₃] (E : Type u_7) [CategoryTheory.Category.{u_14, u_7} E] (F₁ : CategoryTheory.Functor C₁ D₁) (F₂ : CategoryTheory.Functor C₂ D₂) (F₃ : CategoryTheory.Functor C₃ D₃) (X : CategoryTheory.Functor D₁ (CategoryTheory.Functor D₂ (CategoryTheory.Functor D₃ E))) (X✝ : C₁) (X✝ : C₂) {X✝¹ Y✝ : C₃} (f : X✝¹ Y✝) :
                                          (((((((CategoryTheory.whiskeringLeft₃ E).obj F₁).obj F₂).obj F₃).obj X).obj X✝).obj X✝).map f = ((X.obj (F₁.obj X✝)).obj (F₂.obj X✝)).map (F₃.map f)
                                          @[simp]
                                          theorem CategoryTheory.whiskeringLeft₃_obj_obj_obj_map_app_app_app {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {D₁ : Type u_4} {D₂ : Type u_5} {D₃ : Type u_6} [CategoryTheory.Category.{u_8, u_1} C₁] [CategoryTheory.Category.{u_9, u_2} C₂] [CategoryTheory.Category.{u_10, u_3} C₃] [CategoryTheory.Category.{u_11, u_4} D₁] [CategoryTheory.Category.{u_12, u_5} D₂] [CategoryTheory.Category.{u_13, u_6} D₃] (E : Type u_7) [CategoryTheory.Category.{u_14, u_7} E] (F₁ : CategoryTheory.Functor C₁ D₁) (F₂ : CategoryTheory.Functor C₂ D₂) (F₃ : CategoryTheory.Functor C₃ D₃) {X✝ Y✝ : CategoryTheory.Functor D₁ (CategoryTheory.Functor D₂ (CategoryTheory.Functor D₃ E))} (f : X✝ Y✝) (X : C₁) (X✝¹ : C₂) (X✝¹ : C₃) :
                                          (((((((CategoryTheory.whiskeringLeft₃ E).obj F₁).obj F₂).obj F₃).map f).app X).app X✝¹).app X✝¹ = ((f.app (F₁.obj X)).app (F₂.obj X✝¹)).app (F₃.obj X✝¹)
                                          @[simp]
                                          theorem CategoryTheory.whiskeringLeft₃_obj_obj_obj_obj_obj_map_app {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} {D₁ : Type u_4} {D₂ : Type u_5} {D₃ : Type u_6} [CategoryTheory.Category.{u_8, u_1} C₁] [CategoryTheory.Category.{u_9, u_2} C₂] [CategoryTheory.Category.{u_10, u_3} C₃] [CategoryTheory.Category.{u_11, u_4} D₁] [CategoryTheory.Category.{u_12, u_5} D₂] [CategoryTheory.Category.{u_13, u_6} D₃] (E : Type u_7) [CategoryTheory.Category.{u_14, u_7} E] (F₁ : CategoryTheory.Functor C₁ D₁) (F₂ : CategoryTheory.Functor C₂ D₂) (F₃ : CategoryTheory.Functor C₃ D₃) (X : CategoryTheory.Functor D₁ (CategoryTheory.Functor D₂ (CategoryTheory.Functor D₃ E))) (X✝ : C₁) {X✝¹ Y✝ : C₂} (f : X✝¹ Y✝) (X✝ : C₃) :
                                          (((((((CategoryTheory.whiskeringLeft₃ E).obj F₁).obj F₂).obj F₃).obj X).obj X✝).map f).app X✝ = ((X.obj (F₁.obj X✝)).map (F₂.map f)).app (F₃.obj X✝)

                                          The "postcomposition" with a functor E ⥤ E' gives a functor (E ⥤ E') ⥤ (C₁ ⥤ C₂ ⥤ C₃ ⥤ E) ⥤ C₁ ⥤ C₂ ⥤ C₃ ⥤ E'.

                                          Equations
                                          • One or more equations did not get rendered due to their size.
                                          Instances For
                                            @[simp]
                                            theorem CategoryTheory.Functor.postcompose₃_map_app_app_app_app {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} [CategoryTheory.Category.{u_9, u_1} C₁] [CategoryTheory.Category.{u_10, u_2} C₂] [CategoryTheory.Category.{u_11, u_3} C₃] {E : Type u_7} [CategoryTheory.Category.{u_12, u_7} E] {E' : Type u_8} [CategoryTheory.Category.{u_13, u_8} E'] {X✝ Y✝ : CategoryTheory.Functor E E'} (f : X✝ Y✝) (F : CategoryTheory.Functor C₁ (CategoryTheory.Functor C₂ (CategoryTheory.Functor C₃ E))) (c : C₁) (c✝ : C₂) (c✝ : C₃) :
                                            ((((CategoryTheory.Functor.postcompose₃.map f).app F).app c).app c✝).app c✝ = f.app (((F.obj c).obj c✝).obj c✝)
                                            @[simp]
                                            theorem CategoryTheory.Functor.postcompose₃_obj_obj_obj_map_app {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} [CategoryTheory.Category.{u_9, u_1} C₁] [CategoryTheory.Category.{u_10, u_2} C₂] [CategoryTheory.Category.{u_11, u_3} C₃] {E : Type u_7} [CategoryTheory.Category.{u_12, u_7} E] {E' : Type u_8} [CategoryTheory.Category.{u_13, u_8} E'] (X : CategoryTheory.Functor E E') (F : CategoryTheory.Functor C₁ (CategoryTheory.Functor C₂ (CategoryTheory.Functor C₃ E))) (X✝ : C₁) {X✝¹ Y✝ : C₂} (f : X✝¹ Y✝) (X✝ : C₃) :
                                            ((((CategoryTheory.Functor.postcompose₃.obj X).obj F).obj X✝).map f).app X✝ = X.map (((F.obj X✝).map f).app X✝)
                                            @[simp]
                                            theorem CategoryTheory.Functor.postcompose₃_obj_obj_obj_obj_obj {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} [CategoryTheory.Category.{u_9, u_1} C₁] [CategoryTheory.Category.{u_10, u_2} C₂] [CategoryTheory.Category.{u_11, u_3} C₃] {E : Type u_7} [CategoryTheory.Category.{u_12, u_7} E] {E' : Type u_8} [CategoryTheory.Category.{u_13, u_8} E'] (X : CategoryTheory.Functor E E') (F : CategoryTheory.Functor C₁ (CategoryTheory.Functor C₂ (CategoryTheory.Functor C₃ E))) (X✝ : C₁) (X✝ : C₂) (X✝ : C₃) :
                                            ((((CategoryTheory.Functor.postcompose₃.obj X).obj F).obj X✝).obj X✝).obj X✝ = X.obj (((F.obj X✝).obj X✝).obj X✝)
                                            @[simp]
                                            theorem CategoryTheory.Functor.postcompose₃_obj_obj_obj_obj_map {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} [CategoryTheory.Category.{u_9, u_1} C₁] [CategoryTheory.Category.{u_10, u_2} C₂] [CategoryTheory.Category.{u_11, u_3} C₃] {E : Type u_7} [CategoryTheory.Category.{u_12, u_7} E] {E' : Type u_8} [CategoryTheory.Category.{u_13, u_8} E'] (X : CategoryTheory.Functor E E') (F : CategoryTheory.Functor C₁ (CategoryTheory.Functor C₂ (CategoryTheory.Functor C₃ E))) (X✝ : C₁) (X✝ : C₂) {X✝¹ Y✝ : C₃} (f : X✝¹ Y✝) :
                                            ((((CategoryTheory.Functor.postcompose₃.obj X).obj F).obj X✝).obj X✝).map f = X.map (((F.obj X✝).obj X✝).map f)
                                            @[simp]
                                            theorem CategoryTheory.Functor.postcompose₃_obj_obj_map_app_app {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} [CategoryTheory.Category.{u_9, u_1} C₁] [CategoryTheory.Category.{u_10, u_2} C₂] [CategoryTheory.Category.{u_11, u_3} C₃] {E : Type u_7} [CategoryTheory.Category.{u_12, u_7} E] {E' : Type u_8} [CategoryTheory.Category.{u_13, u_8} E'] (X : CategoryTheory.Functor E E') (F : CategoryTheory.Functor C₁ (CategoryTheory.Functor C₂ (CategoryTheory.Functor C₃ E))) {X✝ Y✝ : C₁} (f : X✝ Y✝) (X✝¹ : C₂) (X✝¹ : C₃) :
                                            ((((CategoryTheory.Functor.postcompose₃.obj X).obj F).map f).app X✝¹).app X✝¹ = X.map (((F.map f).app X✝¹).app X✝¹)
                                            @[simp]
                                            theorem CategoryTheory.Functor.postcompose₃_obj_map_app_app_app {C₁ : Type u_1} {C₂ : Type u_2} {C₃ : Type u_3} [CategoryTheory.Category.{u_9, u_1} C₁] [CategoryTheory.Category.{u_10, u_2} C₂] [CategoryTheory.Category.{u_11, u_3} C₃] {E : Type u_7} [CategoryTheory.Category.{u_12, u_7} E] {E' : Type u_8} [CategoryTheory.Category.{u_13, u_8} E'] (X : CategoryTheory.Functor E E') {X✝ Y✝ : CategoryTheory.Functor C₁ (CategoryTheory.Functor C₂ (CategoryTheory.Functor C₃ E))} (α : X✝ Y✝) (X✝¹ : C₁) (X✝¹ : C₂) (X✝¹ : C₃) :
                                            ((((CategoryTheory.Functor.postcompose₃.obj X).map α).app X✝¹).app X✝¹).app X✝¹ = X.map (((α.app X✝¹).app X✝¹).app X✝¹)