Theorem: _private.Mathlib.CategoryTheory.Monoidal.Internal.FunctorCategory.0.CategoryTheory.Monoidal.ComonFunctorCategoryEquivalence.inverse_obj
File: Mathlib/CategoryTheory/Monoidal/Internal/FunctorCategory.lean

Proof steps:
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
X✝ Y✝ : C ⥤ Comon_ D
α : X✝ ⟶ Y✝
⊢ { app := fun X => (α.app X).hom, naturality := ⋯ } ≫ (inverseObj Y✝).counit = (inverseObj X✝).counit
state_after: case w.h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
X✝ Y✝ : C ⥤ Comon_ D
α : X✝ ⟶ Y✝
x : C
⊢ ({ app := fun X => (α.app X).hom, naturality := ⋯ } ≫ (inverseObj Y✝).counit).app x = (inverseObj X✝).counit.app x
tactic: ext x
state_before: case w.h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
X✝ Y✝ : C ⥤ Comon_ D
α : X✝ ⟶ Y✝
x : C
⊢ ({ app := fun X => (α.app X).hom, naturality := ⋯ } ≫ (inverseObj Y✝).counit).app x = (inverseObj X✝).counit.app x
state_after: case w.h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
X✝ Y✝ : C ⥤ Comon_ D
α : X✝ ⟶ Y✝
x : C
⊢ (α.app x).hom ≫ (Y✝.obj x).counit = (X✝.obj x).counit
tactic: dsimp
state_before: case w.h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
X✝ Y✝ : C ⥤ Comon_ D
α : X✝ ⟶ Y✝
x : C
⊢ (α.app x).hom ≫ (Y✝.obj x).counit = (X✝.obj x).counit
state_after: no goals
tactic: rw [(α.app x).hom_counit]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
X✝ Y✝ : C ⥤ Comon_ D
α : X✝ ⟶ Y✝
⊢ { app := fun X => (α.app X).hom, naturality := ⋯ } ≫ (inverseObj Y✝).comul =
    (inverseObj X✝).comul ≫
      ({ app := fun X => (α.app X).hom, naturality := ⋯ } ⊗ { app := fun X => (α.app X).hom, naturality := ⋯ })
state_after: case w.h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
X✝ Y✝ : C ⥤ Comon_ D
α : X✝ ⟶ Y✝
x : C
⊢ ({ app := fun X => (α.app X).hom, naturality := ⋯ } ≫ (inverseObj Y✝).comul).app x =
    ((inverseObj X✝).comul ≫
          ({ app := fun X => (α.app X).hom, naturality := ⋯ } ⊗ { app := fun X => (α.app X).hom, naturality := ⋯ })).app
      x
tactic: ext x
state_before: case w.h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
X✝ Y✝ : C ⥤ Comon_ D
α : X✝ ⟶ Y✝
x : C
⊢ ({ app := fun X => (α.app X).hom, naturality := ⋯ } ≫ (inverseObj Y✝).comul).app x =
    ((inverseObj X✝).comul ≫
          ({ app := fun X => (α.app X).hom, naturality := ⋯ } ⊗ { app := fun X => (α.app X).hom, naturality := ⋯ })).app
      x
state_after: case w.h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
X✝ Y✝ : C ⥤ Comon_ D
α : X✝ ⟶ Y✝
x : C
⊢ (α.app x).hom ≫ (Y✝.obj x).comul = (X✝.obj x).comul ≫ ((α.app x).hom ⊗ (α.app x).hom)
tactic: dsimp
state_before: case w.h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
X✝ Y✝ : C ⥤ Comon_ D
α : X✝ ⟶ Y✝
x : C
⊢ (α.app x).hom ≫ (Y✝.obj x).comul = (X✝.obj x).comul ≫ ((α.app x).hom ⊗ (α.app x).hom)
state_after: no goals
tactic: rw [(α.app x).hom_comul]