Theorem: CategoryTheory.Localization.SmallShiftedHom.equiv_comp
File: Mathlib/CategoryTheory/Localization/SmallShiftedHom.lean

Proof steps:
state_before: C : Type u₁
inst✝¹² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹¹ : Category.{v₂, u₂} D
W : MorphismProperty C
M : Type w'
inst✝¹⁰ : AddMonoid M
inst✝⁹ : HasShift C M
inst✝⁸ : HasShift D M
inst✝⁷ : W.IsCompatibleWithShift M
L : C ⥤ D
inst✝⁶ : L.IsLocalization W
inst✝⁵ : HasShift D M
inst✝⁴ : L.CommShift M
X Y Z T : C
inst✝³ : HasSmallLocalizedShiftedHom W M X Y
inst✝² : HasSmallLocalizedShiftedHom W M Y Z
inst✝¹ : HasSmallLocalizedShiftedHom W M X Z
inst✝ : HasSmallLocalizedShiftedHom W M Z Z
a b c : M
f : SmallShiftedHom W X Y a
g : SmallShiftedHom W Y Z b
h : b + a = c
⊢ (equiv W L) (f.comp g h) = ((equiv W L) f).comp ((equiv W L) g) h
state_after: C : Type u₁
inst✝¹² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹¹ : Category.{v₂, u₂} D
W : MorphismProperty C
M : Type w'
inst✝¹⁰ : AddMonoid M
inst✝⁹ : HasShift C M
inst✝⁸ : HasShift D M
inst✝⁷ : W.IsCompatibleWithShift M
L : C ⥤ D
inst✝⁶ : L.IsLocalization W
inst✝⁵ : HasShift D M
inst✝⁴ : L.CommShift M
X Y Z T : C
inst✝³ : HasSmallLocalizedShiftedHom W M X Y
inst✝² : HasSmallLocalizedShiftedHom W M Y Z
inst✝¹ : HasSmallLocalizedShiftedHom W M X Z
inst✝ : HasSmallLocalizedShiftedHom W M Z Z
a b c : M
f : SmallShiftedHom W X Y a
g : SmallShiftedHom W Y Z b
h : b + a = c
⊢ ((L.commShiftIso c).app Z).homToEquiv ((SmallHom.equiv W L) (SmallHom.comp f (g.shift a c h))) =
    ((L.commShiftIso a).app Y).homToEquiv ((SmallHom.equiv W L) f) ≫
      (shiftFunctor D a).map (((L.commShiftIso b).app Z).homToEquiv ((SmallHom.equiv W L) g)) ≫
        (shiftFunctorAdd' D b a c h).inv.app (L.obj Z)
tactic: dsimp [comp, equiv, ShiftedHom.comp]
state_before: C : Type u₁
inst✝¹² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹¹ : Category.{v₂, u₂} D
W : MorphismProperty C
M : Type w'
inst✝¹⁰ : AddMonoid M
inst✝⁹ : HasShift C M
inst✝⁸ : HasShift D M
inst✝⁷ : W.IsCompatibleWithShift M
L : C ⥤ D
inst✝⁶ : L.IsLocalization W
inst✝⁵ : HasShift D M
inst✝⁴ : L.CommShift M
X Y Z T : C
inst✝³ : HasSmallLocalizedShiftedHom W M X Y
inst✝² : HasSmallLocalizedShiftedHom W M Y Z
inst✝¹ : HasSmallLocalizedShiftedHom W M X Z
inst✝ : HasSmallLocalizedShiftedHom W M Z Z
a b c : M
f : SmallShiftedHom W X Y a
g : SmallShiftedHom W Y Z b
h : b + a = c
⊢ ((L.commShiftIso c).app Z).homToEquiv ((SmallHom.equiv W L) (SmallHom.comp f (g.shift a c h))) =
    ((L.commShiftIso a).app Y).homToEquiv ((SmallHom.equiv W L) f) ≫
      (shiftFunctor D a).map (((L.commShiftIso b).app Z).homToEquiv ((SmallHom.equiv W L) g)) ≫
        (shiftFunctorAdd' D b a c h).inv.app (L.obj Z)
state_after: C : Type u₁
inst✝¹² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹¹ : Category.{v₂, u₂} D
W : MorphismProperty C
M : Type w'
inst✝¹⁰ : AddMonoid M
inst✝⁹ : HasShift C M
inst✝⁸ : HasShift D M
inst✝⁷ : W.IsCompatibleWithShift M
L : C ⥤ D
inst✝⁶ : L.IsLocalization W
inst✝⁵ : HasShift D M
inst✝⁴ : L.CommShift M
X Y Z T : C
inst✝³ : HasSmallLocalizedShiftedHom W M X Y
inst✝² : HasSmallLocalizedShiftedHom W M Y Z
inst✝¹ : HasSmallLocalizedShiftedHom W M X Z
inst✝ : HasSmallLocalizedShiftedHom W M Z Z
a b c : M
f : SmallShiftedHom W X Y a
g : SmallShiftedHom W Y Z b
h : b + a = c
⊢ ((SmallHom.equiv W L) f ≫ (SmallHom.equiv W L) (g.shift a c h)) ≫ ((L.commShiftIso c).app Z).hom =
    ((SmallHom.equiv W L) f ≫ ((L.commShiftIso a).app Y).hom) ≫
      (shiftFunctor D a).map ((SmallHom.equiv W L) g ≫ ((L.commShiftIso b).app Z).hom) ≫
        (shiftFunctorAdd' D b a c h).inv.app (L.obj Z)
tactic: erw [Iso.homToEquiv_apply, Iso.homToEquiv_apply, Iso.homToEquiv_apply, SmallHom.equiv_comp]
state_before: C : Type u₁
inst✝¹² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹¹ : Category.{v₂, u₂} D
W : MorphismProperty C
M : Type w'
inst✝¹⁰ : AddMonoid M
inst✝⁹ : HasShift C M
inst✝⁸ : HasShift D M
inst✝⁷ : W.IsCompatibleWithShift M
L : C ⥤ D
inst✝⁶ : L.IsLocalization W
inst✝⁵ : HasShift D M
inst✝⁴ : L.CommShift M
X Y Z T : C
inst✝³ : HasSmallLocalizedShiftedHom W M X Y
inst✝² : HasSmallLocalizedShiftedHom W M Y Z
inst✝¹ : HasSmallLocalizedShiftedHom W M X Z
inst✝ : HasSmallLocalizedShiftedHom W M Z Z
a b c : M
f : SmallShiftedHom W X Y a
g : SmallShiftedHom W Y Z b
h : b + a = c
⊢ ((SmallHom.equiv W L) f ≫ (SmallHom.equiv W L) (g.shift a c h)) ≫ ((L.commShiftIso c).app Z).hom =
    ((SmallHom.equiv W L) f ≫ ((L.commShiftIso a).app Y).hom) ≫
      (shiftFunctor D a).map ((SmallHom.equiv W L) g ≫ ((L.commShiftIso b).app Z).hom) ≫
        (shiftFunctorAdd' D b a c h).inv.app (L.obj Z)
state_after: C : Type u₁
inst✝¹² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹¹ : Category.{v₂, u₂} D
W : MorphismProperty C
M : Type w'
inst✝¹⁰ : AddMonoid M
inst✝⁹ : HasShift C M
inst✝⁸ : HasShift D M
inst✝⁷ : W.IsCompatibleWithShift M
L : C ⥤ D
inst✝⁶ : L.IsLocalization W
inst✝⁵ : HasShift D M
inst✝⁴ : L.CommShift M
X Y Z T : C
inst✝³ : HasSmallLocalizedShiftedHom W M X Y
inst✝² : HasSmallLocalizedShiftedHom W M Y Z
inst✝¹ : HasSmallLocalizedShiftedHom W M X Z
inst✝ : HasSmallLocalizedShiftedHom W M Z Z
a b c : M
f : SmallShiftedHom W X Y a
g : SmallShiftedHom W Y Z b
h : b + a = c
⊢ (SmallHom.equiv W L) f ≫
      (L.commShiftIso a).hom.app Y ≫
        (shiftFunctor D a).map ((SmallHom.equiv W L) g) ≫
          (shiftFunctor D a).map ((L.commShiftIso b).hom.app Z) ≫ (shiftFunctorAdd' D b a c h).inv.app (L.obj Z) =
    (SmallHom.equiv W L) f ≫
      (L.commShiftIso a).hom.app Y ≫
        (shiftFunctor D a).map ((SmallHom.equiv W L) g) ≫
          (shiftFunctor D a).map ((L.commShiftIso b).hom.app Z) ≫ (shiftFunctorAdd' D b a c h).inv.app (L.obj Z)
tactic: simp only [equiv_shift', Functor.comp_obj, Iso.app_hom, assoc, Iso.inv_hom_id_app,
    comp_id, Functor.map_comp]
state_before: C : Type u₁
inst✝¹² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹¹ : Category.{v₂, u₂} D
W : MorphismProperty C
M : Type w'
inst✝¹⁰ : AddMonoid M
inst✝⁹ : HasShift C M
inst✝⁸ : HasShift D M
inst✝⁷ : W.IsCompatibleWithShift M
L : C ⥤ D
inst✝⁶ : L.IsLocalization W
inst✝⁵ : HasShift D M
inst✝⁴ : L.CommShift M
X Y Z T : C
inst✝³ : HasSmallLocalizedShiftedHom W M X Y
inst✝² : HasSmallLocalizedShiftedHom W M Y Z
inst✝¹ : HasSmallLocalizedShiftedHom W M X Z
inst✝ : HasSmallLocalizedShiftedHom W M Z Z
a b c : M
f : SmallShiftedHom W X Y a
g : SmallShiftedHom W Y Z b
h : b + a = c
⊢ (SmallHom.equiv W L) f ≫
      (L.commShiftIso a).hom.app Y ≫
        (shiftFunctor D a).map ((SmallHom.equiv W L) g) ≫
          (shiftFunctor D a).map ((L.commShiftIso b).hom.app Z) ≫ (shiftFunctorAdd' D b a c h).inv.app (L.obj Z) =
    (SmallHom.equiv W L) f ≫
      (L.commShiftIso a).hom.app Y ≫
        (shiftFunctor D a).map ((SmallHom.equiv W L) g) ≫
          (shiftFunctor D a).map ((L.commShiftIso b).hom.app Z) ≫ (shiftFunctorAdd' D b a c h).inv.app (L.obj Z)
state_after: no goals
tactic: rfl