Theorem: CategoryTheory.Functor.closedCounit_app_app
File: Mathlib/CategoryTheory/Closed/FunctorCategory.lean

Proof steps:
state_before: D : Type u_1
C : Type u_2
inst✝³ : Groupoid D
inst✝² : Category.{?u.11305, u_2} C
inst✝¹ : MonoidalCategory C
inst✝ : MonoidalClosed C
F G : D ⥤ C
⊢ ∀ ⦃X Y : D⦄ (f : X ⟶ Y),
    ((F.closedIhom ⋙ tensorLeft F).obj G).map f ≫ (fun X => (ihom.ev (F.obj X)).app (G.obj X)) Y =
      (fun X => (ihom.ev (F.obj X)).app (G.obj X)) X ≫ ((𝟭 (D ⥤ C)).obj G).map f
state_after: D : Type u_1
C : Type u_2
inst✝³ : Groupoid D
inst✝² : Category.{?u.11305, u_2} C
inst✝¹ : MonoidalCategory C
inst✝ : MonoidalClosed C
F G : D ⥤ C
X Y : D
f : X ⟶ Y
⊢ ((F.closedIhom ⋙ tensorLeft F).obj G).map f ≫ (fun X => (ihom.ev (F.obj X)).app (G.obj X)) Y =
    (fun X => (ihom.ev (F.obj X)).app (G.obj X)) X ≫ ((𝟭 (D ⥤ C)).obj G).map f
tactic: intro X Y f
state_before: D : Type u_1
C : Type u_2
inst✝³ : Groupoid D
inst✝² : Category.{?u.11305, u_2} C
inst✝¹ : MonoidalCategory C
inst✝ : MonoidalClosed C
F G : D ⥤ C
X Y : D
f : X ⟶ Y
⊢ ((F.closedIhom ⋙ tensorLeft F).obj G).map f ≫ (fun X => (ihom.ev (F.obj X)).app (G.obj X)) Y =
    (fun X => (ihom.ev (F.obj X)).app (G.obj X)) X ≫ ((𝟭 (D ⥤ C)).obj G).map f
state_after: D : Type u_1
C : Type u_2
inst✝³ : Groupoid D
inst✝² : Category.{?u.11305, u_2} C
inst✝¹ : MonoidalCategory C
inst✝ : MonoidalClosed C
F G : D ⥤ C
X Y : D
f : X ⟶ Y
⊢ (F.map f ⊗ (F.closedIhom.obj G).map f) ≫ (ihom.ev (F.obj Y)).app (G.obj Y) =
    (ihom.ev (F.obj X)).app (G.obj X) ≫ G.map f
tactic: dsimp
state_before: D : Type u_1
C : Type u_2
inst✝³ : Groupoid D
inst✝² : Category.{?u.11305, u_2} C
inst✝¹ : MonoidalCategory C
inst✝ : MonoidalClosed C
F G : D ⥤ C
X Y : D
f : X ⟶ Y
⊢ (F.map f ⊗ (F.closedIhom.obj G).map f) ≫ (ihom.ev (F.obj Y)).app (G.obj Y) =
    (ihom.ev (F.obj X)).app (G.obj X) ≫ G.map f
state_after: D : Type u_1
C : Type u_2
inst✝³ : Groupoid D
inst✝² : Category.{?u.11305, u_2} C
inst✝¹ : MonoidalCategory C
inst✝ : MonoidalClosed C
F G : D ⥤ C
X Y : D
f : X ⟶ Y
⊢ (F.map f ⊗ (ihom (F.obj X)).map (G.map f) ≫ (pre (CategoryTheory.inv (F.map f))).app (G.obj Y)) ≫
      (ihom.ev (F.obj Y)).app (G.obj Y) =
    (ihom.ev (F.obj X)).app (G.obj X) ≫ G.map f
tactic: simp only [closedIhom_obj_map, pre_comm_ihom_map]
state_before: D : Type u_1
C : Type u_2
inst✝³ : Groupoid D
inst✝² : Category.{?u.11305, u_2} C
inst✝¹ : MonoidalCategory C
inst✝ : MonoidalClosed C
F G : D ⥤ C
X Y : D
f : X ⟶ Y
⊢ (F.map f ⊗ (ihom (F.obj X)).map (G.map f) ≫ (pre (CategoryTheory.inv (F.map f))).app (G.obj Y)) ≫
      (ihom.ev (F.obj Y)).app (G.obj Y) =
    (ihom.ev (F.obj X)).app (G.obj X) ≫ G.map f
state_after: D : Type u_1
C : Type u_2
inst✝³ : Groupoid D
inst✝² : Category.{?u.11305, u_2} C
inst✝¹ : MonoidalCategory C
inst✝ : MonoidalClosed C
F G : D ⥤ C
X Y : D
f : X ⟶ Y
⊢ (F.map f ▷ (ihom (F.obj X)).obj (G.obj X) ≫
        F.obj Y ◁ ((ihom (F.obj X)).map (G.map f) ≫ (pre (CategoryTheory.inv (F.map f))).app (G.obj Y))) ≫
      (ihom.ev (F.obj Y)).app (G.obj Y) =
    (ihom.ev (F.obj X)).app (G.obj X) ≫ G.map f
tactic: rw [tensorHom_def]
state_before: D : Type u_1
C : Type u_2
inst✝³ : Groupoid D
inst✝² : Category.{?u.11305, u_2} C
inst✝¹ : MonoidalCategory C
inst✝ : MonoidalClosed C
F G : D ⥤ C
X Y : D
f : X ⟶ Y
⊢ (F.map f ▷ (ihom (F.obj X)).obj (G.obj X) ≫
        F.obj Y ◁ ((ihom (F.obj X)).map (G.map f) ≫ (pre (CategoryTheory.inv (F.map f))).app (G.obj Y))) ≫
      (ihom.ev (F.obj Y)).app (G.obj Y) =
    (ihom.ev (F.obj X)).app (G.obj X) ≫ G.map f
state_after: no goals
tactic: simp