-- Mathlib/CategoryTheory/Localization/SmallShiftedHom.lean
@[simp]
lemma equiv_mk₀ [HasSmallLocalizedShiftedHom.{w} W M X Y]
    (m₀ : M) (hm₀ : m₀ = 0) (f : X ⟶ Y) :
    equiv W L (SmallShiftedHom.mk₀ W m₀ hm₀ f) =
      ShiftedHom.mk₀ m₀ hm₀ (L.map f)

Proof state:
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
L : C ⥤ D
inst✝² : L.IsLocalization W
inst✝¹ : L.CommShift M
X Y : C
inst✝ : HasSmallLocalizedShiftedHom W M X Y
f : X ⟶ Y
⊢ (equiv W L) (mk₀ W 0 ⋯ f) = ShiftedHom.mk₀ 0 ⋯ (L.map f)

Tactic:
dsimp [equiv, mk₀]

Result:
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
L : C ⥤ D
inst✝² : L.IsLocalization W
inst✝¹ : L.CommShift M
X Y : C
inst✝ : HasSmallLocalizedShiftedHom W M X Y
f : X ⟶ Y
⊢ ((L.commShiftIso 0).app Y).homToEquiv
      ((SmallHom.equiv W L) (SmallHom.mk W (f ≫ (shiftFunctorZero' C 0 ⋯).inv.app Y))) =
    ShiftedHom.mk₀ 0 ⋯ (L.map f)

Proof state:
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
L : C ⥤ D
inst✝² : L.IsLocalization W
inst✝¹ : L.CommShift M
X Y : C
inst✝ : HasSmallLocalizedShiftedHom W M X Y
f : X ⟶ Y
⊢ ((L.commShiftIso 0).app Y).homToEquiv
      ((SmallHom.equiv W L) (SmallHom.mk W (f ≫ (shiftFunctorZero' C 0 ⋯).inv.app Y))) =
    ShiftedHom.mk₀ 0 ⋯ (L.map f)

Tactic:
erw [SmallHom.equiv_mk, Iso.homToEquiv_apply, Functor.map_comp]

Result:
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
L : C ⥤ D
inst✝² : L.IsLocalization W
inst✝¹ : L.CommShift M
X Y : C
inst✝ : HasSmallLocalizedShiftedHom W M X Y
f : X ⟶ Y
⊢ (L.map f ≫ L.map ((shiftFunctorZero' C 0 ⋯).inv.app Y)) ≫ ((L.commShiftIso 0).app Y).hom =
    ShiftedHom.mk₀ 0 ⋯ (L.map f)

Proof state:
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
L : C ⥤ D
inst✝² : L.IsLocalization W
inst✝¹ : L.CommShift M
X Y : C
inst✝ : HasSmallLocalizedShiftedHom W M X Y
f : X ⟶ Y
⊢ (L.map f ≫ L.map ((shiftFunctorZero C M).inv.app Y ≫ 𝟙 ((shiftFunctor C 0).obj Y))) ≫ (L.commShiftIso 0).hom.app Y =
    L.map f ≫ (shiftFunctorZero D M).inv.app (L.obj Y) ≫ 𝟙 ((shiftFunctor D 0).obj (L.obj Y))

Tactic:
simp only [comp_id, L.commShiftIso_zero, Functor.CommShift.isoZero_hom_app, assoc,
  ← Functor.map_comp_assoc, Iso.inv_hom_id_app, Functor.id_obj, Functor.map_id, id_comp]

Result:
no goals

Proof state:
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
L : C ⥤ D
inst✝² : L.IsLocalization W
inst✝¹ : L.CommShift M
X Y : C
inst✝ : HasSmallLocalizedShiftedHom W M X Y
m₀ : M
hm₀ : m₀ = 0
f : X ⟶ Y
⊢ (equiv W L) (mk₀ W m₀ hm₀ f) = ShiftedHom.mk₀ m₀ hm₀ (L.map f)

Tactic:
subst hm₀

Result:
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
L : C ⥤ D
inst✝² : L.IsLocalization W
inst✝¹ : L.CommShift M
X Y : C
inst✝ : HasSmallLocalizedShiftedHom W M X Y
f : X ⟶ Y
⊢ (equiv W L) (mk₀ W 0 ⋯ f) = ShiftedHom.mk₀ 0 ⋯ (L.map f)

Proof state:
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
L : C ⥤ D
inst✝² : L.IsLocalization W
inst✝¹ : L.CommShift M
X Y : C
inst✝ : HasSmallLocalizedShiftedHom W M X Y
f : X ⟶ Y
⊢ (L.map f ≫ L.map ((shiftFunctorZero' C 0 ⋯).inv.app Y)) ≫ ((L.commShiftIso 0).app Y).hom =
    ShiftedHom.mk₀ 0 ⋯ (L.map f)

Tactic:
dsimp [equiv, mk₀, ShiftedHom.mk₀, shiftFunctorZero']

Result:
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
L : C ⥤ D
inst✝² : L.IsLocalization W
inst✝¹ : L.CommShift M
X Y : C
inst✝ : HasSmallLocalizedShiftedHom W M X Y
f : X ⟶ Y
⊢ (L.map f ≫ L.map ((shiftFunctorZero C M).inv.app Y ≫ 𝟙 ((shiftFunctor C 0).obj Y))) ≫ (L.commShiftIso 0).hom.app Y =
    L.map f ≫ (shiftFunctorZero D M).inv.app (L.obj Y) ≫ 𝟙 ((shiftFunctor D 0).obj (L.obj Y))