Theorem: CategoryTheory.GradedObject.mapTrifunctorMapNatTrans_app_app_app
File: Mathlib/CategoryTheory/GradedObject/Trifunctor.lean

Proof steps:
state_before: C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
C₄ : Type u_4
C₁₂ : Type u_5
C₂₃ : Type u_6
inst✝⁵ : Category.{?u.34757, u_1} C₁
inst✝⁴ : Category.{?u.34761, u_2} C₂
inst✝³ : Category.{?u.34765, u_3} C₃
inst✝² : Category.{?u.34769, u_4} C₄
inst✝¹ : Category.{?u.34773, u_5} C₁₂
inst✝ : Category.{?u.34777, u_6} C₂₃
F F' : C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄
α : F ⟶ F'
I₁ : Type u_7
I₂ : Type u_8
I₃ : Type u_9
X₁ : GradedObject I₁ C₁
X₂ Y₂ : GradedObject I₂ C₂
φ : X₂ ⟶ Y₂
⊢ ((mapTrifunctor F I₁ I₂ I₃).obj X₁).map φ ≫
      (fun X₂ => { app := fun X₃ i => ((α.app (X₁ i.1)).app (X₂ i.2.1)).app (X₃ i.2.2), naturality := ⋯ }) Y₂ =
    (fun X₂ => { app := fun X₃ i => ((α.app (X₁ i.1)).app (X₂ i.2.1)).app (X₃ i.2.2), naturality := ⋯ }) X₂ ≫
      ((mapTrifunctor F' I₁ I₂ I₃).obj X₁).map φ
state_after: case w.h.h.mk.mk
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
C₄ : Type u_4
C₁₂ : Type u_5
C₂₃ : Type u_6
inst✝⁵ : Category.{?u.34757, u_1} C₁
inst✝⁴ : Category.{?u.34761, u_2} C₂
inst✝³ : Category.{?u.34765, u_3} C₃
inst✝² : Category.{?u.34769, u_4} C₄
inst✝¹ : Category.{?u.34773, u_5} C₁₂
inst✝ : Category.{?u.34777, u_6} C₂₃
F F' : C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄
α : F ⟶ F'
I₁ : Type u_7
I₂ : Type u_8
I₃ : Type u_9
X₁ : GradedObject I₁ C₁
X₂ Y₂ : GradedObject I₂ C₂
φ : X₂ ⟶ Y₂
X₃ : GradedObject I₃ C₃
i₁ : I₁
i₂ : I₂
i₃ : I₃
⊢ (((mapTrifunctor F I₁ I₂ I₃).obj X₁).map φ ≫
          (fun X₂ => { app := fun X₃ i => ((α.app (X₁ i.1)).app (X₂ i.2.1)).app (X₃ i.2.2), naturality := ⋯ }) Y₂).app
      X₃ (i₁, i₂, i₃) =
    ((fun X₂ => { app := fun X₃ i => ((α.app (X₁ i.1)).app (X₂ i.2.1)).app (X₃ i.2.2), naturality := ⋯ }) X₂ ≫
          ((mapTrifunctor F' I₁ I₂ I₃).obj X₁).map φ).app
      X₃ (i₁, i₂, i₃)
tactic: ext X₃ ⟨i₁, i₂, i₃⟩
state_before: case w.h.h.mk.mk
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
C₄ : Type u_4
C₁₂ : Type u_5
C₂₃ : Type u_6
inst✝⁵ : Category.{?u.34757, u_1} C₁
inst✝⁴ : Category.{?u.34761, u_2} C₂
inst✝³ : Category.{?u.34765, u_3} C₃
inst✝² : Category.{?u.34769, u_4} C₄
inst✝¹ : Category.{?u.34773, u_5} C₁₂
inst✝ : Category.{?u.34777, u_6} C₂₃
F F' : C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄
α : F ⟶ F'
I₁ : Type u_7
I₂ : Type u_8
I₃ : Type u_9
X₁ : GradedObject I₁ C₁
X₂ Y₂ : GradedObject I₂ C₂
φ : X₂ ⟶ Y₂
X₃ : GradedObject I₃ C₃
i₁ : I₁
i₂ : I₂
i₃ : I₃
⊢ (((mapTrifunctor F I₁ I₂ I₃).obj X₁).map φ ≫
          (fun X₂ => { app := fun X₃ i => ((α.app (X₁ i.1)).app (X₂ i.2.1)).app (X₃ i.2.2), naturality := ⋯ }) Y₂).app
      X₃ (i₁, i₂, i₃) =
    ((fun X₂ => { app := fun X₃ i => ((α.app (X₁ i.1)).app (X₂ i.2.1)).app (X₃ i.2.2), naturality := ⋯ }) X₂ ≫
          ((mapTrifunctor F' I₁ I₂ I₃).obj X₁).map φ).app
      X₃ (i₁, i₂, i₃)
state_after: case w.h.h.mk.mk
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
C₄ : Type u_4
C₁₂ : Type u_5
C₂₃ : Type u_6
inst✝⁵ : Category.{?u.34757, u_1} C₁
inst✝⁴ : Category.{?u.34761, u_2} C₂
inst✝³ : Category.{?u.34765, u_3} C₃
inst✝² : Category.{?u.34769, u_4} C₄
inst✝¹ : Category.{?u.34773, u_5} C₁₂
inst✝ : Category.{?u.34777, u_6} C₂₃
F F' : C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄
α : F ⟶ F'
I₁ : Type u_7
I₂ : Type u_8
I₃ : Type u_9
X₁ : GradedObject I₁ C₁
X₂ Y₂ : GradedObject I₂ C₂
φ : X₂ ⟶ Y₂
X₃ : GradedObject I₃ C₃
i₁ : I₁
i₂ : I₂
i₃ : I₃
⊢ ((F.obj (X₁ i₁)).map (φ i₂)).app (X₃ i₃) ≫ ((α.app (X₁ i₁)).app (Y₂ i₂)).app (X₃ i₃) =
    ((α.app (X₁ i₁)).app (X₂ i₂)).app (X₃ i₃) ≫ ((F'.obj (X₁ i₁)).map (φ i₂)).app (X₃ i₃)
tactic: dsimp
state_before: case w.h.h.mk.mk
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
C₄ : Type u_4
C₁₂ : Type u_5
C₂₃ : Type u_6
inst✝⁵ : Category.{?u.34757, u_1} C₁
inst✝⁴ : Category.{?u.34761, u_2} C₂
inst✝³ : Category.{?u.34765, u_3} C₃
inst✝² : Category.{?u.34769, u_4} C₄
inst✝¹ : Category.{?u.34773, u_5} C₁₂
inst✝ : Category.{?u.34777, u_6} C₂₃
F F' : C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄
α : F ⟶ F'
I₁ : Type u_7
I₂ : Type u_8
I₃ : Type u_9
X₁ : GradedObject I₁ C₁
X₂ Y₂ : GradedObject I₂ C₂
φ : X₂ ⟶ Y₂
X₃ : GradedObject I₃ C₃
i₁ : I₁
i₂ : I₂
i₃ : I₃
⊢ ((F.obj (X₁ i₁)).map (φ i₂)).app (X₃ i₃) ≫ ((α.app (X₁ i₁)).app (Y₂ i₂)).app (X₃ i₃) =
    ((α.app (X₁ i₁)).app (X₂ i₂)).app (X₃ i₃) ≫ ((F'.obj (X₁ i₁)).map (φ i₂)).app (X₃ i₃)
state_after: no goals
tactic: simp only [← NatTrans.comp_app, NatTrans.naturality]
state_before: C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
C₄ : Type u_4
C₁₂ : Type u_5
C₂₃ : Type u_6
inst✝⁵ : Category.{?u.34757, u_1} C₁
inst✝⁴ : Category.{?u.34761, u_2} C₂
inst✝³ : Category.{?u.34765, u_3} C₃
inst✝² : Category.{?u.34769, u_4} C₄
inst✝¹ : Category.{?u.34773, u_5} C₁₂
inst✝ : Category.{?u.34777, u_6} C₂₃
F F' : C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄
α : F ⟶ F'
I₁ : Type u_7
I₂ : Type u_8
I₃ : Type u_9
X₁ Y₁ : GradedObject I₁ C₁
φ : X₁ ⟶ Y₁
⊢ (mapTrifunctor F I₁ I₂ I₃).map φ ≫
      (fun X₁ =>
          { app := fun X₂ => { app := fun X₃ i => ((α.app (X₁ i.1)).app (X₂ i.2.1)).app (X₃ i.2.2), naturality := ⋯ },
            naturality := ⋯ })
        Y₁ =
    (fun X₁ =>
          { app := fun X₂ => { app := fun X₃ i => ((α.app (X₁ i.1)).app (X₂ i.2.1)).app (X₃ i.2.2), naturality := ⋯ },
            naturality := ⋯ })
        X₁ ≫
      (mapTrifunctor F' I₁ I₂ I₃).map φ
state_after: case w.h.w.h.h.mk.mk
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
C₄ : Type u_4
C₁₂ : Type u_5
C₂₃ : Type u_6
inst✝⁵ : Category.{?u.34757, u_1} C₁
inst✝⁴ : Category.{?u.34761, u_2} C₂
inst✝³ : Category.{?u.34765, u_3} C₃
inst✝² : Category.{?u.34769, u_4} C₄
inst✝¹ : Category.{?u.34773, u_5} C₁₂
inst✝ : Category.{?u.34777, u_6} C₂₃
F F' : C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄
α : F ⟶ F'
I₁ : Type u_7
I₂ : Type u_8
I₃ : Type u_9
X₁ Y₁ : GradedObject I₁ C₁
φ : X₁ ⟶ Y₁
X₂ : GradedObject I₂ C₂
X₃ : GradedObject I₃ C₃
i₁ : I₁
i₂ : I₂
i₃ : I₃
⊢ (((mapTrifunctor F I₁ I₂ I₃).map φ ≫
              (fun X₁ =>
                  {
                    app := fun X₂ =>
                      { app := fun X₃ i => ((α.app (X₁ i.1)).app (X₂ i.2.1)).app (X₃ i.2.2), naturality := ⋯ },
                    naturality := ⋯ })
                Y₁).app
          X₂).app
      X₃ (i₁, i₂, i₃) =
    (((fun X₁ =>
                  {
                    app := fun X₂ =>
                      { app := fun X₃ i => ((α.app (X₁ i.1)).app (X₂ i.2.1)).app (X₃ i.2.2), naturality := ⋯ },
                    naturality := ⋯ })
                X₁ ≫
              (mapTrifunctor F' I₁ I₂ I₃).map φ).app
          X₂).app
      X₃ (i₁, i₂, i₃)
tactic: ext X₂ X₃ ⟨i₁, i₂, i₃⟩
state_before: case w.h.w.h.h.mk.mk
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
C₄ : Type u_4
C₁₂ : Type u_5
C₂₃ : Type u_6
inst✝⁵ : Category.{?u.34757, u_1} C₁
inst✝⁴ : Category.{?u.34761, u_2} C₂
inst✝³ : Category.{?u.34765, u_3} C₃
inst✝² : Category.{?u.34769, u_4} C₄
inst✝¹ : Category.{?u.34773, u_5} C₁₂
inst✝ : Category.{?u.34777, u_6} C₂₃
F F' : C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄
α : F ⟶ F'
I₁ : Type u_7
I₂ : Type u_8
I₃ : Type u_9
X₁ Y₁ : GradedObject I₁ C₁
φ : X₁ ⟶ Y₁
X₂ : GradedObject I₂ C₂
X₃ : GradedObject I₃ C₃
i₁ : I₁
i₂ : I₂
i₃ : I₃
⊢ (((mapTrifunctor F I₁ I₂ I₃).map φ ≫
              (fun X₁ =>
                  {
                    app := fun X₂ =>
                      { app := fun X₃ i => ((α.app (X₁ i.1)).app (X₂ i.2.1)).app (X₃ i.2.2), naturality := ⋯ },
                    naturality := ⋯ })
                Y₁).app
          X₂).app
      X₃ (i₁, i₂, i₃) =
    (((fun X₁ =>
                  {
                    app := fun X₂ =>
                      { app := fun X₃ i => ((α.app (X₁ i.1)).app (X₂ i.2.1)).app (X₃ i.2.2), naturality := ⋯ },
                    naturality := ⋯ })
                X₁ ≫
              (mapTrifunctor F' I₁ I₂ I₃).map φ).app
          X₂).app
      X₃ (i₁, i₂, i₃)
state_after: case w.h.w.h.h.mk.mk
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
C₄ : Type u_4
C₁₂ : Type u_5
C₂₃ : Type u_6
inst✝⁵ : Category.{?u.34757, u_1} C₁
inst✝⁴ : Category.{?u.34761, u_2} C₂
inst✝³ : Category.{?u.34765, u_3} C₃
inst✝² : Category.{?u.34769, u_4} C₄
inst✝¹ : Category.{?u.34773, u_5} C₁₂
inst✝ : Category.{?u.34777, u_6} C₂₃
F F' : C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄
α : F ⟶ F'
I₁ : Type u_7
I₂ : Type u_8
I₃ : Type u_9
X₁ Y₁ : GradedObject I₁ C₁
φ : X₁ ⟶ Y₁
X₂ : GradedObject I₂ C₂
X₃ : GradedObject I₃ C₃
i₁ : I₁
i₂ : I₂
i₃ : I₃
⊢ ((F.map (φ i₁)).app (X₂ i₂)).app (X₃ i₃) ≫ ((α.app (Y₁ i₁)).app (X₂ i₂)).app (X₃ i₃) =
    ((α.app (X₁ i₁)).app (X₂ i₂)).app (X₃ i₃) ≫ ((F'.map (φ i₁)).app (X₂ i₂)).app (X₃ i₃)
tactic: dsimp
state_before: case w.h.w.h.h.mk.mk
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
C₄ : Type u_4
C₁₂ : Type u_5
C₂₃ : Type u_6
inst✝⁵ : Category.{?u.34757, u_1} C₁
inst✝⁴ : Category.{?u.34761, u_2} C₂
inst✝³ : Category.{?u.34765, u_3} C₃
inst✝² : Category.{?u.34769, u_4} C₄
inst✝¹ : Category.{?u.34773, u_5} C₁₂
inst✝ : Category.{?u.34777, u_6} C₂₃
F F' : C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄
α : F ⟶ F'
I₁ : Type u_7
I₂ : Type u_8
I₃ : Type u_9
X₁ Y₁ : GradedObject I₁ C₁
φ : X₁ ⟶ Y₁
X₂ : GradedObject I₂ C₂
X₃ : GradedObject I₃ C₃
i₁ : I₁
i₂ : I₂
i₃ : I₃
⊢ ((F.map (φ i₁)).app (X₂ i₂)).app (X₃ i₃) ≫ ((α.app (Y₁ i₁)).app (X₂ i₂)).app (X₃ i₃) =
    ((α.app (X₁ i₁)).app (X₂ i₂)).app (X₃ i₃) ≫ ((F'.map (φ i₁)).app (X₂ i₂)).app (X₃ i₃)
state_after: no goals
tactic: simp only [← NatTrans.comp_app, NatTrans.naturality]