Theorem: CategoryTheory.Localization.SmallShiftedHom.equiv_shift
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
a : M
inst✝¹ : HasSmallLocalizedShiftedHom W M X Y
inst✝ : HasSmallLocalizedShiftedHom W M Y Y
f : SmallShiftedHom W X Y a
n a' : M
h : a + n = a'
⊢ (equiv W L) (f.shift n a' h) =
    (L.commShiftIso n).hom.app X ≫
      (shiftFunctor D n).map ((equiv W L) f) ≫ (shiftFunctorAdd' D a n a' h).inv.app (L.obj Y)
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
a : M
inst✝¹ : HasSmallLocalizedShiftedHom W M X Y
inst✝ : HasSmallLocalizedShiftedHom W M Y Y
f : SmallShiftedHom W X Y a
n a' : M
h : a + n = a'
⊢ ((L.commShiftIso a').app Y).homToEquiv ((SmallHom.equiv W L) (f.shift n a' h)) =
    (L.commShiftIso n).hom.app X ≫
      (shiftFunctor D n).map (((L.commShiftIso a).app Y).homToEquiv ((SmallHom.equiv W L) f)) ≫
        (shiftFunctorAdd' D a n a' h).inv.app (L.obj Y)
tactic: dsimp [equiv]
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
a : M
inst✝¹ : HasSmallLocalizedShiftedHom W M X Y
inst✝ : HasSmallLocalizedShiftedHom W M Y Y
f : SmallShiftedHom W X Y a
n a' : M
h : a + n = a'
⊢ ((L.commShiftIso a').app Y).homToEquiv ((SmallHom.equiv W L) (f.shift n a' h)) =
    (L.commShiftIso n).hom.app X ≫
      (shiftFunctor D n).map (((L.commShiftIso a).app Y).homToEquiv ((SmallHom.equiv W L) f)) ≫
        (shiftFunctorAdd' D a n a' h).inv.app (L.obj Y)
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
a : M
inst✝¹ : HasSmallLocalizedShiftedHom W M X Y
inst✝ : HasSmallLocalizedShiftedHom W M Y Y
f : SmallShiftedHom W X Y a
n a' : M
h : a + n = a'
⊢ ((L.commShiftIso n).hom.app X ≫
        (shiftFunctor D n).map ((SmallHom.equiv W L) f) ≫
          (shiftFunctor D n).map ((L.commShiftIso a).hom.app Y) ≫
            (shiftFunctorAdd' D a n a' h).inv.app (L.obj Y) ≫ (L.commShiftIso a').inv.app Y) ≫
      ((L.commShiftIso a').app Y).hom =
    (L.commShiftIso n).hom.app X ≫
      (shiftFunctor D n).map ((SmallHom.equiv W L) f ≫ ((L.commShiftIso a).app Y).hom) ≫
        (shiftFunctorAdd' D a n a' h).inv.app (L.obj Y)
tactic: erw [Iso.homToEquiv_apply, Iso.homToEquiv_apply, equiv_shift']
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
a : M
inst✝¹ : HasSmallLocalizedShiftedHom W M X Y
inst✝ : HasSmallLocalizedShiftedHom W M Y Y
f : SmallShiftedHom W X Y a
n a' : M
h : a + n = a'
⊢ ((L.commShiftIso n).hom.app X ≫
        (shiftFunctor D n).map ((SmallHom.equiv W L) f) ≫
          (shiftFunctor D n).map ((L.commShiftIso a).hom.app Y) ≫
            (shiftFunctorAdd' D a n a' h).inv.app (L.obj Y) ≫ (L.commShiftIso a').inv.app Y) ≫
      ((L.commShiftIso a').app Y).hom =
    (L.commShiftIso n).hom.app X ≫
      (shiftFunctor D n).map ((SmallHom.equiv W L) f ≫ ((L.commShiftIso a).app Y).hom) ≫
        (shiftFunctorAdd' D a n a' h).inv.app (L.obj Y)
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
a : M
inst✝¹ : HasSmallLocalizedShiftedHom W M X Y
inst✝ : HasSmallLocalizedShiftedHom W M Y Y
f : SmallShiftedHom W X Y a
n a' : M
h : a + n = a'
⊢ (L.commShiftIso n).hom.app X ≫
      (shiftFunctor D n).map ((SmallHom.equiv W L) f) ≫
        (shiftFunctor D n).map ((L.commShiftIso a).hom.app Y) ≫ (shiftFunctorAdd' D a n a' h).inv.app (L.obj Y) =
    (L.commShiftIso n).hom.app X ≫
      (shiftFunctor D n).map ((SmallHom.equiv W L) f) ≫
        (shiftFunctor D n).map ((L.commShiftIso a).hom.app Y) ≫ (shiftFunctorAdd' D a n a' h).inv.app (L.obj Y)
tactic: simp only [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
a : M
inst✝¹ : HasSmallLocalizedShiftedHom W M X Y
inst✝ : HasSmallLocalizedShiftedHom W M Y Y
f : SmallShiftedHom W X Y a
n a' : M
h : a + n = a'
⊢ (L.commShiftIso n).hom.app X ≫
      (shiftFunctor D n).map ((SmallHom.equiv W L) f) ≫
        (shiftFunctor D n).map ((L.commShiftIso a).hom.app Y) ≫ (shiftFunctorAdd' D a n a' h).inv.app (L.obj Y) =
    (L.commShiftIso n).hom.app X ≫
      (shiftFunctor D n).map ((SmallHom.equiv W L) f) ≫
        (shiftFunctor D n).map ((L.commShiftIso a).hom.app Y) ≫ (shiftFunctorAdd' D a n a' h).inv.app (L.obj Y)
state_after: no goals
tactic: rfl