Theorem: CochainComplex.shiftFunctorAdd'_inv_app_f
File: Mathlib/Algebra/Homology/HomotopyCategory/Shift.lean

Proof steps:
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : Preadditive D
n₁ n₂ n₁₂ : ℤ
h : n₁ + n₂ = n₁₂
K : CochainComplex C ℤ
i : ℤ
⊢ i + n₂ + n₁ = i + n₁₂
state_after: no goals
tactic: omega
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : Preadditive D
n₁ n₂ n₁₂ : ℤ
h : n₁ + n₂ = n₁₂
K : CochainComplex C ℤ
x✝² x✝¹ : ℤ
x✝ : (ComplexShape.up ℤ).Rel x✝² x✝¹
⊢ ((fun i => K.shiftFunctorObjXIso n₁₂ i (i + n₂ + n₁) ⋯) x✝²).hom ≫
      ((shiftFunctor C n₁ ⋙ shiftFunctor C n₂).obj K).d x✝² x✝¹ =
    ((shiftFunctor C n₁₂).obj K).d x✝² x✝¹ ≫ ((fun i => K.shiftFunctorObjXIso n₁₂ i (i + n₂ + n₁) ⋯) x✝¹).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
n₁ n₂ : ℤ
K : CochainComplex C ℤ
x✝² x✝¹ : ℤ
x✝ : (ComplexShape.up ℤ).Rel x✝² x✝¹
⊢ ((fun i => K.shiftFunctorObjXIso (n₁ + n₂) i (i + n₂ + n₁) ⋯) x✝²).hom ≫
      ((shiftFunctor C n₁ ⋙ shiftFunctor C n₂).obj K).d x✝² x✝¹ =
    ((shiftFunctor C (n₁ + n₂)).obj K).d x✝² x✝¹ ≫
      ((fun i => K.shiftFunctorObjXIso (n₁ + n₂) i (i + n₂ + n₁) ⋯) x✝¹).hom
tactic: subst h
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : Preadditive D
n₁ n₂ : ℤ
K : CochainComplex C ℤ
x✝² x✝¹ : ℤ
x✝ : (ComplexShape.up ℤ).Rel x✝² x✝¹
⊢ ((fun i => K.shiftFunctorObjXIso (n₁ + n₂) i (i + n₂ + n₁) ⋯) x✝²).hom ≫
      ((shiftFunctor C n₁ ⋙ shiftFunctor C n₂).obj K).d x✝² x✝¹ =
    ((shiftFunctor C (n₁ + n₂)).obj K).d x✝² x✝¹ ≫
      ((fun i => K.shiftFunctorObjXIso (n₁ + n₂) i (i + n₂ + n₁) ⋯) x✝¹).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
n₁ n₂ : ℤ
K : CochainComplex C ℤ
x✝² x✝¹ : ℤ
x✝ : (ComplexShape.up ℤ).Rel x✝² x✝¹
⊢ (XIsoOfEq K ⋯).hom ≫ (n₂.negOnePow • n₁.negOnePow • K.d (x✝² + n₂ + n₁) (x✝¹ + n₂ + n₁)) =
    ((n₁ + n₂).negOnePow • K.d (x✝² + (n₁ + n₂)) (x✝¹ + (n₁ + n₂))) ≫ (XIsoOfEq K ⋯).hom
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
n₁ n₂ : ℤ
K : CochainComplex C ℤ
x✝² x✝¹ : ℤ
x✝ : (ComplexShape.up ℤ).Rel x✝² x✝¹
⊢ (XIsoOfEq K ⋯).hom ≫ (n₂.negOnePow • n₁.negOnePow • K.d (x✝² + n₂ + n₁) (x✝¹ + n₂ + n₁)) =
    ((n₁ + n₂).negOnePow • K.d (x✝² + (n₁ + n₂)) (x✝¹ + (n₁ + n₂))) ≫ (XIsoOfEq K ⋯).hom
state_after: no goals
tactic: simp only [add_comm n₁ n₂, Int.negOnePow_add, Linear.units_smul_comp,
        Linear.comp_units_smul, d_comp_XIsoOfEq_hom, smul_smul, XIsoOfEq_hom_comp_d]
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : Preadditive D
n₁ n₂ n₁₂ : ℤ
h : n₁ + n₂ = n₁₂
⊢ ∀ {X Y : CochainComplex C ℤ} (f : X ⟶ Y),
    (shiftFunctor C n₁₂).map f ≫
        ((fun K => Hom.isoOfComponents (fun i => K.shiftFunctorObjXIso n₁₂ i (i + n₂ + n₁) ⋯) ⋯) Y).hom =
      ((fun K => Hom.isoOfComponents (fun i => K.shiftFunctorObjXIso n₁₂ i (i + n₂ + n₁) ⋯) ⋯) X).hom ≫
        (shiftFunctor C n₁ ⋙ shiftFunctor C n₂).map f
state_after: no goals
tactic: aesop_cat