Theorem: AlgebraicTopology.DoldKan.N₂Γ₂ToKaroubiIso_inv_app
File: Mathlib/AlgebraicTopology/DoldKan/GammaCompN.lean

Proof steps:
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : ChainComplex C ℕ
⊢ (N₂Γ₂ToKaroubiIso.inv.app X).f = PInfty
state_after: case h
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : ChainComplex C ℕ
n : ℕ
⊢ (N₂Γ₂ToKaroubiIso.inv.app X).f.f n = PInfty.f n
tactic: ext n
state_before: case h
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : ChainComplex C ℕ
n : ℕ
⊢ (N₂Γ₂ToKaroubiIso.inv.app X).f.f n = PInfty.f n
state_after: case h
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : ChainComplex C ℕ
n : ℕ
⊢ (PInfty.f n ≫
      (PInfty.f n ≫ 𝟙 (Γ₀.Obj.obj₂ X (op [n]))) ≫
        (PInfty.f n ≫ 𝟙 (Γ₀.Obj.obj₂ X (op [n]))) ≫
          PInfty.f n ≫
            (Γ₀.splitting X).desc (op [n]) fun A =>
              𝟙 (X.X (unop A.fst).len) ≫ ((Γ₀.splitting X).cofan (op [n])).inj A) =
    PInfty.f n
tactic: dsimp [N₂Γ₂ToKaroubiIso]
state_before: case h
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : ChainComplex C ℕ
n : ℕ
⊢ (PInfty.f n ≫
      (PInfty.f n ≫ 𝟙 (Γ₀.Obj.obj₂ X (op [n]))) ≫
        (PInfty.f n ≫ 𝟙 (Γ₀.Obj.obj₂ X (op [n]))) ≫
          PInfty.f n ≫
            (Γ₀.splitting X).desc (op [n]) fun A =>
              𝟙 (X.X (unop A.fst).len) ≫ ((Γ₀.splitting X).cofan (op [n])).inj A) =
    PInfty.f n
state_after: case h
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : ChainComplex C ℕ
n : ℕ
⊢ (PInfty.f n ≫
      (Γ₀.splitting X).desc (op [n]) fun A => 𝟙 (X.X (unop A.fst).len) ≫ ((Γ₀.splitting X).cofan (op [n])).inj A) =
    PInfty.f n
tactic: simp only [comp_id, PInfty_f_idem_assoc, AlternatingFaceMapComplex.obj_X, Γ₀_obj_obj]
state_before: case h
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : ChainComplex C ℕ
n : ℕ
⊢ (PInfty.f n ≫
      (Γ₀.splitting X).desc (op [n]) fun A => 𝟙 (X.X (unop A.fst).len) ≫ ((Γ₀.splitting X).cofan (op [n])).inj A) =
    PInfty.f n
state_after: case h.e'_2.h.e'_7
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : ChainComplex C ℕ
n : ℕ
⊢ ((Γ₀.splitting X).desc (op [n]) fun A => 𝟙 (X.X (unop A.fst).len) ≫ ((Γ₀.splitting X).cofan (op [n])).inj A) =
    𝟙 (Γ₀.Obj.obj₂ X (op [n]))
tactic: convert comp_id _
state_before: case h.e'_2.h.e'_7
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : ChainComplex C ℕ
n : ℕ
⊢ ((Γ₀.splitting X).desc (op [n]) fun A => 𝟙 (X.X (unop A.fst).len) ≫ ((Γ₀.splitting X).cofan (op [n])).inj A) =
    𝟙 (Γ₀.Obj.obj₂ X (op [n]))
state_after: case h.e'_2.h.e'_7.h
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : ChainComplex C ℕ
n : ℕ
⊢ ∀ (A : Splitting.IndexSet (op [n])),
    (((Γ₀.splitting X).cofan (op [n])).inj A ≫
        (Γ₀.splitting X).desc (op [n]) fun A => 𝟙 (X.X (unop A.fst).len) ≫ ((Γ₀.splitting X).cofan (op [n])).inj A) =
      ((Γ₀.splitting X).cofan (op [n])).inj A ≫ 𝟙 (Γ₀.Obj.obj₂ X (op [n]))
tactic: apply (Γ₀.splitting X).hom_ext'
state_before: case h.e'_2.h.e'_7.h
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : ChainComplex C ℕ
n : ℕ
⊢ ∀ (A : Splitting.IndexSet (op [n])),
    (((Γ₀.splitting X).cofan (op [n])).inj A ≫
        (Γ₀.splitting X).desc (op [n]) fun A => 𝟙 (X.X (unop A.fst).len) ≫ ((Γ₀.splitting X).cofan (op [n])).inj A) =
      ((Γ₀.splitting X).cofan (op [n])).inj A ≫ 𝟙 (Γ₀.Obj.obj₂ X (op [n]))
state_after: case h.e'_2.h.e'_7.h
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : ChainComplex C ℕ
n : ℕ
A : Splitting.IndexSet (op [n])
⊢ (((Γ₀.splitting X).cofan (op [n])).inj A ≫
      (Γ₀.splitting X).desc (op [n]) fun A => 𝟙 (X.X (unop A.fst).len) ≫ ((Γ₀.splitting X).cofan (op [n])).inj A) =
    ((Γ₀.splitting X).cofan (op [n])).inj A ≫ 𝟙 (Γ₀.Obj.obj₂ X (op [n]))
tactic: intro A
state_before: case h.e'_2.h.e'_7.h
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : ChainComplex C ℕ
n : ℕ
A : Splitting.IndexSet (op [n])
⊢ (((Γ₀.splitting X).cofan (op [n])).inj A ≫
      (Γ₀.splitting X).desc (op [n]) fun A => 𝟙 (X.X (unop A.fst).len) ≫ ((Γ₀.splitting X).cofan (op [n])).inj A) =
    ((Γ₀.splitting X).cofan (op [n])).inj A ≫ 𝟙 (Γ₀.Obj.obj₂ X (op [n]))
state_after: case h.e'_2.h.e'_7.h
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : ChainComplex C ℕ
n : ℕ
A : Splitting.IndexSet (op [n])
⊢ 𝟙 (X.X (unop A.fst).len) ≫ ((Γ₀.splitting X).cofan (op [n])).inj A =
    ((Γ₀.splitting X).cofan (op [n])).inj A ≫ 𝟙 (Γ₀.Obj.obj₂ X (op [n]))
tactic: rw [Splitting.ι_desc]
state_before: case h.e'_2.h.e'_7.h
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : ChainComplex C ℕ
n : ℕ
A : Splitting.IndexSet (op [n])
⊢ 𝟙 (X.X (unop A.fst).len) ≫ ((Γ₀.splitting X).cofan (op [n])).inj A =
    ((Γ₀.splitting X).cofan (op [n])).inj A ≫ 𝟙 (Γ₀.Obj.obj₂ X (op [n]))
state_after: no goals
tactic: erw [comp_id, id_comp]