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 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.

Equations
Instances For

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

    Equations
    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.

      Equations
      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.

        Equations
        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.

          Equations
          Instances For
            @[reducible, inline]

            The rightmost object of F : ComposableArrows C n.

            Equations
            Instances For
              @[reducible, inline]

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

              Equations
              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.

                Equations
                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₁.

                  Equations
                  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.

                    Equations
                    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.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        @[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✝
                        @[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✝
                        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.

                        Equations
                        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.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          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

                            Constructor for morphisms in ComposableArrows C 0.

                            Equations
                            Instances For
                              @[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
                              @[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

                              Constructor for morphisms in ComposableArrows C 1.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                @[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

                                Constructor for isomorphisms in ComposableArrows C 1.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  @[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.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.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  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.

                                    Equations
                                    Instances For
                                      @[simp]
                                      @[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.

                                      Equations
                                      Instances For
                                        @[simp]
                                        @[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)

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

                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For
                                          @[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✝
                                          @[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✝
                                          def 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.

                                          Equations
                                          Instances For
                                            def 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.

                                            Equations
                                            Instances For
                                              def 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.

                                              Equations
                                              Instances For
                                                def 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.

                                                Equations
                                                Instances For

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

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

                                                  Equations
                                                  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)

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

                                                    Equations
                                                    • One or more equations did not get rendered due to their size.
                                                    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)

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

                                                      Equations
                                                      Instances For
                                                        @[simp]
                                                        theorem Fin.succFunctor_map (n : ) {x✝ x✝¹ : Fin n} (hij : x✝ x✝¹) :
                                                        @[simp]
                                                        theorem Fin.succFunctor_obj (n : ) (i : Fin n) :
                                                        @[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)) :
                                                        @[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✝) :
                                                        @[reducible, inline]

                                                        The ComposableArrows C n obtained by forgetting the first arrow.

                                                        Equations
                                                        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

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

                                                          Equations
                                                          Instances For
                                                            @[simp]
                                                            theorem Fin.castSuccFunctor_map (n : ) {X✝ Y✝ : Fin n} (hij : X✝ Y✝) :
                                                            (castSuccFunctor n).map hij = hij
                                                            @[simp]
                                                            @[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✝) :
                                                            @[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)) :
                                                            @[reducible, inline]

                                                            The ComposableArrows C n obtained by forgetting the first arrow.

                                                            Equations
                                                            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.

                                                              Equations
                                                              • One or more equations did not get rendered due to their size.
                                                              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 )) :
                                                                (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 )) (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.

                                                                Equations
                                                                • One or more equations did not get rendered due to their size.
                                                                Instances For
                                                                  @[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
                                                                  @[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
                                                                  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_220✝ = app' φ' 0 _proof_220✝¹) (h₁ : app' φ 1 _proof_221✝ = app' φ' 1 _proof_221✝¹) (h₂ : app' φ 2 _proof_222✝ = app' φ' 2 _proof_222✝¹) :
                                                                  φ = φ'

                                                                  Constructor for isomorphisms in ComposableArrows C 2.

                                                                  Equations
                                                                  • One or more equations did not get rendered due to their size.
                                                                  Instances For
                                                                    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₁
                                                                    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_242✝ = app' φ' 0 _proof_242✝¹) (h₁ : app' φ 1 _proof_243✝ = app' φ' 1 _proof_243✝¹) (h₂ : app' φ 2 _proof_244✝ = app' φ' 2 _proof_244✝¹) (h₃ : app' φ 3 _proof_245✝ = app' φ' 3 _proof_245✝¹) :
                                                                    φ = φ'

                                                                    Constructor for isomorphisms in ComposableArrows C 3.

                                                                    Equations
                                                                    • One or more equations did not get rendered due to their size.
                                                                    Instances For
                                                                      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₂
                                                                      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_266✝ = app' φ' 0 _proof_266✝¹) (h₁ : app' φ 1 _proof_267✝ = app' φ' 1 _proof_267✝¹) (h₂ : app' φ 2 _proof_268✝ = app' φ' 2 _proof_268✝¹) (h₃ : app' φ 3 _proof_269✝ = app' φ' 3 _proof_269✝¹) (h₄ : app' φ 4 _proof_270✝ = app' φ' 4 _proof_270✝¹) :
                                                                      φ = φ'
                                                                      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₃
                                                                      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_294✝ = app' φ' 0 _proof_294✝¹) (h₁ : app' φ 1 _proof_295✝ = app' φ' 1 _proof_295✝¹) (h₂ : app' φ 2 _proof_296✝ = app' φ' 2 _proof_296✝¹) (h₃ : app' φ 3 _proof_297✝ = app' φ' 3 _proof_297✝¹) (h₄ : app' φ 4 _proof_298✝ = app' φ' 4 _proof_298✝¹) (h₅ : app' φ 5 _proof_299✝ = app' φ' 5 _proof_299✝¹) :
                                                                      φ = φ'
                                                                      @[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.

                                                                      Equations
                                                                      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⟩.

                                                                        Equations
                                                                        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.

                                                                          Equations
                                                                          • One or more equations did not get rendered due to their size.
                                                                          Instances For
                                                                            @[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✝) :
                                                                            @[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.

                                                                            Equations
                                                                            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)