Theorem: CategoryTheory.SingleFunctors.postcompIsoOfIso_inv_hom_app
File: Mathlib/CategoryTheory/Shift/SingleFunctors.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
E : Type u_3
E' : Type u_4
inst✝¹⁰ : Category.{?u.100947, u_1} C
inst✝⁹ : Category.{?u.100951, u_2} D
inst✝⁸ : Category.{?u.100955, u_3} E
inst✝⁷ : Category.{?u.100959, u_4} E'
A : Type u_5
inst✝⁶ : AddMonoid A
inst✝⁵ : HasShift D A
inst✝⁴ : HasShift E A
inst✝³ : HasShift E' A
F G✝ H : SingleFunctors C D A
G G' : D ⥤ E
e : G ≅ G'
inst✝² : G.CommShift A
inst✝¹ : G'.CommShift A
inst✝ : NatTrans.CommShift e.hom A
n a a' : A
ha' : n + a = a'
⊢ ((F.postcomp G).shiftIso n a a' ha').hom ≫ ((fun a => isoWhiskerLeft (F.functor a) e) a).hom =
    whiskerRight ((fun a => isoWhiskerLeft (F.functor a) e) a').hom (shiftFunctor E n) ≫
      ((F.postcomp G').shiftIso n a a' ha').hom
state_after: case w.h
C : Type u_1
D : Type u_2
E : Type u_3
E' : Type u_4
inst✝¹⁰ : Category.{?u.100947, u_1} C
inst✝⁹ : Category.{?u.100951, u_2} D
inst✝⁸ : Category.{?u.100955, u_3} E
inst✝⁷ : Category.{?u.100959, u_4} E'
A : Type u_5
inst✝⁶ : AddMonoid A
inst✝⁵ : HasShift D A
inst✝⁴ : HasShift E A
inst✝³ : HasShift E' A
F G✝ H : SingleFunctors C D A
G G' : D ⥤ E
e : G ≅ G'
inst✝² : G.CommShift A
inst✝¹ : G'.CommShift A
inst✝ : NatTrans.CommShift e.hom A
n a a' : A
ha' : n + a = a'
X : C
⊢ (((F.postcomp G).shiftIso n a a' ha').hom ≫ ((fun a => isoWhiskerLeft (F.functor a) e) a).hom).app X =
    (whiskerRight ((fun a => isoWhiskerLeft (F.functor a) e) a').hom (shiftFunctor E n) ≫
          ((F.postcomp G').shiftIso n a a' ha').hom).app
      X
tactic: ext X
state_before: case w.h
C : Type u_1
D : Type u_2
E : Type u_3
E' : Type u_4
inst✝¹⁰ : Category.{?u.100947, u_1} C
inst✝⁹ : Category.{?u.100951, u_2} D
inst✝⁸ : Category.{?u.100955, u_3} E
inst✝⁷ : Category.{?u.100959, u_4} E'
A : Type u_5
inst✝⁶ : AddMonoid A
inst✝⁵ : HasShift D A
inst✝⁴ : HasShift E A
inst✝³ : HasShift E' A
F G✝ H : SingleFunctors C D A
G G' : D ⥤ E
e : G ≅ G'
inst✝² : G.CommShift A
inst✝¹ : G'.CommShift A
inst✝ : NatTrans.CommShift e.hom A
n a a' : A
ha' : n + a = a'
X : C
⊢ (((F.postcomp G).shiftIso n a a' ha').hom ≫ ((fun a => isoWhiskerLeft (F.functor a) e) a).hom).app X =
    (whiskerRight ((fun a => isoWhiskerLeft (F.functor a) e) a').hom (shiftFunctor E n) ≫
          ((F.postcomp G').shiftIso n a a' ha').hom).app
      X
state_after: case w.h
C : Type u_1
D : Type u_2
E : Type u_3
E' : Type u_4
inst✝¹⁰ : Category.{?u.100947, u_1} C
inst✝⁹ : Category.{?u.100951, u_2} D
inst✝⁸ : Category.{?u.100955, u_3} E
inst✝⁷ : Category.{?u.100959, u_4} E'
A : Type u_5
inst✝⁶ : AddMonoid A
inst✝⁵ : HasShift D A
inst✝⁴ : HasShift E A
inst✝³ : HasShift E' A
F G✝ H : SingleFunctors C D A
G G' : D ⥤ E
e : G ≅ G'
inst✝² : G.CommShift A
inst✝¹ : G'.CommShift A
inst✝ : NatTrans.CommShift e.hom A
n a a' : A
ha' : n + a = a'
X : C
⊢ ((F.postcomp G).shiftIso n a a' ha').hom.app X ≫ e.hom.app ((F.functor a).obj X) =
    (shiftFunctor E n).map (e.hom.app ((F.functor a').obj X)) ≫ ((F.postcomp G').shiftIso n a a' ha').hom.app X
tactic: dsimp
state_before: case w.h
C : Type u_1
D : Type u_2
E : Type u_3
E' : Type u_4
inst✝¹⁰ : Category.{?u.100947, u_1} C
inst✝⁹ : Category.{?u.100951, u_2} D
inst✝⁸ : Category.{?u.100955, u_3} E
inst✝⁷ : Category.{?u.100959, u_4} E'
A : Type u_5
inst✝⁶ : AddMonoid A
inst✝⁵ : HasShift D A
inst✝⁴ : HasShift E A
inst✝³ : HasShift E' A
F G✝ H : SingleFunctors C D A
G G' : D ⥤ E
e : G ≅ G'
inst✝² : G.CommShift A
inst✝¹ : G'.CommShift A
inst✝ : NatTrans.CommShift e.hom A
n a a' : A
ha' : n + a = a'
X : C
⊢ ((F.postcomp G).shiftIso n a a' ha').hom.app X ≫ e.hom.app ((F.functor a).obj X) =
    (shiftFunctor E n).map (e.hom.app ((F.functor a').obj X)) ≫ ((F.postcomp G').shiftIso n a a' ha').hom.app X
state_after: no goals
tactic: simp [NatTrans.CommShift.shift_app e.hom n]