-- Mathlib/Algebra/Homology/TotalComplexShift.lean
@[reassoc]
lemma ι_totalShift₁Iso_inv_f (a b n : ℤ) (h : a + b = n) (a' n' : ℤ)
    (ha' : a' + b = n') (hn' : n' = n + x) :
    K.ιTotal (up ℤ) a' b n' ha' ≫
      (CochainComplex.shiftFunctorObjXIso (K.total (up ℤ)) x n n' hn').inv ≫
        (K.totalShift₁Iso x).inv.f n =
      (K.shiftFunctor₁XXIso a x a' (by omega) b).inv ≫
        ((shiftFunctor₁ C x).obj K).ιTotal (up ℤ) a b n h

Proof state:
C : Type u_1
inst✝² : Category.{?u.87695, u_1} C
inst✝¹ : Preadditive C
K L : HomologicalComplex₂ C (up ℤ) (up ℤ)
f : K ⟶ L
x y : ℤ
inst✝ : K.HasTotal (up ℤ)
a b n : ℤ
h : a + b = n
a' n' : ℤ
ha' : a' + b = n'
hn' : n' = n + x
⊢ a' = a + x

Tactic:
omega

Result:
no goals

Proof state:
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
K : HomologicalComplex₂ C (up ℤ) (up ℤ)
x : ℤ
inst✝ : K.HasTotal (up ℤ)
a b n : ℤ
h : a + b = n
a' : ℤ
ha' : a' + b = n + x
⊢ K.ιTotal (up ℤ) a' b (n + x) ha' ≫
      (CochainComplex.shiftFunctorObjXIso (K.total (up ℤ)) x n (n + x) ⋯).inv ≫ (K.totalShift₁Iso x).inv.f n =
    (K.shiftFunctor₁XXIso a x a' ⋯ b).inv ≫ ((shiftFunctor₁ C x).obj K).ιTotal (up ℤ) a b n h

Tactic:
obtain rfl : a = a' - x := by omega

Result:
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
K : HomologicalComplex₂ C (up ℤ) (up ℤ)
x : ℤ
inst✝ : K.HasTotal (up ℤ)
b n a' : ℤ
ha' : a' + b = n + x
h : a' - x + b = n
⊢ K.ιTotal (up ℤ) a' b (n + x) ha' ≫
      (CochainComplex.shiftFunctorObjXIso (K.total (up ℤ)) x n (n + x) ⋯).inv ≫ (K.totalShift₁Iso x).inv.f n =
    (K.shiftFunctor₁XXIso (a' - x) x a' ⋯ b).inv ≫ ((shiftFunctor₁ C x).obj K).ιTotal (up ℤ) (a' - x) b n h

Proof state:
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
K : HomologicalComplex₂ C (up ℤ) (up ℤ)
x : ℤ
inst✝ : K.HasTotal (up ℤ)
a b n : ℤ
h : a + b = n
a' : ℤ
ha' : a' + b = n + x
⊢ a = a' - x

Tactic:
omega

Result:
no goals

Proof state:
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
K : HomologicalComplex₂ C (up ℤ) (up ℤ)
x : ℤ
inst✝ : K.HasTotal (up ℤ)
b n a' : ℤ
ha' : a' + b = n + x
h : a' - x + b = n
⊢ K.ιTotal (up ℤ) a' b (n + x) ha' ≫
      (CochainComplex.shiftFunctorObjXIso (K.total (up ℤ)) x n (n + x) ⋯).inv ≫ (K.totalShift₁Iso x).inv.f n =
    (K.shiftFunctor₁XXIso (a' - x) x a' ⋯ b).inv ≫ ((shiftFunctor₁ C x).obj K).ιTotal (up ℤ) (a' - x) b n h

Tactic:
dsimp [totalShift₁Iso, totalShift₁XIso, shiftFunctor₁XXIso, XXIsoOfEq]

Result:
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
K : HomologicalComplex₂ C (up ℤ) (up ℤ)
x : ℤ
inst✝ : K.HasTotal (up ℤ)
b n a' : ℤ
ha' : a' + b = n + x
h : a' - x + b = n
⊢ (K.ιTotal (up ℤ) a' b (n + x) ha' ≫
      𝟙 ((K.total (up ℤ)).X (n + x)) ≫
        K.totalDesc fun p q hpq => eqToHom ⋯ ≫ ((shiftFunctor₁ C x).obj K).ιTotal (up ℤ) (p - x) q n ⋯) =
    eqToHom ⋯ ≫ ((shiftFunctor₁ C x).obj K).ιTotal (up ℤ) (a' - x) b n h

Proof state:
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
K : HomologicalComplex₂ C (up ℤ) (up ℤ)
x : ℤ
inst✝ : K.HasTotal (up ℤ)
a b n : ℤ
h : a + b = n
a' n' : ℤ
ha' : a' + b = n'
hn' : n' = n + x
⊢ K.ιTotal (up ℤ) a' b n' ha' ≫
      (CochainComplex.shiftFunctorObjXIso (K.total (up ℤ)) x n n' hn').inv ≫ (K.totalShift₁Iso x).inv.f n =
    (K.shiftFunctor₁XXIso a x a' ⋯ b).inv ≫ ((shiftFunctor₁ C x).obj K).ιTotal (up ℤ) a b n h

Tactic:
subst hn'

Result:
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
K : HomologicalComplex₂ C (up ℤ) (up ℤ)
x : ℤ
inst✝ : K.HasTotal (up ℤ)
a b n : ℤ
h : a + b = n
a' : ℤ
ha' : a' + b = n + x
⊢ K.ιTotal (up ℤ) a' b (n + x) ha' ≫
      (CochainComplex.shiftFunctorObjXIso (K.total (up ℤ)) x n (n + x) ⋯).inv ≫ (K.totalShift₁Iso x).inv.f n =
    (K.shiftFunctor₁XXIso a x a' ⋯ b).inv ≫ ((shiftFunctor₁ C x).obj K).ιTotal (up ℤ) a b n h

Proof state:
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
K : HomologicalComplex₂ C (up ℤ) (up ℤ)
x : ℤ
inst✝ : K.HasTotal (up ℤ)
b n a' : ℤ
ha' : a' + b = n + x
h : a' - x + b = n
⊢ (K.ιTotal (up ℤ) a' b (n + x) ha' ≫
      𝟙 ((K.total (up ℤ)).X (n + x)) ≫
        K.totalDesc fun p q hpq => eqToHom ⋯ ≫ ((shiftFunctor₁ C x).obj K).ιTotal (up ℤ) (p - x) q n ⋯) =
    eqToHom ⋯ ≫ ((shiftFunctor₁ C x).obj K).ιTotal (up ℤ) (a' - x) b n h

Tactic:
simp only [id_comp, ι_totalDesc]

Result:
no goals