Theorem: CategoryTheory.Functor.shiftIso_hom_app_comp_shiftMap_of_add_eq_zero
File: Mathlib/CategoryTheory/Shift/ShiftSequence.lean

tactic: rw [← ha', ← add_assoc, hnm, zero_add]
state_before: C : Type u_1
A : Type u_2
inst✝⁷ : Category.{?u.87803, u_1} C
inst✝⁶ : Category.{?u.87807, u_2} A
F : C ⥤ A
M : Type u_3
inst✝⁵ : AddMonoid M
inst✝⁴ : HasShift C M
G : Type u_4
inst✝³ : AddGroup G
inst✝² : HasShift C G
inst✝¹ : F.ShiftSequence M
inst✝ : F.ShiftSequence G
X Y : C
m : G
f : X ⟶ (shiftFunctor C m).obj Y
n : G
hnm : n + m = 0
a a' : G
ha' : m + a = a'
⊢ n + a' = a
state_after: no goals

tactic: rw [← add_left_inj m, add_assoc, hnm, zero_add, add_zero]
state_before: C : Type u_1
A : Type u_2
inst✝⁷ : Category.{?u.87803, u_1} C
inst✝⁶ : Category.{?u.87807, u_2} A
F : C ⥤ A
M : Type u_3
inst✝⁵ : AddMonoid M
inst✝⁴ : HasShift C M
G : Type u_4
inst✝³ : AddGroup G
inst✝² : HasShift C G
inst✝¹ : F.ShiftSequence M
inst✝ : F.ShiftSequence G
X Y : C
m : G
f : X ⟶ (shiftFunctor C m).obj Y
n : G
hnm : n + m = 0
a a' : G
ha' : m + a = a'
⊢ m + n = 0
state_after: no goals

tactic: have hnm' : m + n = 0 := by
  rw [← add_left_inj m, add_assoc, hnm, zero_add, add_zero]
state_before: C : Type u_1
A : Type u_2
inst✝⁷ : Category.{u_5, u_1} C
inst✝⁶ : Category.{u_6, u_2} A
F : C ⥤ A
M : Type u_3
inst✝⁵ : AddMonoid M
inst✝⁴ : HasShift C M
G : Type u_4
inst✝³ : AddGroup G
inst✝² : HasShift C G
inst✝¹ : F.ShiftSequence M
inst✝ : F.ShiftSequence G
X Y : C
m : G
f : X ⟶ (shiftFunctor C m).obj Y
n : G
hnm : n + m = 0
a a' : G
ha' : m + a = a'
⊢ (F.shiftIso n a' a ⋯).hom.app X ≫ F.shiftMap f a a' ha' =
    (F.shift a').map ((shiftFunctor C n).map f ≫ (shiftFunctorCompIsoId C m n ⋯).hom.app Y)
state_after: C : Type u_1
A : Type u_2
inst✝⁷ : Category.{u_5, u_1} C
inst✝⁶ : Category.{u_6, u_2} A
F : C ⥤ A
M : Type u_3
inst✝⁵ : AddMonoid M
inst✝⁴ : HasShift C M
G : Type u_4
inst✝³ : AddGroup G
inst✝² : HasShift C G
inst✝¹ : F.ShiftSequence M
inst✝ : F.ShiftSequence G
X Y : C
m : G
f : X ⟶ (shiftFunctor C m).obj Y
n : G
hnm : n + m = 0
a a' : G
ha' : m + a = a'
hnm' : m + n = 0
⊢ (F.shiftIso n a' a ⋯).hom.app X ≫ F.shiftMap f a a' ha' =
    (F.shift a').map ((shiftFunctor C n).map f ≫ (shiftFunctorCompIsoId C m n ⋯).hom.app Y)

tactic: simp [F.shiftIso_hom_app_comp_shiftMap f n 0 hnm' a' a, shiftIso_zero_hom_app,
  shiftFunctorCompIsoId]
state_before: C : Type u_1
A : Type u_2
inst✝⁷ : Category.{u_5, u_1} C
inst✝⁶ : Category.{u_6, u_2} A
F : C ⥤ A
M : Type u_3
inst✝⁵ : AddMonoid M
inst✝⁴ : HasShift C M
G : Type u_4
inst✝³ : AddGroup G
inst✝² : HasShift C G
inst✝¹ : F.ShiftSequence M
inst✝ : F.ShiftSequence G
X Y : C
m : G
f : X ⟶ (shiftFunctor C m).obj Y
n : G
hnm : n + m = 0
a a' : G
ha' : m + a = a'
hnm' : m + n = 0
⊢ (F.shiftIso n a' a ⋯).hom.app X ≫ F.shiftMap f a a' ha' =
    (F.shift a').map ((shiftFunctor C n).map f ≫ (shiftFunctorCompIsoId C m n ⋯).hom.app Y)
state_after: no goals

tactic: rw [← add_left_inj m, add_assoc, hnm, zero_add, add_zero]
state_before: C : Type u_1
A : Type u_2
inst✝⁷ : Category.{u_5, u_1} C
inst✝⁶ : Category.{u_6, u_2} A
F : C ⥤ A
M : Type u_3
inst✝⁵ : AddMonoid M
inst✝⁴ : HasShift C M
G : Type u_4
inst✝³ : AddGroup G
inst✝² : HasShift C G
inst✝¹ : F.ShiftSequence M
inst✝ : F.ShiftSequence G
X Y : C
m : G
f : X ⟶ (shiftFunctor C m).obj Y
n : G
hnm : n + m = 0
a a' : G
ha' : m + a = a'
⊢ m + n = 0
state_after: no goals