Theorem: CategoryTheory.Idempotents.functorExtension₁_comp_whiskeringLeft_toKaroubi
File: Mathlib/CategoryTheory/Idempotents/FunctorExtension.lean

tactic: refine' Functor.ext _ _
state_before: C : Type u_1
D : Type u_2
E : Type ?u.30040
inst✝² : Category C
inst✝¹ : Category D
inst✝ : Category E
⊢ functorExtension₁ C D ⋙ (whiskeringLeft C (Karoubi C) (Karoubi D)).obj (toKaroubi C) = 𝟭 (C ⥤ Karoubi D)

tactic: intro F
state_before: case refine'_1
C : Type u_1
D : Type u_2
E : Type ?u.30040
inst✝² : Category C
inst✝¹ : Category D
inst✝ : Category E
⊢ ∀ (X : C ⥤ Karoubi D),
    (functorExtension₁ C D ⋙ (whiskeringLeft C (Karoubi C) (Karoubi D)).obj (toKaroubi C)).obj X =
      (𝟭 (C ⥤ Karoubi D)).obj X

tactic: refine' Functor.ext _ _
state_before: case refine'_1
C : Type u_1
D : Type u_2
E : Type ?u.30040
inst✝² : Category C
inst✝¹ : Category D
inst✝ : Category E
F : C ⥤ Karoubi D
⊢ (functorExtension₁ C D ⋙ (whiskeringLeft C (Karoubi C) (Karoubi D)).obj (toKaroubi C)).obj F =
    (𝟭 (C ⥤ Karoubi D)).obj F

tactic: intro X
state_before: case refine'_1.refine'_1
C : Type u_1
D : Type u_2
E : Type ?u.30040
inst✝² : Category C
inst✝¹ : Category D
inst✝ : Category E
F : C ⥤ Karoubi D
⊢ ∀ (X : C),
    ((functorExtension₁ C D ⋙ (whiskeringLeft C (Karoubi C) (Karoubi D)).obj (toKaroubi C)).obj F).obj X =
      ((𝟭 (C ⥤ Karoubi D)).obj F).obj X

tactic: ext
state_before: case refine'_1.refine'_1
C : Type u_1
D : Type u_2
E : Type ?u.30040
inst✝² : Category C
inst✝¹ : Category D
inst✝ : Category E
F : C ⥤ Karoubi D
X : C
⊢ ((functorExtension₁ C D ⋙ (whiskeringLeft C (Karoubi C) (Karoubi D)).obj (toKaroubi C)).obj F).obj X =
    ((𝟭 (C ⥤ Karoubi D)).obj F).obj X

tactic: . simp
state_before: case refine'_1.refine'_1.h_p
C : Type u_1
D : Type u_2
E : Type ?u.30040
inst✝² : Category C
inst✝¹ : Category D
inst✝ : Category E
F : C ⥤ Karoubi D
X : C
⊢ (((functorExtension₁ C D ⋙ (whiskeringLeft C (Karoubi C) (Karoubi D)).obj (toKaroubi C)).obj F).obj X).p ≫
      eqToHom ?refine'_1.refine'_1.h_X =
    eqToHom ?refine'_1.refine'_1.h_X ≫ (((𝟭 (C ⥤ Karoubi D)).obj F).obj X).p

case refine'_1.refine'_1.h_X
C : Type u_1
D : Type u_2
E : Type ?u.30040
inst✝² : Category C
inst✝¹ : Category D
inst✝ : Category E
F : C ⥤ Karoubi D
X : C
⊢ (((functorExtension₁ C D ⋙ (whiskeringLeft C (Karoubi C) (Karoubi D)).obj (toKaroubi C)).obj F).obj X).X =
    (((𝟭 (C ⥤ Karoubi D)).obj F).obj X).X

tactic: . simp
state_before: case refine'_1.refine'_1.h_X
C : Type u_1
D : Type u_2
E : Type ?u.30040
inst✝² : Category C
inst✝¹ : Category D
inst✝ : Category E
F : C ⥤ Karoubi D
X : C
⊢ (((functorExtension₁ C D ⋙ (whiskeringLeft C (Karoubi C) (Karoubi D)).obj (toKaroubi C)).obj F).obj X).X =
    (((𝟭 (C ⥤ Karoubi D)).obj F).obj X).X

tactic: simp
state_before: case refine'_1.refine'_1.h_p
C : Type u_1
D : Type u_2
E : Type ?u.30040
inst✝² : Category C
inst✝¹ : Category D
inst✝ : Category E
F : C ⥤ Karoubi D
X : C
⊢ (((functorExtension₁ C D ⋙ (whiskeringLeft C (Karoubi C) (Karoubi D)).obj (toKaroubi C)).obj F).obj X).p ≫
      eqToHom ?refine'_1.refine'_1.h_X =
    eqToHom ?refine'_1.refine'_1.h_X ≫ (((𝟭 (C ⥤ Karoubi D)).obj F).obj X).p

tactic: simp
state_before: case refine'_1.refine'_1.h_X
C : Type u_1
D : Type u_2
E : Type ?u.30040
inst✝² : Category C
inst✝¹ : Category D
inst✝ : Category E
F : C ⥤ Karoubi D
X : C
⊢ (((functorExtension₁ C D ⋙ (whiskeringLeft C (Karoubi C) (Karoubi D)).obj (toKaroubi C)).obj F).obj X).X =
    (((𝟭 (C ⥤ Karoubi D)).obj F).obj X).X

tactic: aesop_cat
state_before: case refine'_1.refine'_2
C : Type u_1
D : Type u_2
E : Type ?u.30040
inst✝² : Category C
inst✝¹ : Category D
inst✝ : Category E
F : C ⥤ Karoubi D
⊢ ∀ (X Y : C) (f : X ⟶ Y),
    ((functorExtension₁ C D ⋙ (whiskeringLeft C (Karoubi C) (Karoubi D)).obj (toKaroubi C)).obj F).map f =
      eqToHom
          (_ :
            ((functorExtension₁ C D ⋙ (whiskeringLeft C (Karoubi C) (Karoubi D)).obj (toKaroubi C)).obj F).obj X =
              ((𝟭 (C ⥤ Karoubi D)).obj F).obj X) ≫
        ((𝟭 (C ⥤ Karoubi D)).obj F).map f ≫
          eqToHom
            (_ :
              ((𝟭 (C ⥤ Karoubi D)).obj F).obj Y =
                ((functorExtension₁ C D ⋙ (whiskeringLeft C (Karoubi C) (Karoubi D)).obj (toKaroubi C)).obj F).obj Y)

tactic: intro F G φ
state_before: case refine'_2
C : Type u_1
D : Type u_2
E : Type ?u.30040
inst✝² : Category C
inst✝¹ : Category D
inst✝ : Category E
⊢ ∀ (X Y : C ⥤ Karoubi D) (f : X ⟶ Y),
    (functorExtension₁ C D ⋙ (whiskeringLeft C (Karoubi C) (Karoubi D)).obj (toKaroubi C)).map f =
      eqToHom
          (_ :
            (functorExtension₁ C D ⋙ (whiskeringLeft C (Karoubi C) (Karoubi D)).obj (toKaroubi C)).obj X =
              (𝟭 (C ⥤ Karoubi D)).obj X) ≫
        (𝟭 (C ⥤ Karoubi D)).map f ≫
          eqToHom
            (_ :
              (𝟭 (C ⥤ Karoubi D)).obj Y =
                (functorExtension₁ C D ⋙ (whiskeringLeft C (Karoubi C) (Karoubi D)).obj (toKaroubi C)).obj Y)

tactic: aesop_cat
state_before: case refine'_2
C : Type u_1
D : Type u_2
E : Type ?u.30040
inst✝² : Category C
inst✝¹ : Category D
inst✝ : Category E
F G : C ⥤ Karoubi D
φ : F ⟶ G
⊢ (functorExtension₁ C D ⋙ (whiskeringLeft C (Karoubi C) (Karoubi D)).obj (toKaroubi C)).map φ =
    eqToHom
        (_ :
          (functorExtension₁ C D ⋙ (whiskeringLeft C (Karoubi C) (Karoubi D)).obj (toKaroubi C)).obj F =
            (𝟭 (C ⥤ Karoubi D)).obj F) ≫
      (𝟭 (C ⥤ Karoubi D)).map φ ≫
        eqToHom
          (_ :
            (𝟭 (C ⥤ Karoubi D)).obj G =
              (functorExtension₁ C D ⋙ (whiskeringLeft C (Karoubi C) (Karoubi D)).obj (toKaroubi C)).obj G)