Theorem: CategoryTheory.GradedObject.mapTrifunctor_map_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.17195, u_1} C₁
inst✝⁴ : Category.{?u.17199, u_2} C₂
inst✝³ : Category.{?u.17203, u_3} C₃
inst✝² : Category.{?u.17207, u_4} C₄
inst✝¹ : Category.{?u.17211, u_5} C₁₂
inst✝ : Category.{?u.17215, u_6} C₂₃
F F' : C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄
I₁ : Type u_7
I₂ : Type u_8
I₃ : Type u_9
X₁ Y₁ : GradedObject I₁ C₁
φ : X₁ ⟶ Y₁
X₂ Y₂ : GradedObject I₂ C₂
ψ : X₂ ⟶ Y₂
⊢ ((fun X₁ => mapTrifunctorObj F X₁ I₂ I₃) X₁).map ψ ≫
      (fun X₂ => { app := fun X₃ x => ((F.map (φ x.1)).app (X₂ x.2.1)).app (X₃ x.2.2), naturality := ⋯ }) Y₂ =
    (fun X₂ => { app := fun X₃ x => ((F.map (φ x.1)).app (X₂ x.2.1)).app (X₃ x.2.2), naturality := ⋯ }) X₂ ≫
      ((fun X₁ => mapTrifunctorObj F X₁ I₂ I₃) Y₁).map ψ
state_after: case w.h.h
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.17195, u_1} C₁
inst✝⁴ : Category.{?u.17199, u_2} C₂
inst✝³ : Category.{?u.17203, u_3} C₃
inst✝² : Category.{?u.17207, u_4} C₄
inst✝¹ : Category.{?u.17211, u_5} C₁₂
inst✝ : Category.{?u.17215, u_6} C₂₃
F F' : C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄
I₁ : Type u_7
I₂ : Type u_8
I₃ : Type u_9
X₁ Y₁ : GradedObject I₁ C₁
φ : X₁ ⟶ Y₁
X₂ Y₂ : GradedObject I₂ C₂
ψ : X₂ ⟶ Y₂
X₃ : GradedObject I₃ C₃
x : I₁ × I₂ × I₃
⊢ (((fun X₁ => mapTrifunctorObj F X₁ I₂ I₃) X₁).map ψ ≫
          (fun X₂ => { app := fun X₃ x => ((F.map (φ x.1)).app (X₂ x.2.1)).app (X₃ x.2.2), naturality := ⋯ }) Y₂).app
      X₃ x =
    ((fun X₂ => { app := fun X₃ x => ((F.map (φ x.1)).app (X₂ x.2.1)).app (X₃ x.2.2), naturality := ⋯ }) X₂ ≫
          ((fun X₁ => mapTrifunctorObj F X₁ I₂ I₃) Y₁).map ψ).app
      X₃ x
tactic: ext X₃ x
state_before: case w.h.h
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.17195, u_1} C₁
inst✝⁴ : Category.{?u.17199, u_2} C₂
inst✝³ : Category.{?u.17203, u_3} C₃
inst✝² : Category.{?u.17207, u_4} C₄
inst✝¹ : Category.{?u.17211, u_5} C₁₂
inst✝ : Category.{?u.17215, u_6} C₂₃
F F' : C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄
I₁ : Type u_7
I₂ : Type u_8
I₃ : Type u_9
X₁ Y₁ : GradedObject I₁ C₁
φ : X₁ ⟶ Y₁
X₂ Y₂ : GradedObject I₂ C₂
ψ : X₂ ⟶ Y₂
X₃ : GradedObject I₃ C₃
x : I₁ × I₂ × I₃
⊢ (((fun X₁ => mapTrifunctorObj F X₁ I₂ I₃) X₁).map ψ ≫
          (fun X₂ => { app := fun X₃ x => ((F.map (φ x.1)).app (X₂ x.2.1)).app (X₃ x.2.2), naturality := ⋯ }) Y₂).app
      X₃ x =
    ((fun X₂ => { app := fun X₃ x => ((F.map (φ x.1)).app (X₂ x.2.1)).app (X₃ x.2.2), naturality := ⋯ }) X₂ ≫
          ((fun X₁ => mapTrifunctorObj F X₁ I₂ I₃) Y₁).map ψ).app
      X₃ x
state_after: case w.h.h
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.17195, u_1} C₁
inst✝⁴ : Category.{?u.17199, u_2} C₂
inst✝³ : Category.{?u.17203, u_3} C₃
inst✝² : Category.{?u.17207, u_4} C₄
inst✝¹ : Category.{?u.17211, u_5} C₁₂
inst✝ : Category.{?u.17215, u_6} C₂₃
F F' : C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄
I₁ : Type u_7
I₂ : Type u_8
I₃ : Type u_9
X₁ Y₁ : GradedObject I₁ C₁
φ : X₁ ⟶ Y₁
X₂ Y₂ : GradedObject I₂ C₂
ψ : X₂ ⟶ Y₂
X₃ : GradedObject I₃ C₃
x : I₁ × I₂ × I₃
⊢ ((F.obj (X₁ x.1)).map (ψ x.2.1)).app (X₃ x.2.2) ≫ ((F.map (φ x.1)).app (Y₂ x.2.1)).app (X₃ x.2.2) =
    ((F.map (φ x.1)).app (X₂ x.2.1)).app (X₃ x.2.2) ≫ ((F.obj (Y₁ x.1)).map (ψ x.2.1)).app (X₃ x.2.2)
tactic: dsimp
state_before: case w.h.h
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.17195, u_1} C₁
inst✝⁴ : Category.{?u.17199, u_2} C₂
inst✝³ : Category.{?u.17203, u_3} C₃
inst✝² : Category.{?u.17207, u_4} C₄
inst✝¹ : Category.{?u.17211, u_5} C₁₂
inst✝ : Category.{?u.17215, u_6} C₂₃
F F' : C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄
I₁ : Type u_7
I₂ : Type u_8
I₃ : Type u_9
X₁ Y₁ : GradedObject I₁ C₁
φ : X₁ ⟶ Y₁
X₂ Y₂ : GradedObject I₂ C₂
ψ : X₂ ⟶ Y₂
X₃ : GradedObject I₃ C₃
x : I₁ × I₂ × I₃
⊢ ((F.obj (X₁ x.1)).map (ψ x.2.1)).app (X₃ x.2.2) ≫ ((F.map (φ x.1)).app (Y₂ x.2.1)).app (X₃ x.2.2) =
    ((F.map (φ x.1)).app (X₂ x.2.1)).app (X₃ x.2.2) ≫ ((F.obj (Y₁ x.1)).map (ψ x.2.1)).app (X₃ x.2.2)
state_after: case w.h.h
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.17195, u_1} C₁
inst✝⁴ : Category.{?u.17199, u_2} C₂
inst✝³ : Category.{?u.17203, u_3} C₃
inst✝² : Category.{?u.17207, u_4} C₄
inst✝¹ : Category.{?u.17211, u_5} C₁₂
inst✝ : Category.{?u.17215, u_6} C₂₃
F F' : C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄
I₁ : Type u_7
I₂ : Type u_8
I₃ : Type u_9
X₁ Y₁ : GradedObject I₁ C₁
φ : X₁ ⟶ Y₁
X₂ Y₂ : GradedObject I₂ C₂
ψ : X₂ ⟶ Y₂
X₃ : GradedObject I₃ C₃
x : I₁ × I₂ × I₃
⊢ ((F.obj (X₁ x.1)).map (ψ x.2.1) ≫ (F.map (φ x.1)).app (Y₂ x.2.1)).app (X₃ x.2.2) =
    ((F.map (φ x.1)).app (X₂ x.2.1) ≫ (F.obj (Y₁ x.1)).map (ψ x.2.1)).app (X₃ x.2.2)
tactic: simp only [← NatTrans.comp_app]
state_before: case w.h.h
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.17195, u_1} C₁
inst✝⁴ : Category.{?u.17199, u_2} C₂
inst✝³ : Category.{?u.17203, u_3} C₃
inst✝² : Category.{?u.17207, u_4} C₄
inst✝¹ : Category.{?u.17211, u_5} C₁₂
inst✝ : Category.{?u.17215, u_6} C₂₃
F F' : C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄
I₁ : Type u_7
I₂ : Type u_8
I₃ : Type u_9
X₁ Y₁ : GradedObject I₁ C₁
φ : X₁ ⟶ Y₁
X₂ Y₂ : GradedObject I₂ C₂
ψ : X₂ ⟶ Y₂
X₃ : GradedObject I₃ C₃
x : I₁ × I₂ × I₃
⊢ ((F.obj (X₁ x.1)).map (ψ x.2.1) ≫ (F.map (φ x.1)).app (Y₂ x.2.1)).app (X₃ x.2.2) =
    ((F.map (φ x.1)).app (X₂ x.2.1) ≫ (F.obj (Y₁ x.1)).map (ψ x.2.1)).app (X₃ x.2.2)
state_after: case w.h.h.e_self
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.17195, u_1} C₁
inst✝⁴ : Category.{?u.17199, u_2} C₂
inst✝³ : Category.{?u.17203, u_3} C₃
inst✝² : Category.{?u.17207, u_4} C₄
inst✝¹ : Category.{?u.17211, u_5} C₁₂
inst✝ : Category.{?u.17215, u_6} C₂₃
F F' : C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄
I₁ : Type u_7
I₂ : Type u_8
I₃ : Type u_9
X₁ Y₁ : GradedObject I₁ C₁
φ : X₁ ⟶ Y₁
X₂ Y₂ : GradedObject I₂ C₂
ψ : X₂ ⟶ Y₂
X₃ : GradedObject I₃ C₃
x : I₁ × I₂ × I₃
⊢ (F.obj (X₁ x.1)).map (ψ x.2.1) ≫ (F.map (φ x.1)).app (Y₂ x.2.1) =
    (F.map (φ x.1)).app (X₂ x.2.1) ≫ (F.obj (Y₁ x.1)).map (ψ x.2.1)
tactic: congr 1
state_before: case w.h.h.e_self
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.17195, u_1} C₁
inst✝⁴ : Category.{?u.17199, u_2} C₂
inst✝³ : Category.{?u.17203, u_3} C₃
inst✝² : Category.{?u.17207, u_4} C₄
inst✝¹ : Category.{?u.17211, u_5} C₁₂
inst✝ : Category.{?u.17215, u_6} C₂₃
F F' : C₁ ⥤ C₂ ⥤ C₃ ⥤ C₄
I₁ : Type u_7
I₂ : Type u_8
I₃ : Type u_9
X₁ Y₁ : GradedObject I₁ C₁
φ : X₁ ⟶ Y₁
X₂ Y₂ : GradedObject I₂ C₂
ψ : X₂ ⟶ Y₂
X₃ : GradedObject I₃ C₃
x : I₁ × I₂ × I₃
⊢ (F.obj (X₁ x.1)).map (ψ x.2.1) ≫ (F.map (φ x.1)).app (Y₂ x.2.1) =
    (F.map (φ x.1)).app (X₂ x.2.1) ≫ (F.obj (Y₁ x.1)).map (ψ x.2.1)
state_after: no goals
tactic: rw [NatTrans.naturality]