Theorem: AlgebraicTopology.DoldKan.Γ₀NondegComplexIso_inv_f
File: Mathlib/AlgebraicTopology/DoldKan/GammaCompN.lean

Proof steps:
state_before: C : Type u_1
inst✝² : Category.{?u.42, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
⊢ ∀ (i j : ℕ),
    (ComplexShape.down ℕ).Rel i j →
      ((fun n => Iso.refl ((Γ₀.splitting K).nondegComplex.X n)) i).hom ≫ K.d i j =
        (Γ₀.splitting K).nondegComplex.d i j ≫ ((fun n => Iso.refl ((Γ₀.splitting K).nondegComplex.X n)) j).hom
state_after: C : Type u_1
inst✝² : Category.{?u.42, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
n : ℕ
⊢ ((fun n => Iso.refl ((Γ₀.splitting K).nondegComplex.X n)) (n + 1)).hom ≫ K.d (n + 1) n =
    (Γ₀.splitting K).nondegComplex.d (n + 1) n ≫ ((fun n => Iso.refl ((Γ₀.splitting K).nondegComplex.X n)) n).hom
tactic: rintro _ n (rfl : n + 1 = _)
state_before: C : Type u_1
inst✝² : Category.{?u.42, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
n : ℕ
⊢ ((fun n => Iso.refl ((Γ₀.splitting K).nondegComplex.X n)) (n + 1)).hom ≫ K.d (n + 1) n =
    (Γ₀.splitting K).nondegComplex.d (n + 1) n ≫ ((fun n => Iso.refl ((Γ₀.splitting K).nondegComplex.X n)) n).hom
state_after: C : Type u_1
inst✝² : Category.{?u.42, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
n : ℕ
⊢ 𝟙 ((Γ₀.splitting K).N (n + 1)) ≫ K.d (n + 1) n =
    (((Γ₀.splitting K).cofan (op [n + 1])).inj (Splitting.IndexSet.id (op [n + 1])) ≫
        (AlternatingFaceMapComplex.obj (Γ₀.obj K)).d (n + 1) n ≫
          (Γ₀.splitting K).πSummand (Splitting.IndexSet.id (op [n]))) ≫
      𝟙 ((Γ₀.splitting K).N n)
tactic: dsimp
state_before: C : Type u_1
inst✝² : Category.{?u.42, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
n : ℕ
⊢ 𝟙 ((Γ₀.splitting K).N (n + 1)) ≫ K.d (n + 1) n =
    (((Γ₀.splitting K).cofan (op [n + 1])).inj (Splitting.IndexSet.id (op [n + 1])) ≫
        (AlternatingFaceMapComplex.obj (Γ₀.obj K)).d (n + 1) n ≫
          (Γ₀.splitting K).πSummand (Splitting.IndexSet.id (op [n]))) ≫
      𝟙 ((Γ₀.splitting K).N n)
state_after: C : Type u_1
inst✝² : Category.{?u.42, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
n : ℕ
⊢ K.d (n + 1) n =
    ∑ j : Fin (n + 2),
      ((Γ₀.splitting K).cofan (op [n + 1])).inj (Splitting.IndexSet.id (op [n + 1])) ≫
        ((-1) ^ ↑j • (Γ₀.obj K).δ j) ≫ (Γ₀.splitting K).πSummand (Splitting.IndexSet.id (op [n]))
tactic: simp only [id_comp, comp_id, AlternatingFaceMapComplex.obj_d_eq, Preadditive.sum_comp,
        Preadditive.comp_sum]
state_before: C : Type u_1
inst✝² : Category.{?u.42, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
n : ℕ
⊢ K.d (n + 1) n =
    ∑ j : Fin (n + 2),
      ((Γ₀.splitting K).cofan (op [n + 1])).inj (Splitting.IndexSet.id (op [n + 1])) ≫
        ((-1) ^ ↑j • (Γ₀.obj K).δ j) ≫ (Γ₀.splitting K).πSummand (Splitting.IndexSet.id (op [n]))
state_after: C : Type u_1
inst✝² : Category.{?u.42, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
n : ℕ
⊢ K.d (n + 1) n =
    ((Γ₀.splitting K).cofan (op [n + 1])).inj (Splitting.IndexSet.id (op [n + 1])) ≫
      ((-1) ^ ↑0 • (Γ₀.obj K).δ 0) ≫ (Γ₀.splitting K).πSummand (Splitting.IndexSet.id (op [n]))

C : Type u_1
inst✝² : Category.{?u.42, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
n : ℕ
⊢ ∀ (x : Fin (n + 2)),
    x ≠ 0 →
      ((Γ₀.splitting K).cofan (op [n + 1])).inj (Splitting.IndexSet.id (op [n + 1])) ≫
          ((-1) ^ ↑x • (Γ₀.obj K).δ x) ≫ (Γ₀.splitting K).πSummand (Splitting.IndexSet.id (op [n])) =
        0
tactic: rw [Fintype.sum_eq_single (0 : Fin (n + 2))]