Theorem: CochainComplex.shiftFunctorAdd_hom_app_f
File: Mathlib/Algebra/Homology/HomotopyCategory/Shift.lean

tactic: dsimp
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : Preadditive D
K : CochainComplex C ℤ
a b n : ℤ
⊢ n + { as := a + b }.as = n + { as := b }.as + { as := a }.as
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : Preadditive D
K : CochainComplex C ℤ
a b n : ℤ
⊢ n + (a + b) = n + b + a

tactic: rw [add_comm a, add_assoc]
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : Preadditive D
K : CochainComplex C ℤ
a b n : ℤ
⊢ n + (a + b) = n + b + a
state_after: no goals

tactic: have : IsIso (((shiftFunctorAdd (CochainComplex C ℤ) a b).inv.app K).f n) := by
  rw [shiftFunctorAdd_inv_app_f]
  infer_instance
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : Preadditive D
K : CochainComplex C ℤ
a b n : ℤ
⊢ ((shiftFunctorAdd (CochainComplex C ℤ) a b).hom.app K).f n = (XIsoOfEq K ⋯).hom
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : Preadditive D
K : CochainComplex C ℤ
a b n : ℤ
this : IsIso (((shiftFunctorAdd (CochainComplex C ℤ) a b).inv.app K).f n)
⊢ ((shiftFunctorAdd (CochainComplex C ℤ) a b).hom.app K).f n = (XIsoOfEq K ⋯).hom

tactic: rw [← cancel_mono (((shiftFunctorAdd (CochainComplex C ℤ) a b).inv.app K).f n),
  ← comp_f, Iso.hom_inv_id_app, id_f, shiftFunctorAdd_inv_app_f]
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : Preadditive D
K : CochainComplex C ℤ
a b n : ℤ
this : IsIso (((shiftFunctorAdd (CochainComplex C ℤ) a b).inv.app K).f n)
⊢ ((shiftFunctorAdd (CochainComplex C ℤ) a b).hom.app K).f n = (XIsoOfEq K ⋯).hom
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : Preadditive D
K : CochainComplex C ℤ
a b n : ℤ
this : IsIso (((shiftFunctorAdd (CochainComplex C ℤ) a b).inv.app K).f n)
⊢ 𝟙 (((CategoryTheory.shiftFunctor (CochainComplex C ℤ) (a + b)).obj K).X n) = (XIsoOfEq K ⋯).hom ≫ (XIsoOfEq K ⋯).hom

tactic: simp only [XIsoOfEq, eqToIso.hom, eqToHom_trans, eqToHom_refl]
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : Preadditive D
K : CochainComplex C ℤ
a b n : ℤ
this : IsIso (((shiftFunctorAdd (CochainComplex C ℤ) a b).inv.app K).f n)
⊢ 𝟙 (((CategoryTheory.shiftFunctor (CochainComplex C ℤ) (a + b)).obj K).X n) = (XIsoOfEq K ⋯).hom ≫ (XIsoOfEq K ⋯).hom
state_after: no goals

tactic: rw [shiftFunctorAdd_inv_app_f]
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : Preadditive D
K : CochainComplex C ℤ
a b n : ℤ
⊢ IsIso (((shiftFunctorAdd (CochainComplex C ℤ) a b).inv.app K).f n)
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : Preadditive D
K : CochainComplex C ℤ
a b n : ℤ
⊢ IsIso (XIsoOfEq K ⋯).hom

tactic: infer_instance
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : Preadditive D
K : CochainComplex C ℤ
a b n : ℤ
⊢ IsIso (XIsoOfEq K ⋯).hom
state_after: no goals