Documentation

Mathlib.CategoryTheory.ComposableArrows.Basic

Composable arrows #

If C is a category, the type of n-simplices in the nerve of C identifies to the type of functors Fin (n + 1) ⥤ C, which can be thought of as families of n composable arrows in C. In this file, we introduce and study this category ComposableArrows C n of n composable arrows in C.

If F : ComposableArrows C n, we define F.left as the leftmost object, F.right as the rightmost object, and F.hom : F.left ⟶ F.right is the canonical map.

The most significant definition in this file is the constructor F.precomp f : ComposableArrows C (n + 1) for F : ComposableArrows C n and f : X ⟶ F.left: "it shifts F towards the right and inserts f on the left". This precomp has good definitional properties.

In the namespace CategoryTheory.ComposableArrows, we provide constructors like mk₁ f, mk₂ f g, mk₃ f g h for ComposableArrows C n for small n.

TODO (@joelriou):

New simprocs that run even in dsimp have caused breakages in this file.

(e.g. dsimp can now simplify 2 + 3 to 5)

For now, we just turn off the offending simprocs in this file.

However, hopefully it is possible to refactor the material here so that no disabling of simprocs is needed.

See issue https://github.com/leanprover-community/mathlib4/issues/27382.

@[reducible, inline]
abbrev CategoryTheory.ComposableArrows (C : Type u_1) [Category.{v_1, u_1} C] (n : ) :
Type (max v_1 u_1)

ComposableArrows C n is the type of functors Fin (n + 1) ⥤ C.

Instances For

    A wrapper for omega which prefaces it with some quick and useful attempts

    Instances For
      @[reducible, inline]
      abbrev CategoryTheory.ComposableArrows.obj' {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) (i : ) (hi : i n := by valid) :
      C

      The ith object (with i : ℕ such that i ≤ n) of F : ComposableArrows C n.

      Instances For
        @[reducible, inline]
        abbrev CategoryTheory.ComposableArrows.map' {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) (i j : ) (hij : i j := by valid) (hjn : j n := by valid) :
        F.obj i, F.obj j,

        The map F.obj' i ⟶ F.obj' j when F : ComposableArrows C n, and i and j are natural numbers such that i ≤ j ≤ n.

        Instances For
          theorem CategoryTheory.ComposableArrows.map'_self {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) (i : ) (hi : i n := by valid) :
          F.map' i i hi = CategoryStruct.id (F.obj i, )
          theorem CategoryTheory.ComposableArrows.map'_comp {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) (i j k : ) (hij : i j := by valid) (hjk : j k := by valid) (hk : k n := by valid) :
          F.map' i k hk = CategoryStruct.comp (F.map' i j hij ) (F.map' j k hjk hk)
          @[reducible, inline]

          The leftmost object of F : ComposableArrows C n.

          Instances For
            @[reducible, inline]

            The rightmost object of F : ComposableArrows C n.

            Instances For
              @[reducible, inline]

              The canonical map F.left ⟶ F.right for F : ComposableArrows C n.

              Instances For
                @[reducible, inline]
                abbrev CategoryTheory.ComposableArrows.app' {C : Type u_1} [Category.{v_1, u_1} C] {n : } {F G : ComposableArrows C n} (φ : F G) (i : ) (hi : i n := by valid) :
                F.obj' i hi G.obj' i hi

                The map F.obj' i ⟶ G.obj' i induced on ith objects by a morphism F ⟶ G in ComposableArrows C n when i is a natural number such that i ≤ n.

                Instances For
                  theorem CategoryTheory.ComposableArrows.naturality' {C : Type u_1} [Category.{v_1, u_1} C] {n : } {F G : ComposableArrows C n} (φ : F G) (i j : ) (hij : i j := by valid) (hj : j n := by valid) :
                  CategoryStruct.comp (F.map' i j hij hj) (app' φ j hj) = CategoryStruct.comp (app' φ i ) (G.map' i j hij hj)
                  theorem CategoryTheory.ComposableArrows.naturality'_assoc {C : Type u_1} [Category.{v_1, u_1} C] {n : } {F G : ComposableArrows C n} (φ : F G) (i j : ) (hij : i j := by valid) (hj : j n := by valid) {Z : C} (h : G.obj' j hj Z) :
                  CategoryStruct.comp (F.map' i j hij hj) (CategoryStruct.comp (app' φ j hj) h) = CategoryStruct.comp (app' φ i ) (CategoryStruct.comp (G.map' i j hij hj) h)
                  @[simp]
                  theorem CategoryTheory.ComposableArrows.mk₀_map {C : Type u_1} [Category.{v_1, u_1} C] (X : C) {X✝ Y✝ : Fin 1} (x✝ : X✝ Y✝) :
                  @[simp]
                  theorem CategoryTheory.ComposableArrows.mk₀_obj {C : Type u_1} [Category.{v_1, u_1} C] (X : C) (x✝ : Fin 1) :
                  (mk₀ X).obj x✝ = X
                  def CategoryTheory.ComposableArrows.Mk₁.obj {C : Type u_1} (X₀ X₁ : C) :
                  Fin 2C

                  The map which sends 0 : Fin 2 to X₀ and 1 to X₁.

                  Instances For
                    def CategoryTheory.ComposableArrows.Mk₁.map {C : Type u_1} [Category.{v_1, u_1} C] {X₀ X₁ : C} (f : X₀ X₁) (i j : Fin 2) :
                    i j → (obj X₀ X₁ i obj X₀ X₁ j)

                    The obvious map obj X₀ X₁ i ⟶ obj X₀ X₁ j whenever i j : Fin 2 satisfy i ≤ j.

                    Instances For
                      theorem CategoryTheory.ComposableArrows.Mk₁.map_id {C : Type u_1} [Category.{v_1, u_1} C] {X₀ X₁ : C} (f : X₀ X₁) (i : Fin 2) :
                      map f i i = CategoryStruct.id (obj X₀ X₁ i)
                      theorem CategoryTheory.ComposableArrows.Mk₁.map_comp {C : Type u_1} [Category.{v_1, u_1} C] {X₀ X₁ : C} (f : X₀ X₁) {i j k : Fin 2} (hij : i j) (hjk : j k) :
                      map f i k = CategoryStruct.comp (map f i j hij) (map f j k hjk)
                      def CategoryTheory.ComposableArrows.mk₁ {C : Type u_1} [Category.{v_1, u_1} C] {X₀ X₁ : C} (f : X₀ X₁) :

                      Constructor for ComposableArrows C 1.

                      Instances For
                        @[simp]
                        theorem CategoryTheory.ComposableArrows.mk₁_obj {C : Type u_1} [Category.{v_1, u_1} C] {X₀ X₁ : C} (f : X₀ X₁) (a✝ : Fin 2) :
                        (mk₁ f).obj a✝ = Mk₁.obj X₀ X₁ a✝
                        @[simp]
                        theorem CategoryTheory.ComposableArrows.mk₁_map {C : Type u_1} [Category.{v_1, u_1} C] {X₀ X₁ : C} (f : X₀ X₁) {X✝ Y✝ : Fin (1 + 1)} (g : X✝ Y✝) :
                        (mk₁ f).map g = Mk₁.map f X✝ Y✝
                        def CategoryTheory.ComposableArrows.homMk {C : Type u_1} [Category.{v_1, u_1} C] {n : } {F G : ComposableArrows C n} (app : (i : Fin (n + 1)) → F.obj i G.obj i) (w : ∀ (i : ) (hi : i < n), CategoryStruct.comp (F.map' i (i + 1) hi) (app i + 1, ) = CategoryStruct.comp (app i, ) (G.map' i (i + 1) hi)) :
                        F G

                        Constructor for morphisms F ⟶ G in ComposableArrows C n which takes as inputs a family of morphisms F.obj i ⟶ G.obj i and the naturality condition only for the maps in Fin (n + 1) given by inequalities of the form i ≤ i + 1.

                        Instances For
                          @[simp]
                          theorem CategoryTheory.ComposableArrows.homMk_app {C : Type u_1} [Category.{v_1, u_1} C] {n : } {F G : ComposableArrows C n} (app : (i : Fin (n + 1)) → F.obj i G.obj i) (w : ∀ (i : ) (hi : i < n), CategoryStruct.comp (F.map' i (i + 1) hi) (app i + 1, ) = CategoryStruct.comp (app i, ) (G.map' i (i + 1) hi)) (i : Fin (n + 1)) :
                          (homMk app w).app i = app i
                          def CategoryTheory.ComposableArrows.isoMk {C : Type u_1} [Category.{v_1, u_1} C] {n : } {F G : ComposableArrows C n} (app : (i : Fin (n + 1)) → F.obj i G.obj i) (w : ∀ (i : ) (hi : i < n), CategoryStruct.comp (F.map' i (i + 1) hi) (app i + 1, ).hom = CategoryStruct.comp (app i, ).hom (G.map' i (i + 1) hi)) :
                          F G

                          Constructor for isomorphisms F ≅ G in ComposableArrows C n which takes as inputs a family of isomorphisms F.obj i ≅ G.obj i and the naturality condition only for the maps in Fin (n + 1) given by inequalities of the form i ≤ i + 1.

                          Instances For
                            @[simp]
                            theorem CategoryTheory.ComposableArrows.isoMk_inv {C : Type u_1} [Category.{v_1, u_1} C] {n : } {F G : ComposableArrows C n} (app : (i : Fin (n + 1)) → F.obj i G.obj i) (w : ∀ (i : ) (hi : i < n), CategoryStruct.comp (F.map' i (i + 1) hi) (app i + 1, ).hom = CategoryStruct.comp (app i, ).hom (G.map' i (i + 1) hi)) :
                            (isoMk app w).inv = homMk (fun (i : Fin (n + 1)) => (app i).inv)
                            @[simp]
                            theorem CategoryTheory.ComposableArrows.isoMk_hom {C : Type u_1} [Category.{v_1, u_1} C] {n : } {F G : ComposableArrows C n} (app : (i : Fin (n + 1)) → F.obj i G.obj i) (w : ∀ (i : ) (hi : i < n), CategoryStruct.comp (F.map' i (i + 1) hi) (app i + 1, ).hom = CategoryStruct.comp (app i, ).hom (G.map' i (i + 1) hi)) :
                            (isoMk app w).hom = homMk (fun (i : Fin (n + 1)) => (app i).hom) w
                            theorem CategoryTheory.ComposableArrows.ext {C : Type u_1} [Category.{v_1, u_1} C] {n : } {F G : ComposableArrows C n} (h : ∀ (i : Fin (n + 1)), F.obj i = G.obj i) (w : ∀ (i : ) (hi : i < n), F.map' i (i + 1) hi = CategoryStruct.comp (eqToHom ) (CategoryStruct.comp (G.map' i (i + 1) hi) (eqToHom ))) :
                            F = G
                            @[simp]
                            theorem CategoryTheory.ComposableArrows.homMk₀_app {C : Type u_1} [Category.{v_1, u_1} C] {F G : ComposableArrows C 0} (f : F.obj' 0 homMk₀._proof_1 G.obj' 0 homMk₀._proof_1) (i : Fin (0 + 1)) :
                            (homMk₀ f).app i = match i with | 0, isLt => f

                            Constructor for isomorphisms in ComposableArrows C 0.

                            Instances For
                              @[simp]
                              theorem CategoryTheory.ComposableArrows.isoMk₀_inv_app {C : Type u_1} [Category.{v_1, u_1} C] {F G : ComposableArrows C 0} (e : F.obj' 0 homMk₀._proof_1 G.obj' 0 homMk₀._proof_1) (i : Fin (0 + 1)) :
                              (isoMk₀ e).inv.app i = match i with | 0, isLt => e.inv
                              @[simp]
                              theorem CategoryTheory.ComposableArrows.isoMk₀_hom_app {C : Type u_1} [Category.{v_1, u_1} C] {F G : ComposableArrows C 0} (e : F.obj' 0 homMk₀._proof_1 G.obj' 0 homMk₀._proof_1) (i : Fin (0 + 1)) :
                              (isoMk₀ e).hom.app i = match i with | 0, isLt => e.hom
                              @[simp]
                              theorem CategoryTheory.ComposableArrows.homMk₁_app {C : Type u_1} [Category.{v_1, u_1} C] {F G : ComposableArrows C 1} (left : F.obj' 0 homMk₁._proof_4 G.obj' 0 homMk₁._proof_4) (right : F.obj' 1 homMk₁._proof_5 G.obj' 1 homMk₁._proof_5) (w : CategoryStruct.comp (F.map' 0 1 homMk₁._proof_4 homMk₁._proof_5) right = CategoryStruct.comp left (G.map' 0 1 homMk₁._proof_4 homMk₁._proof_5) := by cat_disch) (i : Fin (1 + 1)) :
                              (homMk₁ left right w).app i = match i with | 0, isLt => left | 1, isLt => right
                              @[simp]
                              theorem CategoryTheory.ComposableArrows.isoMk₁_inv_app {C : Type u_1} [Category.{v_1, u_1} C] {F G : ComposableArrows C 1} (left : F.obj' 0 homMk₁._proof_4 G.obj' 0 homMk₁._proof_4) (right : F.obj' 1 homMk₁._proof_5 G.obj' 1 homMk₁._proof_5) (w : CategoryStruct.comp (F.map' 0 1 homMk₁._proof_4 homMk₁._proof_5) right.hom = CategoryStruct.comp left.hom (G.map' 0 1 homMk₁._proof_4 homMk₁._proof_5) := by cat_disch) (i : Fin (1 + 1)) :
                              (isoMk₁ left right w).inv.app i = match i with | 0, isLt => left.inv | 1, isLt => right.inv
                              @[simp]
                              theorem CategoryTheory.ComposableArrows.isoMk₁_hom_app {C : Type u_1} [Category.{v_1, u_1} C] {F G : ComposableArrows C 1} (left : F.obj' 0 homMk₁._proof_4 G.obj' 0 homMk₁._proof_4) (right : F.obj' 1 homMk₁._proof_5 G.obj' 1 homMk₁._proof_5) (w : CategoryStruct.comp (F.map' 0 1 homMk₁._proof_4 homMk₁._proof_5) right.hom = CategoryStruct.comp left.hom (G.map' 0 1 homMk₁._proof_4 homMk₁._proof_5) := by cat_disch) (i : Fin (1 + 1)) :
                              (isoMk₁ left right w).hom.app i = match i with | 0, isLt => left.hom | 1, isLt => right.hom
                              theorem CategoryTheory.ComposableArrows.ext₁ {C : Type u_1} [Category.{v_1, u_1} C] {F G : ComposableArrows C 1} (left : F.left = G.left) (right : F.right = G.right) (w : F.hom = CategoryStruct.comp (eqToHom left) (CategoryStruct.comp G.hom (eqToHom ))) :
                              F = G
                              theorem CategoryTheory.ComposableArrows.mk₁_surjective {C : Type u_1} [Category.{v_1, u_1} C] (X : ComposableArrows C 1) :
                              ∃ (X₀ : C) (X₁ : C) (f : X₀ X₁), X = mk₁ f
                              theorem CategoryTheory.ComposableArrows.mk₁_eqToHom_comp {C : Type u_1} [Category.{v_1, u_1} C] {X₀' X₀ X₁ : C} (h : X₀' = X₀) (f : X₀ X₁) :
                              theorem CategoryTheory.ComposableArrows.mk₁_comp_eqToHom {C : Type u_1} [Category.{v_1, u_1} C] {X₀ X₁ X₁' : C} (f : X₀ X₁) (h : X₁ = X₁') :

                              The bijection between ComposableArrows C 1 and Arrow C.

                              Instances For
                                def CategoryTheory.ComposableArrows.Precomp.obj {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) (X : C) :
                                Fin (n + 1 + 1)C

                                The map Fin (n + 1 + 1) → C which "shifts" F.obj' to the right and inserts X in the zeroth position.

                                Instances For
                                  @[simp]
                                  theorem CategoryTheory.ComposableArrows.Precomp.obj_zero {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) (X : C) :
                                  obj F X 0 = X
                                  @[simp]
                                  theorem CategoryTheory.ComposableArrows.Precomp.obj_one {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) (X : C) :
                                  obj F X 1 = F.obj' 0
                                  @[simp]
                                  theorem CategoryTheory.ComposableArrows.Precomp.obj_succ {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) (X : C) (i : ) (hi : i + 1 < n + 1 + 1) :
                                  obj F X i + 1, hi = F.obj' i
                                  def CategoryTheory.ComposableArrows.Precomp.map {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) {X : C} (f : X F.left) (i j : Fin (n + 1 + 1)) :
                                  i j → (obj F X i obj F X j)

                                  Auxiliary definition for the action on maps of the functor F.precomp f. It sends 0 ≤ 1 to f and i + 1 ≤ j + 1 to F.map' i j.

                                  Instances For
                                    @[simp]
                                    theorem CategoryTheory.ComposableArrows.Precomp.map_zero_zero {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) {X : C} (f : X F.left) :
                                    map F f 0 0 = CategoryStruct.id X
                                    @[simp]
                                    theorem CategoryTheory.ComposableArrows.Precomp.map_one_one {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) {X : C} (f : X F.left) :
                                    map F f 1 1 = F.map (CategoryStruct.id 0, )
                                    @[simp]
                                    theorem CategoryTheory.ComposableArrows.Precomp.map_zero_one {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) {X : C} (f : X F.left) :
                                    map F f 0 1 = f
                                    @[simp]
                                    theorem CategoryTheory.ComposableArrows.Precomp.map_zero_one' {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) {X : C} (f : X F.left) :
                                    map F f 0 0 + 1, = f
                                    @[simp]
                                    theorem CategoryTheory.ComposableArrows.Precomp.map_zero_succ_succ {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) {X : C} (f : X F.left) (j : ) (hj : j + 2 < n + 1 + 1) :
                                    map F f 0 j + 2, hj = CategoryStruct.comp f (F.map' 0 (j + 1) )
                                    @[simp]
                                    theorem CategoryTheory.ComposableArrows.Precomp.map_succ_succ {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) {X : C} (f : X F.left) (i j : ) (hi : i + 1 < n + 1 + 1) (hj : j + 1 < n + 1 + 1) (hij : i + 1 j + 1) :
                                    map F f i + 1, hi j + 1, hj hij = F.map' i j
                                    @[simp]
                                    theorem CategoryTheory.ComposableArrows.Precomp.map_one_succ {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) {X : C} (f : X F.left) (j : ) (hj : j + 1 < n + 1 + 1) :
                                    map F f 1 j + 1, hj = F.map' 0 j
                                    theorem CategoryTheory.ComposableArrows.Precomp.map_id {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) {X : C} (f : X F.left) (i : Fin (n + 1 + 1)) :
                                    map F f i i = CategoryStruct.id (obj F X i)
                                    theorem CategoryTheory.ComposableArrows.Precomp.map_comp {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) {X : C} (f : X F.left) {i j k : Fin (n + 1 + 1)} (hij : i j) (hjk : j k) :
                                    map F f i k = CategoryStruct.comp (map F f i j hij) (map F f j k hjk)
                                    def CategoryTheory.ComposableArrows.precomp {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) {X : C} (f : X F.left) :

                                    "Precomposition" of F : ComposableArrows C n by a morphism f : X ⟶ F.left.

                                    Instances For
                                      @[simp]
                                      theorem CategoryTheory.ComposableArrows.precomp_obj {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) {X : C} (f : X F.left) (a✝ : Fin (n + 1 + 1)) :
                                      (F.precomp f).obj a✝ = Precomp.obj F X a✝
                                      @[simp]
                                      theorem CategoryTheory.ComposableArrows.precomp_map {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) {X : C} (f : X F.left) {X✝ Y✝ : Fin (n + 1 + 1)} (g : X✝ Y✝) :
                                      (F.precomp f).map g = Precomp.map F f X✝ Y✝
                                      @[reducible, inline]
                                      abbrev CategoryTheory.ComposableArrows.mk₂ {C : Type u_1} [Category.{v_1, u_1} C] {X₀ X₁ X₂ : C} (f : X₀ X₁) (g : X₁ X₂) :

                                      Constructor for ComposableArrows C 2.

                                      Instances For
                                        @[reducible, inline]
                                        abbrev CategoryTheory.ComposableArrows.mk₃ {C : Type u_1} [Category.{v_1, u_1} C] {X₀ X₁ X₂ X₃ : C} (f : X₀ X₁) (g : X₁ X₂) (h : X₂ X₃) :

                                        Constructor for ComposableArrows C 3.

                                        Instances For
                                          @[reducible, inline]
                                          abbrev CategoryTheory.ComposableArrows.mk₄ {C : Type u_1} [Category.{v_1, u_1} C] {X₀ X₁ X₂ X₃ X₄ : C} (f : X₀ X₁) (g : X₁ X₂) (h : X₂ X₃) (i : X₃ X₄) :

                                          Constructor for ComposableArrows C 4.

                                          Instances For
                                            @[reducible, inline]
                                            abbrev CategoryTheory.ComposableArrows.mk₅ {C : Type u_1} [Category.{v_1, u_1} C] {X₀ X₁ X₂ X₃ X₄ X₅ : C} (f : X₀ X₁) (g : X₁ X₂) (h : X₂ X₃) (i : X₃ X₄) (j : X₄ X₅) :

                                            Constructor for ComposableArrows C 5.

                                            Instances For

                                              These examples are meant to test the good definitional properties of precomp, and that dsimp can see through.

                                              def CategoryTheory.ComposableArrows.whiskerLeft {C : Type u_1} [Category.{v_1, u_1} C] {n m : } (F : ComposableArrows C m) (Φ : Functor (Fin (n + 1)) (Fin (m + 1))) :

                                              The map ComposableArrows C m → ComposableArrows C n obtained by precomposition with a functor Fin (n + 1) ⥤ Fin (m + 1).

                                              Instances For
                                                @[simp]
                                                theorem CategoryTheory.ComposableArrows.whiskerLeft_obj {C : Type u_1} [Category.{v_1, u_1} C] {n m : } (F : ComposableArrows C m) (Φ : Functor (Fin (n + 1)) (Fin (m + 1))) (X : Fin (n + 1)) :
                                                (F.whiskerLeft Φ).obj X = F.obj (Φ.obj X)
                                                @[simp]
                                                theorem CategoryTheory.ComposableArrows.whiskerLeft_map {C : Type u_1} [Category.{v_1, u_1} C] {n m : } (F : ComposableArrows C m) (Φ : Functor (Fin (n + 1)) (Fin (m + 1))) {X✝ Y✝ : Fin (n + 1)} (f : X✝ Y✝) :
                                                (F.whiskerLeft Φ).map f = F.map (Φ.map f)
                                                def CategoryTheory.ComposableArrows.whiskerLeftFunctor {C : Type u_1} [Category.{v_1, u_1} C] {n m : } (Φ : Functor (Fin (n + 1)) (Fin (m + 1))) :

                                                The functor ComposableArrows C m ⥤ ComposableArrows C n obtained by precomposition with a functor Fin (n + 1) ⥤ Fin (m + 1).

                                                Instances For
                                                  @[simp]
                                                  theorem CategoryTheory.ComposableArrows.whiskerLeftFunctor_map_app {C : Type u_1} [Category.{v_1, u_1} C] {n m : } (Φ : Functor (Fin (n + 1)) (Fin (m + 1))) {X✝ Y✝ : ComposableArrows C m} (f : X✝ Y✝) (X : Fin (n + 1)) :
                                                  ((whiskerLeftFunctor Φ).map f).app X = f.app (Φ.obj X)
                                                  @[simp]
                                                  theorem CategoryTheory.ComposableArrows.whiskerLeftFunctor_obj_obj {C : Type u_1} [Category.{v_1, u_1} C] {n m : } (Φ : Functor (Fin (n + 1)) (Fin (m + 1))) (F : ComposableArrows C m) (X : Fin (n + 1)) :
                                                  ((whiskerLeftFunctor Φ).obj F).obj X = F.obj (Φ.obj X)
                                                  @[simp]
                                                  theorem CategoryTheory.ComposableArrows.whiskerLeftFunctor_obj_map {C : Type u_1} [Category.{v_1, u_1} C] {n m : } (Φ : Functor (Fin (n + 1)) (Fin (m + 1))) (F : ComposableArrows C m) {X✝ Y✝ : Fin (n + 1)} (f : X✝ Y✝) :
                                                  ((whiskerLeftFunctor Φ).obj F).map f = F.map (Φ.map f)
                                                  def Fin.succFunctor (n : ) :
                                                  CategoryTheory.Functor (Fin n) (Fin (n + 1))

                                                  The functor Fin n ⥤ Fin (n + 1) which sends i to i.succ.

                                                  Instances For
                                                    @[simp]
                                                    theorem Fin.succFunctor_obj (n : ) (i : Fin n) :
                                                    (succFunctor n).obj i = i.succ
                                                    @[simp]
                                                    theorem Fin.succFunctor_map (n : ) {x✝ x✝¹ : Fin n} (hij : x✝ x✝¹) :

                                                    The functor ComposableArrows C (n + 1) ⥤ ComposableArrows C n which forgets the first arrow.

                                                    Instances For
                                                      @[simp]
                                                      theorem CategoryTheory.ComposableArrows.δ₀Functor_obj_obj {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C (n + 1)) (X : Fin (n + 1)) :
                                                      (δ₀Functor.obj F).obj X = F.obj X.succ
                                                      @[simp]
                                                      theorem CategoryTheory.ComposableArrows.δ₀Functor_map_app {C : Type u_1} [Category.{v_1, u_1} C] {n : } {X✝ Y✝ : ComposableArrows C (n + 1)} (f : X✝ Y✝) (X : Fin (n + 1)) :
                                                      (δ₀Functor.map f).app X = f.app X.succ
                                                      @[simp]
                                                      theorem CategoryTheory.ComposableArrows.δ₀Functor_obj_map {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C (n + 1)) {X✝ Y✝ : Fin (n + 1)} (f : X✝ Y✝) :
                                                      (δ₀Functor.obj F).map f = F.map (homOfLE )
                                                      @[reducible, inline]

                                                      The ComposableArrows C n obtained by forgetting the first arrow.

                                                      Instances For
                                                        @[simp]
                                                        theorem CategoryTheory.ComposableArrows.precomp_δ₀ {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) {X : C} (f : X F.left) :
                                                        (F.precomp f).δ₀ = F
                                                        def Fin.castSuccFunctor (n : ) :
                                                        CategoryTheory.Functor (Fin n) (Fin (n + 1))

                                                        The functor Fin n ⥤ Fin (n + 1) which sends i to i.castSucc.

                                                        Instances For
                                                          @[simp]
                                                          theorem Fin.castSuccFunctor_obj (n : ) (i : Fin n) :
                                                          (castSuccFunctor n).obj i = i.castSucc
                                                          @[simp]
                                                          theorem Fin.castSuccFunctor_map (n : ) {X✝ Y✝ : Fin n} (hij : X✝ Y✝) :
                                                          (castSuccFunctor n).map hij = hij

                                                          The functor ComposableArrows C (n + 1) ⥤ ComposableArrows C n which forgets the last arrow.

                                                          Instances For
                                                            @[simp]
                                                            theorem CategoryTheory.ComposableArrows.δlastFunctor_obj_obj {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C (n + 1)) (X : Fin (n + 1)) :
                                                            (δlastFunctor.obj F).obj X = F.obj X.castSucc
                                                            @[simp]
                                                            theorem CategoryTheory.ComposableArrows.δlastFunctor_map_app {C : Type u_1} [Category.{v_1, u_1} C] {n : } {X✝ Y✝ : ComposableArrows C (n + 1)} (f : X✝ Y✝) (X : Fin (n + 1)) :
                                                            (δlastFunctor.map f).app X = f.app X.castSucc
                                                            @[simp]
                                                            theorem CategoryTheory.ComposableArrows.δlastFunctor_obj_map {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C (n + 1)) {X✝ Y✝ : Fin (n + 1)} (f : X✝ Y✝) :
                                                            (δlastFunctor.obj F).map f = F.map f
                                                            @[reducible, inline]

                                                            The ComposableArrows C n obtained by forgetting the first arrow.

                                                            Instances For
                                                              def CategoryTheory.ComposableArrows.homMkSucc {C : Type u_1} [Category.{v_1, u_1} C] {n : } {F G : ComposableArrows C (n + 1)} (α : F.obj' 0 G.obj' 0 ) (β : F.δ₀ G.δ₀) (w : CategoryStruct.comp (F.map' 0 1 homMk₁._proof_4 ) (app' β 0 ) = CategoryStruct.comp α (G.map' 0 1 homMk₁._proof_4 )) :
                                                              F G

                                                              Inductive construction of morphisms in ComposableArrows C (n + 1): in order to construct a morphism F ⟶ G, it suffices to provide α : F.obj' 0 ⟶ G.obj' 0 and β : F.δ₀ ⟶ G.δ₀ such that F.map' 0 1 ≫ app' β 0 = α ≫ G.map' 0 1.

                                                              Instances For
                                                                @[simp]
                                                                theorem CategoryTheory.ComposableArrows.homMkSucc_app_zero {C : Type u_1} [Category.{v_1, u_1} C] {n : } {F G : ComposableArrows C (n + 1)} (α : F.obj' 0 G.obj' 0 ) (β : F.δ₀ G.δ₀) (w : CategoryStruct.comp (F.map' 0 1 homMk₁._proof_4 ) (app' β 0 ) = CategoryStruct.comp α (G.map' 0 1 homMk₁._proof_4 ) := by cat_disch) :
                                                                (homMkSucc α β w).app 0 = α
                                                                @[simp]
                                                                theorem CategoryTheory.ComposableArrows.homMkSucc_app_succ {C : Type u_1} [Category.{v_1, u_1} C] {n : } {F G : ComposableArrows C (n + 1)} (α : F.obj' 0 G.obj' 0 ) (β : F.δ₀ G.δ₀) (w : CategoryStruct.comp (F.map' 0 1 homMk₁._proof_4 ) (app' β 0 ) = CategoryStruct.comp α (G.map' 0 1 homMk₁._proof_4 ) := by cat_disch) (i : ) (hi : i + 1 < n + 1 + 1) :
                                                                (homMkSucc α β w).app i + 1, hi = app' β i
                                                                theorem CategoryTheory.ComposableArrows.hom_ext_succ {C : Type u_1} [Category.{v_1, u_1} C] {n : } {F G : ComposableArrows C (n + 1)} {f g : F G} (h₀ : app' f 0 = app' g 0 ) (h₁ : δ₀Functor.map f = δ₀Functor.map g) :
                                                                f = g
                                                                def CategoryTheory.ComposableArrows.isoMkSucc {C : Type u_1} [Category.{v_1, u_1} C] {n : } {F G : ComposableArrows C (n + 1)} (α : F.obj' 0 G.obj' 0 ) (β : F.δ₀ G.δ₀) (w : CategoryStruct.comp (F.map' 0 1 homMk₁._proof_4 ) (app' β.hom 0 ) = CategoryStruct.comp α.hom (G.map' 0 1 homMk₁._proof_4 )) :
                                                                F G

                                                                Inductive construction of isomorphisms in ComposableArrows C (n + 1): in order to construct an isomorphism F ≅ G, it suffices to provide α : F.obj' 0 ≅ G.obj' 0 and β : F.δ₀ ≅ G.δ₀ such that F.map' 0 1 ≫ app' β.hom 0 = α.hom ≫ G.map' 0 1.

                                                                Instances For
                                                                  @[simp]
                                                                  theorem CategoryTheory.ComposableArrows.isoMkSucc_inv {C : Type u_1} [Category.{v_1, u_1} C] {n : } {F G : ComposableArrows C (n + 1)} (α : F.obj' 0 G.obj' 0 ) (β : F.δ₀ G.δ₀) (w : CategoryStruct.comp (F.map' 0 1 homMk₁._proof_4 ) (app' β.hom 0 ) = CategoryStruct.comp α.hom (G.map' 0 1 homMk₁._proof_4 )) :
                                                                  (isoMkSucc α β w).inv = homMkSucc α.inv β.inv
                                                                  @[simp]
                                                                  theorem CategoryTheory.ComposableArrows.isoMkSucc_hom {C : Type u_1} [Category.{v_1, u_1} C] {n : } {F G : ComposableArrows C (n + 1)} (α : F.obj' 0 G.obj' 0 ) (β : F.δ₀ G.δ₀) (w : CategoryStruct.comp (F.map' 0 1 homMk₁._proof_4 ) (app' β.hom 0 ) = CategoryStruct.comp α.hom (G.map' 0 1 homMk₁._proof_4 )) :
                                                                  (isoMkSucc α β w).hom = homMkSucc α.hom β.hom w
                                                                  theorem CategoryTheory.ComposableArrows.ext_succ {C : Type u_1} [Category.{v_1, u_1} C] {n : } {F G : ComposableArrows C (n + 1)} (h₀ : F.obj' 0 = G.obj' 0 ) (h : F.δ₀ = G.δ₀) (w : F.map' 0 1 homMk₁._proof_4 = CategoryStruct.comp (eqToHom h₀) (CategoryStruct.comp (G.map' 0 1 homMk₁._proof_4 ) (eqToHom ))) :
                                                                  F = G
                                                                  theorem CategoryTheory.ComposableArrows.precomp_surjective {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C (n + 1)) :
                                                                  ∃ (F₀ : ComposableArrows C n) (X₀ : C) (f₀ : X₀ F₀.left), F = F₀.precomp f₀
                                                                  theorem CategoryTheory.ComposableArrows.hom_ext₂ {C : Type u_1} [Category.{v_1, u_1} C] {f g : ComposableArrows C 2} {φ φ' : f g} (h₀ : app' φ 0 _proof_237✝ = app' φ' 0 _proof_237✝¹) (h₁ : app' φ 1 _proof_238✝ = app' φ' 1 _proof_238✝¹) (h₂ : app' φ 2 _proof_239✝ = app' φ' 2 _proof_239✝¹) :
                                                                  φ = φ'
                                                                  @[simp]
                                                                  theorem CategoryTheory.ComposableArrows.isoMk₂_hom {C : Type u_1} [Category.{v_1, u_1} C] {f g : ComposableArrows C 2} (app₀ : f.obj' 0 _proof_237✝ g.obj' 0 _proof_237✝¹) (app₁ : f.obj' 1 _proof_238✝ g.obj' 1 _proof_238✝¹) (app₂ : f.obj' 2 _proof_239✝ g.obj' 2 _proof_239✝¹) (w₀ : CategoryStruct.comp (f.map' 0 1 homMk₁._proof_4 _proof_238✝²) app₁.hom = CategoryStruct.comp app₀.hom (g.map' 0 1 homMk₁._proof_4 _proof_238✝³) := by cat_disch) (w₁ : CategoryStruct.comp (f.map' 1 2 _proof_238✝⁴ _proof_239✝²) app₂.hom = CategoryStruct.comp app₁.hom (g.map' 1 2 _proof_238✝⁵ _proof_239✝³) := by cat_disch) :
                                                                  (isoMk₂ app₀ app₁ app₂ w₀ w₁).hom = homMk₂ app₀.hom app₁.hom app₂.hom w₀ w₁
                                                                  @[simp]
                                                                  theorem CategoryTheory.ComposableArrows.isoMk₂_inv {C : Type u_1} [Category.{v_1, u_1} C] {f g : ComposableArrows C 2} (app₀ : f.obj' 0 _proof_237✝ g.obj' 0 _proof_237✝¹) (app₁ : f.obj' 1 _proof_238✝ g.obj' 1 _proof_238✝¹) (app₂ : f.obj' 2 _proof_239✝ g.obj' 2 _proof_239✝¹) (w₀ : CategoryStruct.comp (f.map' 0 1 homMk₁._proof_4 _proof_238✝²) app₁.hom = CategoryStruct.comp app₀.hom (g.map' 0 1 homMk₁._proof_4 _proof_238✝³) := by cat_disch) (w₁ : CategoryStruct.comp (f.map' 1 2 _proof_238✝⁴ _proof_239✝²) app₂.hom = CategoryStruct.comp app₁.hom (g.map' 1 2 _proof_238✝⁵ _proof_239✝³) := by cat_disch) :
                                                                  (isoMk₂ app₀ app₁ app₂ w₀ w₁).inv = homMk₂ app₀.inv app₁.inv app₂.inv
                                                                  theorem CategoryTheory.ComposableArrows.isIso_iff₂ {C : Type u_1} [Category.{v_1, u_1} C] {F G : ComposableArrows C 2} (f : F G) :
                                                                  IsIso f IsIso (f.app 0) IsIso (f.app 1) IsIso (f.app 2)
                                                                  theorem CategoryTheory.ComposableArrows.mk₂_surjective {C : Type u_1} [Category.{v_1, u_1} C] (X : ComposableArrows C 2) :
                                                                  ∃ (X₀ : C) (X₁ : C) (X₂ : C) (f₀ : X₀ X₁) (f₁ : X₁ X₂), X = mk₂ f₀ f₁
                                                                  @[simp]
                                                                  theorem CategoryTheory.ComposableArrows.homMk₃_app_one {C : Type u_1} [Category.{v_1, u_1} C] {f g : ComposableArrows C 3} (app₀ : f.obj' 0 _proof_289✝ g.obj' 0 _proof_289✝¹) (app₁ : f.obj' 1 _proof_290✝ g.obj' 1 _proof_290✝¹) (app₂ : f.obj' 2 _proof_291✝ g.obj' 2 _proof_291✝¹) (app₃ : f.obj' 3 _proof_292✝ g.obj' 3 _proof_292✝¹) (w₀ : CategoryStruct.comp (f.map' 0 1 homMk₁._proof_4 _proof_290✝²) app₁ = CategoryStruct.comp app₀ (g.map' 0 1 homMk₁._proof_4 _proof_290✝³) := by cat_disch) (w₁ : CategoryStruct.comp (f.map' 1 2 _proof_238✝ _proof_291✝²) app₂ = CategoryStruct.comp app₁ (g.map' 1 2 _proof_238✝¹ _proof_291✝³) := by cat_disch) (w₂ : CategoryStruct.comp (f.map' 2 3 _proof_291✝⁴ _proof_292✝²) app₃ = CategoryStruct.comp app₂ (g.map' 2 3 _proof_291✝⁵ _proof_292✝³) := by cat_disch) :
                                                                  (homMk₃ app₀ app₁ app₂ app₃ w₀ w₁ w₂).app 1 = app₁
                                                                  theorem CategoryTheory.ComposableArrows.hom_ext₃ {C : Type u_1} [Category.{v_1, u_1} C] {f g : ComposableArrows C 3} {φ φ' : f g} (h₀ : app' φ 0 _proof_289✝ = app' φ' 0 _proof_289✝¹) (h₁ : app' φ 1 _proof_290✝ = app' φ' 1 _proof_290✝¹) (h₂ : app' φ 2 _proof_291✝ = app' φ' 2 _proof_291✝¹) (h₃ : app' φ 3 _proof_292✝ = app' φ' 3 _proof_292✝¹) :
                                                                  φ = φ'
                                                                  theorem CategoryTheory.ComposableArrows.mk₃_surjective {C : Type u_1} [Category.{v_1, u_1} C] (X : ComposableArrows C 3) :
                                                                  ∃ (X₀ : C) (X₁ : C) (X₂ : C) (X₃ : C) (f₀ : X₀ X₁) (f₁ : X₁ X₂) (f₂ : X₂ X₃), X = mk₃ f₀ f₁ f₂
                                                                  @[simp]
                                                                  theorem CategoryTheory.ComposableArrows.homMk₄_app_zero {C : Type u_1} [Category.{v_1, u_1} C] {f g : ComposableArrows C 4} (app₀ : f.obj' 0 _proof_353✝ g.obj' 0 _proof_353✝¹) (app₁ : f.obj' 1 _proof_354✝ g.obj' 1 _proof_354✝¹) (app₂ : f.obj' 2 _proof_355✝ g.obj' 2 _proof_355✝¹) (app₃ : f.obj' 3 _proof_356✝ g.obj' 3 _proof_356✝¹) (app₄ : f.obj' 4 _proof_357✝ g.obj' 4 _proof_357✝¹) (w₀ : CategoryStruct.comp (f.map' 0 1 homMk₁._proof_4 _proof_354✝²) app₁ = CategoryStruct.comp app₀ (g.map' 0 1 homMk₁._proof_4 _proof_354✝³) := by cat_disch) (w₁ : CategoryStruct.comp (f.map' 1 2 _proof_238✝ _proof_355✝²) app₂ = CategoryStruct.comp app₁ (g.map' 1 2 _proof_238✝¹ _proof_355✝³) := by cat_disch) (w₂ : CategoryStruct.comp (f.map' 2 3 _proof_291✝ _proof_356✝²) app₃ = CategoryStruct.comp app₂ (g.map' 2 3 _proof_291✝¹ _proof_356✝³) := by cat_disch) (w₃ : CategoryStruct.comp (f.map' 3 4 _proof_356✝⁴ _proof_357✝²) app₄ = CategoryStruct.comp app₃ (g.map' 3 4 _proof_356✝⁵ _proof_357✝³) := by cat_disch) :
                                                                  (homMk₄ app₀ app₁ app₂ app₃ app₄ w₀ w₁ w₂ w₃).app 0 = app₀
                                                                  @[simp]
                                                                  theorem CategoryTheory.ComposableArrows.homMk₄_app_one {C : Type u_1} [Category.{v_1, u_1} C] {f g : ComposableArrows C 4} (app₀ : f.obj' 0 _proof_353✝ g.obj' 0 _proof_353✝¹) (app₁ : f.obj' 1 _proof_354✝ g.obj' 1 _proof_354✝¹) (app₂ : f.obj' 2 _proof_355✝ g.obj' 2 _proof_355✝¹) (app₃ : f.obj' 3 _proof_356✝ g.obj' 3 _proof_356✝¹) (app₄ : f.obj' 4 _proof_357✝ g.obj' 4 _proof_357✝¹) (w₀ : CategoryStruct.comp (f.map' 0 1 homMk₁._proof_4 _proof_354✝²) app₁ = CategoryStruct.comp app₀ (g.map' 0 1 homMk₁._proof_4 _proof_354✝³) := by cat_disch) (w₁ : CategoryStruct.comp (f.map' 1 2 _proof_238✝ _proof_355✝²) app₂ = CategoryStruct.comp app₁ (g.map' 1 2 _proof_238✝¹ _proof_355✝³) := by cat_disch) (w₂ : CategoryStruct.comp (f.map' 2 3 _proof_291✝ _proof_356✝²) app₃ = CategoryStruct.comp app₂ (g.map' 2 3 _proof_291✝¹ _proof_356✝³) := by cat_disch) (w₃ : CategoryStruct.comp (f.map' 3 4 _proof_356✝⁴ _proof_357✝²) app₄ = CategoryStruct.comp app₃ (g.map' 3 4 _proof_356✝⁵ _proof_357✝³) := by cat_disch) :
                                                                  (homMk₄ app₀ app₁ app₂ app₃ app₄ w₀ w₁ w₂ w₃).app 1 = app₁
                                                                  @[simp]
                                                                  theorem CategoryTheory.ComposableArrows.homMk₄_app_two {C : Type u_1} [Category.{v_1, u_1} C] {f g : ComposableArrows C 4} (app₀ : f.obj' 0 _proof_353✝ g.obj' 0 _proof_353✝¹) (app₁ : f.obj' 1 _proof_354✝ g.obj' 1 _proof_354✝¹) (app₂ : f.obj' 2 _proof_355✝ g.obj' 2 _proof_355✝¹) (app₃ : f.obj' 3 _proof_356✝ g.obj' 3 _proof_356✝¹) (app₄ : f.obj' 4 _proof_357✝ g.obj' 4 _proof_357✝¹) (w₀ : CategoryStruct.comp (f.map' 0 1 homMk₁._proof_4 _proof_354✝²) app₁ = CategoryStruct.comp app₀ (g.map' 0 1 homMk₁._proof_4 _proof_354✝³) := by cat_disch) (w₁ : CategoryStruct.comp (f.map' 1 2 _proof_238✝ _proof_355✝²) app₂ = CategoryStruct.comp app₁ (g.map' 1 2 _proof_238✝¹ _proof_355✝³) := by cat_disch) (w₂ : CategoryStruct.comp (f.map' 2 3 _proof_291✝ _proof_356✝²) app₃ = CategoryStruct.comp app₂ (g.map' 2 3 _proof_291✝¹ _proof_356✝³) := by cat_disch) (w₃ : CategoryStruct.comp (f.map' 3 4 _proof_356✝⁴ _proof_357✝²) app₄ = CategoryStruct.comp app₃ (g.map' 3 4 _proof_356✝⁵ _proof_357✝³) := by cat_disch) :
                                                                  (homMk₄ app₀ app₁ app₂ app₃ app₄ w₀ w₁ w₂ w₃).app 2, homMk₄._proof_3 = app₂
                                                                  @[simp]
                                                                  theorem CategoryTheory.ComposableArrows.homMk₄_app_three {C : Type u_1} [Category.{v_1, u_1} C] {f g : ComposableArrows C 4} (app₀ : f.obj' 0 _proof_353✝ g.obj' 0 _proof_353✝¹) (app₁ : f.obj' 1 _proof_354✝ g.obj' 1 _proof_354✝¹) (app₂ : f.obj' 2 _proof_355✝ g.obj' 2 _proof_355✝¹) (app₃ : f.obj' 3 _proof_356✝ g.obj' 3 _proof_356✝¹) (app₄ : f.obj' 4 _proof_357✝ g.obj' 4 _proof_357✝¹) (w₀ : CategoryStruct.comp (f.map' 0 1 homMk₁._proof_4 _proof_354✝²) app₁ = CategoryStruct.comp app₀ (g.map' 0 1 homMk₁._proof_4 _proof_354✝³) := by cat_disch) (w₁ : CategoryStruct.comp (f.map' 1 2 _proof_238✝ _proof_355✝²) app₂ = CategoryStruct.comp app₁ (g.map' 1 2 _proof_238✝¹ _proof_355✝³) := by cat_disch) (w₂ : CategoryStruct.comp (f.map' 2 3 _proof_291✝ _proof_356✝²) app₃ = CategoryStruct.comp app₂ (g.map' 2 3 _proof_291✝¹ _proof_356✝³) := by cat_disch) (w₃ : CategoryStruct.comp (f.map' 3 4 _proof_356✝⁴ _proof_357✝²) app₄ = CategoryStruct.comp app₃ (g.map' 3 4 _proof_356✝⁵ _proof_357✝³) := by cat_disch) :
                                                                  (homMk₄ app₀ app₁ app₂ app₃ app₄ w₀ w₁ w₂ w₃).app 3, homMk₄._proof_4 = app₃
                                                                  @[simp]
                                                                  theorem CategoryTheory.ComposableArrows.homMk₄_app_four {C : Type u_1} [Category.{v_1, u_1} C] {f g : ComposableArrows C 4} (app₀ : f.obj' 0 _proof_353✝ g.obj' 0 _proof_353✝¹) (app₁ : f.obj' 1 _proof_354✝ g.obj' 1 _proof_354✝¹) (app₂ : f.obj' 2 _proof_355✝ g.obj' 2 _proof_355✝¹) (app₃ : f.obj' 3 _proof_356✝ g.obj' 3 _proof_356✝¹) (app₄ : f.obj' 4 _proof_357✝ g.obj' 4 _proof_357✝¹) (w₀ : CategoryStruct.comp (f.map' 0 1 homMk₁._proof_4 _proof_354✝²) app₁ = CategoryStruct.comp app₀ (g.map' 0 1 homMk₁._proof_4 _proof_354✝³) := by cat_disch) (w₁ : CategoryStruct.comp (f.map' 1 2 _proof_238✝ _proof_355✝²) app₂ = CategoryStruct.comp app₁ (g.map' 1 2 _proof_238✝¹ _proof_355✝³) := by cat_disch) (w₂ : CategoryStruct.comp (f.map' 2 3 _proof_291✝ _proof_356✝²) app₃ = CategoryStruct.comp app₂ (g.map' 2 3 _proof_291✝¹ _proof_356✝³) := by cat_disch) (w₃ : CategoryStruct.comp (f.map' 3 4 _proof_356✝⁴ _proof_357✝²) app₄ = CategoryStruct.comp app₃ (g.map' 3 4 _proof_356✝⁵ _proof_357✝³) := by cat_disch) :
                                                                  (homMk₄ app₀ app₁ app₂ app₃ app₄ w₀ w₁ w₂ w₃).app 4, homMk₄._proof_5 = app₄
                                                                  theorem CategoryTheory.ComposableArrows.hom_ext₄ {C : Type u_1} [Category.{v_1, u_1} C] {f g : ComposableArrows C 4} {φ φ' : f g} (h₀ : app' φ 0 _proof_353✝ = app' φ' 0 _proof_353✝¹) (h₁ : app' φ 1 _proof_354✝ = app' φ' 1 _proof_354✝¹) (h₂ : app' φ 2 _proof_355✝ = app' φ' 2 _proof_355✝¹) (h₃ : app' φ 3 _proof_356✝ = app' φ' 3 _proof_356✝¹) (h₄ : app' φ 4 _proof_357✝ = app' φ' 4 _proof_357✝¹) :
                                                                  φ = φ'
                                                                  theorem CategoryTheory.ComposableArrows.map'_inv_eq_inv_map' {C : Type u_1} [Category.{v_1, u_1} C] {n m : } (h : n + 1 m) {f g : ComposableArrows C m} (app : f.obj' n g.obj' n ) (app' : f.obj' (n + 1) h g.obj' (n + 1) h) (w : CategoryStruct.comp (f.map' n (n + 1) h) app'.hom = CategoryStruct.comp app.hom (g.map' n (n + 1) h)) :
                                                                  CategoryStruct.comp (g.map' n (n + 1) h) app'.inv = CategoryStruct.comp app.inv (f.map' n (n + 1) h)
                                                                  theorem CategoryTheory.ComposableArrows.mk₄_surjective {C : Type u_1} [Category.{v_1, u_1} C] (X : ComposableArrows C 4) :
                                                                  ∃ (X₀ : C) (X₁ : C) (X₂ : C) (X₃ : C) (X₄ : C) (f₀ : X₀ X₁) (f₁ : X₁ X₂) (f₂ : X₂ X₃) (f₃ : X₃ X₄), X = mk₄ f₀ f₁ f₂ f₃
                                                                  @[simp]
                                                                  theorem CategoryTheory.ComposableArrows.homMk₅_app_zero {C : Type u_1} [Category.{v_1, u_1} C] {f g : ComposableArrows C 5} (app₀ : f.obj' 0 _proof_441✝ g.obj' 0 _proof_441✝¹) (app₁ : f.obj' 1 _proof_442✝ g.obj' 1 _proof_442✝¹) (app₂ : f.obj' 2 _proof_443✝ g.obj' 2 _proof_443✝¹) (app₃ : f.obj' 3 _proof_444✝ g.obj' 3 _proof_444✝¹) (app₄ : f.obj' 4 _proof_445✝ g.obj' 4 _proof_445✝¹) (app₅ : f.obj' 5 _proof_446✝ g.obj' 5 _proof_446✝¹) (w₀ : CategoryStruct.comp (f.map' 0 1 homMk₁._proof_4 _proof_442✝²) app₁ = CategoryStruct.comp app₀ (g.map' 0 1 homMk₁._proof_4 _proof_442✝³) := by cat_disch) (w₁ : CategoryStruct.comp (f.map' 1 2 _proof_238✝ _proof_443✝²) app₂ = CategoryStruct.comp app₁ (g.map' 1 2 _proof_238✝¹ _proof_443✝³) := by cat_disch) (w₂ : CategoryStruct.comp (f.map' 2 3 _proof_291✝ _proof_444✝²) app₃ = CategoryStruct.comp app₂ (g.map' 2 3 _proof_291✝¹ _proof_444✝³) := by cat_disch) (w₃ : CategoryStruct.comp (f.map' 3 4 _proof_356✝ _proof_445✝²) app₄ = CategoryStruct.comp app₃ (g.map' 3 4 _proof_356✝¹ _proof_445✝³) := by cat_disch) (w₄ : CategoryStruct.comp (f.map' 4 5 _proof_445✝⁴ _proof_446✝²) app₅ = CategoryStruct.comp app₄ (g.map' 4 5 _proof_445✝⁵ _proof_446✝³) := by cat_disch) :
                                                                  (homMk₅ app₀ app₁ app₂ app₃ app₄ app₅ w₀ w₁ w₂ w₃ w₄).app 0 = app₀
                                                                  @[simp]
                                                                  theorem CategoryTheory.ComposableArrows.homMk₅_app_one {C : Type u_1} [Category.{v_1, u_1} C] {f g : ComposableArrows C 5} (app₀ : f.obj' 0 _proof_441✝ g.obj' 0 _proof_441✝¹) (app₁ : f.obj' 1 _proof_442✝ g.obj' 1 _proof_442✝¹) (app₂ : f.obj' 2 _proof_443✝ g.obj' 2 _proof_443✝¹) (app₃ : f.obj' 3 _proof_444✝ g.obj' 3 _proof_444✝¹) (app₄ : f.obj' 4 _proof_445✝ g.obj' 4 _proof_445✝¹) (app₅ : f.obj' 5 _proof_446✝ g.obj' 5 _proof_446✝¹) (w₀ : CategoryStruct.comp (f.map' 0 1 homMk₁._proof_4 _proof_442✝²) app₁ = CategoryStruct.comp app₀ (g.map' 0 1 homMk₁._proof_4 _proof_442✝³) := by cat_disch) (w₁ : CategoryStruct.comp (f.map' 1 2 _proof_238✝ _proof_443✝²) app₂ = CategoryStruct.comp app₁ (g.map' 1 2 _proof_238✝¹ _proof_443✝³) := by cat_disch) (w₂ : CategoryStruct.comp (f.map' 2 3 _proof_291✝ _proof_444✝²) app₃ = CategoryStruct.comp app₂ (g.map' 2 3 _proof_291✝¹ _proof_444✝³) := by cat_disch) (w₃ : CategoryStruct.comp (f.map' 3 4 _proof_356✝ _proof_445✝²) app₄ = CategoryStruct.comp app₃ (g.map' 3 4 _proof_356✝¹ _proof_445✝³) := by cat_disch) (w₄ : CategoryStruct.comp (f.map' 4 5 _proof_445✝⁴ _proof_446✝²) app₅ = CategoryStruct.comp app₄ (g.map' 4 5 _proof_445✝⁵ _proof_446✝³) := by cat_disch) :
                                                                  (homMk₅ app₀ app₁ app₂ app₃ app₄ app₅ w₀ w₁ w₂ w₃ w₄).app 1 = app₁
                                                                  @[simp]
                                                                  theorem CategoryTheory.ComposableArrows.homMk₅_app_two {C : Type u_1} [Category.{v_1, u_1} C] {f g : ComposableArrows C 5} (app₀ : f.obj' 0 _proof_441✝ g.obj' 0 _proof_441✝¹) (app₁ : f.obj' 1 _proof_442✝ g.obj' 1 _proof_442✝¹) (app₂ : f.obj' 2 _proof_443✝ g.obj' 2 _proof_443✝¹) (app₃ : f.obj' 3 _proof_444✝ g.obj' 3 _proof_444✝¹) (app₄ : f.obj' 4 _proof_445✝ g.obj' 4 _proof_445✝¹) (app₅ : f.obj' 5 _proof_446✝ g.obj' 5 _proof_446✝¹) (w₀ : CategoryStruct.comp (f.map' 0 1 homMk₁._proof_4 _proof_442✝²) app₁ = CategoryStruct.comp app₀ (g.map' 0 1 homMk₁._proof_4 _proof_442✝³) := by cat_disch) (w₁ : CategoryStruct.comp (f.map' 1 2 _proof_238✝ _proof_443✝²) app₂ = CategoryStruct.comp app₁ (g.map' 1 2 _proof_238✝¹ _proof_443✝³) := by cat_disch) (w₂ : CategoryStruct.comp (f.map' 2 3 _proof_291✝ _proof_444✝²) app₃ = CategoryStruct.comp app₂ (g.map' 2 3 _proof_291✝¹ _proof_444✝³) := by cat_disch) (w₃ : CategoryStruct.comp (f.map' 3 4 _proof_356✝ _proof_445✝²) app₄ = CategoryStruct.comp app₃ (g.map' 3 4 _proof_356✝¹ _proof_445✝³) := by cat_disch) (w₄ : CategoryStruct.comp (f.map' 4 5 _proof_445✝⁴ _proof_446✝²) app₅ = CategoryStruct.comp app₄ (g.map' 4 5 _proof_445✝⁵ _proof_446✝³) := by cat_disch) :
                                                                  (homMk₅ app₀ app₁ app₂ app₃ app₄ app₅ w₀ w₁ w₂ w₃ w₄).app 2, homMk₅._proof_3 = app₂
                                                                  @[simp]
                                                                  theorem CategoryTheory.ComposableArrows.homMk₅_app_three {C : Type u_1} [Category.{v_1, u_1} C] {f g : ComposableArrows C 5} (app₀ : f.obj' 0 _proof_441✝ g.obj' 0 _proof_441✝¹) (app₁ : f.obj' 1 _proof_442✝ g.obj' 1 _proof_442✝¹) (app₂ : f.obj' 2 _proof_443✝ g.obj' 2 _proof_443✝¹) (app₃ : f.obj' 3 _proof_444✝ g.obj' 3 _proof_444✝¹) (app₄ : f.obj' 4 _proof_445✝ g.obj' 4 _proof_445✝¹) (app₅ : f.obj' 5 _proof_446✝ g.obj' 5 _proof_446✝¹) (w₀ : CategoryStruct.comp (f.map' 0 1 homMk₁._proof_4 _proof_442✝²) app₁ = CategoryStruct.comp app₀ (g.map' 0 1 homMk₁._proof_4 _proof_442✝³) := by cat_disch) (w₁ : CategoryStruct.comp (f.map' 1 2 _proof_238✝ _proof_443✝²) app₂ = CategoryStruct.comp app₁ (g.map' 1 2 _proof_238✝¹ _proof_443✝³) := by cat_disch) (w₂ : CategoryStruct.comp (f.map' 2 3 _proof_291✝ _proof_444✝²) app₃ = CategoryStruct.comp app₂ (g.map' 2 3 _proof_291✝¹ _proof_444✝³) := by cat_disch) (w₃ : CategoryStruct.comp (f.map' 3 4 _proof_356✝ _proof_445✝²) app₄ = CategoryStruct.comp app₃ (g.map' 3 4 _proof_356✝¹ _proof_445✝³) := by cat_disch) (w₄ : CategoryStruct.comp (f.map' 4 5 _proof_445✝⁴ _proof_446✝²) app₅ = CategoryStruct.comp app₄ (g.map' 4 5 _proof_445✝⁵ _proof_446✝³) := by cat_disch) :
                                                                  (homMk₅ app₀ app₁ app₂ app₃ app₄ app₅ w₀ w₁ w₂ w₃ w₄).app 3, homMk₅._proof_4 = app₃
                                                                  @[simp]
                                                                  theorem CategoryTheory.ComposableArrows.homMk₅_app_four {C : Type u_1} [Category.{v_1, u_1} C] {f g : ComposableArrows C 5} (app₀ : f.obj' 0 _proof_441✝ g.obj' 0 _proof_441✝¹) (app₁ : f.obj' 1 _proof_442✝ g.obj' 1 _proof_442✝¹) (app₂ : f.obj' 2 _proof_443✝ g.obj' 2 _proof_443✝¹) (app₃ : f.obj' 3 _proof_444✝ g.obj' 3 _proof_444✝¹) (app₄ : f.obj' 4 _proof_445✝ g.obj' 4 _proof_445✝¹) (app₅ : f.obj' 5 _proof_446✝ g.obj' 5 _proof_446✝¹) (w₀ : CategoryStruct.comp (f.map' 0 1 homMk₁._proof_4 _proof_442✝²) app₁ = CategoryStruct.comp app₀ (g.map' 0 1 homMk₁._proof_4 _proof_442✝³) := by cat_disch) (w₁ : CategoryStruct.comp (f.map' 1 2 _proof_238✝ _proof_443✝²) app₂ = CategoryStruct.comp app₁ (g.map' 1 2 _proof_238✝¹ _proof_443✝³) := by cat_disch) (w₂ : CategoryStruct.comp (f.map' 2 3 _proof_291✝ _proof_444✝²) app₃ = CategoryStruct.comp app₂ (g.map' 2 3 _proof_291✝¹ _proof_444✝³) := by cat_disch) (w₃ : CategoryStruct.comp (f.map' 3 4 _proof_356✝ _proof_445✝²) app₄ = CategoryStruct.comp app₃ (g.map' 3 4 _proof_356✝¹ _proof_445✝³) := by cat_disch) (w₄ : CategoryStruct.comp (f.map' 4 5 _proof_445✝⁴ _proof_446✝²) app₅ = CategoryStruct.comp app₄ (g.map' 4 5 _proof_445✝⁵ _proof_446✝³) := by cat_disch) :
                                                                  (homMk₅ app₀ app₁ app₂ app₃ app₄ app₅ w₀ w₁ w₂ w₃ w₄).app 4, homMk₅._proof_5 = app₄
                                                                  @[simp]
                                                                  theorem CategoryTheory.ComposableArrows.homMk₅_app_five {C : Type u_1} [Category.{v_1, u_1} C] {f g : ComposableArrows C 5} (app₀ : f.obj' 0 _proof_441✝ g.obj' 0 _proof_441✝¹) (app₁ : f.obj' 1 _proof_442✝ g.obj' 1 _proof_442✝¹) (app₂ : f.obj' 2 _proof_443✝ g.obj' 2 _proof_443✝¹) (app₃ : f.obj' 3 _proof_444✝ g.obj' 3 _proof_444✝¹) (app₄ : f.obj' 4 _proof_445✝ g.obj' 4 _proof_445✝¹) (app₅ : f.obj' 5 _proof_446✝ g.obj' 5 _proof_446✝¹) (w₀ : CategoryStruct.comp (f.map' 0 1 homMk₁._proof_4 _proof_442✝²) app₁ = CategoryStruct.comp app₀ (g.map' 0 1 homMk₁._proof_4 _proof_442✝³) := by cat_disch) (w₁ : CategoryStruct.comp (f.map' 1 2 _proof_238✝ _proof_443✝²) app₂ = CategoryStruct.comp app₁ (g.map' 1 2 _proof_238✝¹ _proof_443✝³) := by cat_disch) (w₂ : CategoryStruct.comp (f.map' 2 3 _proof_291✝ _proof_444✝²) app₃ = CategoryStruct.comp app₂ (g.map' 2 3 _proof_291✝¹ _proof_444✝³) := by cat_disch) (w₃ : CategoryStruct.comp (f.map' 3 4 _proof_356✝ _proof_445✝²) app₄ = CategoryStruct.comp app₃ (g.map' 3 4 _proof_356✝¹ _proof_445✝³) := by cat_disch) (w₄ : CategoryStruct.comp (f.map' 4 5 _proof_445✝⁴ _proof_446✝²) app₅ = CategoryStruct.comp app₄ (g.map' 4 5 _proof_445✝⁵ _proof_446✝³) := by cat_disch) :
                                                                  (homMk₅ app₀ app₁ app₂ app₃ app₄ app₅ w₀ w₁ w₂ w₃ w₄).app 5, homMk₅._proof_6 = app₅
                                                                  theorem CategoryTheory.ComposableArrows.hom_ext₅ {C : Type u_1} [Category.{v_1, u_1} C] {f g : ComposableArrows C 5} {φ φ' : f g} (h₀ : app' φ 0 _proof_441✝ = app' φ' 0 _proof_441✝¹) (h₁ : app' φ 1 _proof_442✝ = app' φ' 1 _proof_442✝¹) (h₂ : app' φ 2 _proof_443✝ = app' φ' 2 _proof_443✝¹) (h₃ : app' φ 3 _proof_444✝ = app' φ' 3 _proof_444✝¹) (h₄ : app' φ 4 _proof_445✝ = app' φ' 4 _proof_445✝¹) (h₅ : app' φ 5 _proof_446✝ = app' φ' 5 _proof_446✝¹) :
                                                                  φ = φ'
                                                                  @[simp]
                                                                  @[simp]
                                                                  theorem CategoryTheory.ComposableArrows.mk₅_surjective {C : Type u_1} [Category.{v_1, u_1} C] (X : ComposableArrows C 5) :
                                                                  ∃ (X₀ : C) (X₁ : C) (X₂ : C) (X₃ : C) (X₄ : C) (X₅ : C) (f₀ : X₀ X₁) (f₁ : X₁ X₂) (f₂ : X₂ X₃) (f₃ : X₃ X₄) (f₄ : X₄ X₅), X = mk₅ f₀ f₁ f₂ f₃ f₄
                                                                  def CategoryTheory.ComposableArrows.arrow {C : Type u_1} [Category.{v_1, u_1} C] {n : } (F : ComposableArrows C n) (i : ) (hi : i < n := by valid) :

                                                                  The ith arrow of F : ComposableArrows C n.

                                                                  Instances For
                                                                    theorem CategoryTheory.ComposableArrows.mkOfObjOfMapSucc_exists {C : Type u_1} [Category.{v_1, u_1} C] {n : } (obj : Fin (n + 1)C) (mapSucc : (i : Fin n) → obj i.castSucc obj i.succ) :
                                                                    ∃ (F : ComposableArrows C n) (e : (i : Fin (n + 1)) → F.obj i obj i), ∀ (i : ) (hi : i < n), mapSucc i, hi = CategoryStruct.comp (e i, ).inv (CategoryStruct.comp (F.map' i (i + 1) hi) (e i + 1, ).hom)
                                                                    noncomputable def CategoryTheory.ComposableArrows.mkOfObjOfMapSucc {C : Type u_1} [Category.{v_1, u_1} C] {n : } (obj : Fin (n + 1)C) (mapSucc : (i : Fin n) → obj i.castSucc obj i.succ) :

                                                                    Given obj : Fin (n + 1) → C and mapSucc i : obj i.castSucc ⟶ obj i.succ for all i : Fin n, this is F : ComposableArrows C n such that F.obj i is definitionally equal to obj i and such that F.map' i (i + 1) = mapSucc ⟨i, hi⟩.

                                                                    Instances For
                                                                      @[simp]
                                                                      theorem CategoryTheory.ComposableArrows.mkOfObjOfMapSucc_obj {C : Type u_1} [Category.{v_1, u_1} C] {n : } (obj : Fin (n + 1)C) (mapSucc : (i : Fin n) → obj i.castSucc obj i.succ) (i : Fin (n + 1)) :
                                                                      (mkOfObjOfMapSucc obj mapSucc).obj i = obj i
                                                                      theorem CategoryTheory.ComposableArrows.mkOfObjOfMapSucc_map_succ {C : Type u_1} [Category.{v_1, u_1} C] {n : } (obj : Fin (n + 1)C) (mapSucc : (i : Fin n) → obj i.castSucc obj i.succ) (i : ) (hi : i < n := by valid) :
                                                                      (mkOfObjOfMapSucc obj mapSucc).map' i (i + 1) hi = mapSucc i, hi
                                                                      theorem CategoryTheory.ComposableArrows.mkOfObjOfMapSucc_arrow {C : Type u_1} [Category.{v_1, u_1} C] {n : } (obj : Fin (n + 1)C) (mapSucc : (i : Fin n) → obj i.castSucc obj i.succ) (i : ) (hi : i < n := by valid) :
                                                                      (mkOfObjOfMapSucc obj mapSucc).arrow i hi = mk₁ (mapSucc i, hi)

                                                                      The equivalence (ComposableArrows C n)ᵒᵖ ≌ ComposableArrows Cᵒᵖ n obtained by reversing the arrows.

                                                                      Instances For
                                                                        @[simp]
                                                                        theorem CategoryTheory.ComposableArrows.opEquivalence_functor_obj_obj (C : Type u_1) [Category.{v_1, u_1} C] (n : ) (X : (Functor (Fin (n + 1)) C)ᵒᵖ) (X✝ : Fin (n + 1)) :
                                                                        ((opEquivalence C n).functor.obj X).obj X✝ = Opposite.op ((Opposite.unop X).obj X✝.rev)
                                                                        @[simp]
                                                                        theorem CategoryTheory.ComposableArrows.opEquivalence_functor_obj_map (C : Type u_1) [Category.{v_1, u_1} C] (n : ) (X : (Functor (Fin (n + 1)) C)ᵒᵖ) {X✝ Y✝ : Fin (n + 1)} (f : X✝ Y✝) :
                                                                        ((opEquivalence C n).functor.obj X).map f = ((Opposite.unop X).map (.functor.map (homOfLE ))).op
                                                                        @[simp]
                                                                        theorem CategoryTheory.ComposableArrows.opEquivalence_functor_map_app (C : Type u_1) [Category.{v_1, u_1} C] (n : ) {X✝ Y✝ : (Functor (Fin (n + 1)) C)ᵒᵖ} (f : X✝ Y✝) (x✝ : Fin (n + 1)) :
                                                                        ((opEquivalence C n).functor.map f).app x✝ = (f.unop.app x✝.rev).op

                                                                        The functor ComposableArrows C n ⥤ ComposableArrows D n obtained by postcomposition with a functor C ⥤ D.

                                                                        Instances For
                                                                          @[simp]
                                                                          theorem CategoryTheory.Functor.mapComposableArrows_map_app {C : Type u_1} [Category.{v_1, u_1} C] {D : Type u_2} [Category.{v_2, u_2} D] (G : Functor C D) (n : ) {X✝ Y✝ : Functor (Fin (n + 1)) C} (α : X✝ Y✝) (X : Fin (n + 1)) :
                                                                          ((G.mapComposableArrows n).map α).app X = G.map (α.app X)
                                                                          @[simp]
                                                                          theorem CategoryTheory.Functor.mapComposableArrows_obj_obj {C : Type u_1} [Category.{v_1, u_1} C] {D : Type u_2} [Category.{v_2, u_2} D] (G : Functor C D) (n : ) (F : Functor (Fin (n + 1)) C) (X : Fin (n + 1)) :
                                                                          ((G.mapComposableArrows n).obj F).obj X = G.obj (F.obj X)
                                                                          @[simp]
                                                                          theorem CategoryTheory.Functor.mapComposableArrows_obj_map {C : Type u_1} [Category.{v_1, u_1} C] {D : Type u_2} [Category.{v_2, u_2} D] (G : Functor C D) (n : ) (F : Functor (Fin (n + 1)) C) {X✝ Y✝ : Fin (n + 1)} (f : X✝ Y✝) :
                                                                          ((G.mapComposableArrows n).obj F).map f = G.map (F.map f)

                                                                          The isomorphism between (G.mapComposableArrows 1).obj (.mk₁ f) and .mk₁ (G.map f).

                                                                          Instances For
                                                                            @[simp]
                                                                            theorem CategoryTheory.Functor.mapComposableArrowsObjMk₁Iso_hom_app {C : Type u_1} [Category.{v_1, u_1} C] {D : Type u_2} [Category.{v_2, u_2} D] (G : Functor C D) {X Y : C} (f : X Y) (i : Fin (1 + 1)) :
                                                                            (G.mapComposableArrowsObjMk₁Iso f).hom.app i = match i with | 0, isLt => CategoryStruct.id (G.obj X) | 1, isLt => CategoryStruct.id (G.obj Y)
                                                                            @[simp]
                                                                            theorem CategoryTheory.Functor.mapComposableArrowsObjMk₁Iso_inv_app {C : Type u_1} [Category.{v_1, u_1} C] {D : Type u_2} [Category.{v_2, u_2} D] (G : Functor C D) {X Y : C} (f : X Y) (i : Fin (1 + 1)) :
                                                                            (G.mapComposableArrowsObjMk₁Iso f).inv.app i = match i with | 0, isLt => CategoryStruct.id (G.obj X) | 1, isLt => CategoryStruct.id (G.obj Y)

                                                                            The isomorphism between (G.mapComposableArrows 2).obj (.mk₂ f g) and .mk₂ (G.map f) (G.map g).

                                                                            Instances For
                                                                              @[simp]
                                                                              theorem CategoryTheory.Functor.mapComposableArrowsObjMk₂Iso_inv_app {C : Type u_1} [Category.{v_1, u_1} C] {D : Type u_2} [Category.{v_2, u_2} D] (G : Functor C D) {X Y Z : C} (f : X Y) (g : Y Z) (i : Fin (1 + 1 + 1)) :
                                                                              (G.mapComposableArrowsObjMk₂Iso f g).inv.app i = match i with | 0, isLt => CategoryStruct.id (G.obj X) | i.succ, hi => match i, with | 0, isLt => CategoryStruct.id (G.obj Y) | 1, isLt => CategoryStruct.id (G.obj Z)
                                                                              @[simp]
                                                                              theorem CategoryTheory.Functor.mapComposableArrowsObjMk₂Iso_hom_app {C : Type u_1} [Category.{v_1, u_1} C] {D : Type u_2} [Category.{v_2, u_2} D] (G : Functor C D) {X Y Z : C} (f : X Y) (g : Y Z) (i : Fin (1 + 1 + 1)) :
                                                                              (G.mapComposableArrowsObjMk₂Iso f g).hom.app i = match i with | 0, isLt => CategoryStruct.id (G.obj X) | i.succ, hi => match i, with | 0, isLt => CategoryStruct.id (G.obj Y) | 1, isLt => CategoryStruct.id (G.obj Z)