Theorem: AlgebraicTopology.DoldKan.Γ₂N₁.natTrans_app_f_app
File: Mathlib/AlgebraicTopology/DoldKan/NCompGamma.lean

Proof steps:
state_before: C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
Δ Δ' : SimplexCategoryᵒᵖ
θ : Δ ⟶ Δ'
⊢ ((N₁ ⋙ Γ₂).obj X).X.map θ ≫
      (fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op) Δ' =
    (fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op) Δ ≫
      ((toKaroubi (SimplicialObject C)).obj X).X.map θ
state_after: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
Δ Δ' : SimplexCategoryᵒᵖ
θ : Δ ⟶ Δ'
⊢ ∀ (A : Splitting.IndexSet Δ),
    ((Γ₀.splitting K[X]).cofan Δ).inj A ≫
        ((N₁ ⋙ Γ₂).obj X).X.map θ ≫
          (fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op) Δ' =
      ((Γ₀.splitting K[X]).cofan Δ).inj A ≫
        (fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op) Δ ≫
          ((toKaroubi (SimplicialObject C)).obj X).X.map θ
tactic: apply (Γ₀.splitting K[X]).hom_ext'
state_before: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
Δ Δ' : SimplexCategoryᵒᵖ
θ : Δ ⟶ Δ'
⊢ ∀ (A : Splitting.IndexSet Δ),
    ((Γ₀.splitting K[X]).cofan Δ).inj A ≫
        ((N₁ ⋙ Γ₂).obj X).X.map θ ≫
          (fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op) Δ' =
      ((Γ₀.splitting K[X]).cofan Δ).inj A ≫
        (fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op) Δ ≫
          ((toKaroubi (SimplicialObject C)).obj X).X.map θ
state_after: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
Δ Δ' : SimplexCategoryᵒᵖ
θ : Δ ⟶ Δ'
A : Splitting.IndexSet Δ
⊢ ((Γ₀.splitting K[X]).cofan Δ).inj A ≫
      ((N₁ ⋙ Γ₂).obj X).X.map θ ≫
        (fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op) Δ' =
    ((Γ₀.splitting K[X]).cofan Δ).inj A ≫
      (fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op) Δ ≫
        ((toKaroubi (SimplicialObject C)).obj X).X.map θ
tactic: intro A
state_before: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
Δ Δ' : SimplexCategoryᵒᵖ
θ : Δ ⟶ Δ'
A : Splitting.IndexSet Δ
⊢ ((Γ₀.splitting K[X]).cofan Δ).inj A ≫
      ((N₁ ⋙ Γ₂).obj X).X.map θ ≫
        (fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op) Δ' =
    ((Γ₀.splitting K[X]).cofan Δ).inj A ≫
      (fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op) Δ ≫
        ((toKaroubi (SimplicialObject C)).obj X).X.map θ
state_after: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
Δ Δ' : SimplexCategoryᵒᵖ
θ : Δ ⟶ Δ'
A : Splitting.IndexSet Δ
⊢ ((Γ₀.splitting K[X]).cofan Δ).inj A ≫
      (Γ₀.obj K[X]).map θ ≫ (fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op) Δ' =
    ((Γ₀.splitting K[X]).cofan Δ).inj A ≫
      (fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op) Δ ≫
        ((toKaroubi (SimplicialObject C)).obj X).X.map θ
tactic: change _ ≫ (Γ₀.obj K[X]).map θ ≫ _ = _
state_before: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
Δ Δ' : SimplexCategoryᵒᵖ
θ : Δ ⟶ Δ'
A : Splitting.IndexSet Δ
⊢ ((Γ₀.splitting K[X]).cofan Δ).inj A ≫
      (Γ₀.obj K[X]).map θ ≫ (fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op) Δ' =
    ((Γ₀.splitting K[X]).cofan Δ).inj A ≫
      (fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op) Δ ≫
        ((toKaroubi (SimplicialObject C)).obj X).X.map θ
state_after: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
Δ Δ' : SimplexCategoryᵒᵖ
θ : Δ ⟶ Δ'
A : Splitting.IndexSet Δ
⊢ Γ₀.Obj.Termwise.mapMono K[X] (image.ι (θ.unop ≫ A.e)) ≫ PInfty.f (unop (A.pull θ).fst).len ≫ X.map (A.pull θ).e.op =
    PInfty.f (unop A.fst).len ≫ X.map A.e.op ≫ ((toKaroubi (SimplicialObject C)).obj X).X.map θ
tactic: simp only [Splitting.ι_desc_assoc, assoc, Γ₀.Obj.map_on_summand'_assoc,
              Splitting.ι_desc]
state_before: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
Δ Δ' : SimplexCategoryᵒᵖ
θ : Δ ⟶ Δ'
A : Splitting.IndexSet Δ
⊢ Γ₀.Obj.Termwise.mapMono K[X] (image.ι (θ.unop ≫ A.e)) ≫ PInfty.f (unop (A.pull θ).fst).len ≫ X.map (A.pull θ).e.op =
    PInfty.f (unop A.fst).len ≫ X.map A.e.op ≫ ((toKaroubi (SimplicialObject C)).obj X).X.map θ
state_after: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
Δ Δ' : SimplexCategoryᵒᵖ
θ : Δ ⟶ Δ'
A : Splitting.IndexSet Δ
⊢ PInfty.f (unop A.fst).len ≫ X.map (image.ι (θ.unop ≫ A.e)).op ≫ X.map (A.pull θ).e.op =
    PInfty.f (unop A.fst).len ≫ X.map A.e.op ≫ ((toKaroubi (SimplicialObject C)).obj X).X.map θ
tactic: erw [Γ₀_obj_termwise_mapMono_comp_PInfty_assoc X (image.ι (θ.unop ≫ A.e))]
state_before: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
Δ Δ' : SimplexCategoryᵒᵖ
θ : Δ ⟶ Δ'
A : Splitting.IndexSet Δ
⊢ PInfty.f (unop A.fst).len ≫ X.map (image.ι (θ.unop ≫ A.e)).op ≫ X.map (A.pull θ).e.op =
    PInfty.f (unop A.fst).len ≫ X.map A.e.op ≫ ((toKaroubi (SimplicialObject C)).obj X).X.map θ
state_after: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
Δ Δ' : SimplexCategoryᵒᵖ
θ : Δ ⟶ Δ'
A : Splitting.IndexSet Δ
⊢ PInfty.f (unop A.fst).len ≫ X.map (image.ι (θ.unop ≫ A.e)).op ≫ X.map (A.pull θ).e.op =
    PInfty.f (unop A.fst).len ≫ X.map A.e.op ≫ X.map θ
tactic: dsimp only [toKaroubi]
state_before: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
Δ Δ' : SimplexCategoryᵒᵖ
θ : Δ ⟶ Δ'
A : Splitting.IndexSet Δ
⊢ PInfty.f (unop A.fst).len ≫ X.map (image.ι (θ.unop ≫ A.e)).op ≫ X.map (A.pull θ).e.op =
    PInfty.f (unop A.fst).len ≫ X.map A.e.op ≫ X.map θ
state_after: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
Δ Δ' : SimplexCategoryᵒᵖ
θ : Δ ⟶ Δ'
A : Splitting.IndexSet Δ
⊢ PInfty.f (unop A.fst).len ≫ X.map ((image.ι (θ.unop ≫ A.e)).op ≫ (A.pull θ).e.op) =
    PInfty.f (unop A.fst).len ≫ X.map (A.e.op ≫ θ)
tactic: simp only [← X.map_comp]
state_before: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
Δ Δ' : SimplexCategoryᵒᵖ
θ : Δ ⟶ Δ'
A : Splitting.IndexSet Δ
⊢ PInfty.f (unop A.fst).len ≫ X.map ((image.ι (θ.unop ≫ A.e)).op ≫ (A.pull θ).e.op) =
    PInfty.f (unop A.fst).len ≫ X.map (A.e.op ≫ θ)
state_after: case h.e_a.e_a
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
Δ Δ' : SimplexCategoryᵒᵖ
θ : Δ ⟶ Δ'
A : Splitting.IndexSet Δ
⊢ (image.ι (θ.unop ≫ A.e)).op ≫ (A.pull θ).e.op = A.e.op ≫ θ
tactic: congr 2
state_before: case h.e_a.e_a
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
Δ Δ' : SimplexCategoryᵒᵖ
θ : Δ ⟶ Δ'
A : Splitting.IndexSet Δ
⊢ (image.ι (θ.unop ≫ A.e)).op ≫ (A.pull θ).e.op = A.e.op ≫ θ
state_after: case h.e_a.e_a
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
Δ Δ' : SimplexCategoryᵒᵖ
θ : Δ ⟶ Δ'
A : Splitting.IndexSet Δ
⊢ ((A.pull θ).e ≫ image.ι (θ.unop ≫ A.e)).op = A.e.op ≫ θ
tactic: simp only [eqToHom_refl, id_comp, comp_id, ← op_comp]
state_before: case h.e_a.e_a
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
Δ Δ' : SimplexCategoryᵒᵖ
θ : Δ ⟶ Δ'
A : Splitting.IndexSet Δ
⊢ ((A.pull θ).e ≫ image.ι (θ.unop ≫ A.e)).op = A.e.op ≫ θ
state_after: no goals
tactic: exact Quiver.Hom.unop_inj (A.fac_pull θ)
state_before: C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
⊢ { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op, naturality := ⋯ } =
    ((N₁ ⋙ Γ₂).obj X).p ≫
      { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op,
          naturality := ⋯ } ≫
        ((toKaroubi (SimplicialObject C)).obj X).p
state_after: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
⊢ ∀ (n : ℕ),
    (Γ₀.splitting K[X]).φ
        { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op,
          naturality := ⋯ }
        n =
      (Γ₀.splitting K[X]).φ
        (((N₁ ⋙ Γ₂).obj X).p ≫
          { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op,
              naturality := ⋯ } ≫
            ((toKaroubi (SimplicialObject C)).obj X).p)
        n
tactic: apply (Γ₀.splitting K[X]).hom_ext
state_before: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
⊢ ∀ (n : ℕ),
    (Γ₀.splitting K[X]).φ
        { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op,
          naturality := ⋯ }
        n =
      (Γ₀.splitting K[X]).φ
        (((N₁ ⋙ Γ₂).obj X).p ≫
          { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op,
              naturality := ⋯ } ≫
            ((toKaroubi (SimplicialObject C)).obj X).p)
        n
state_after: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
n : ℕ
⊢ (Γ₀.splitting K[X]).φ
      { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op, naturality := ⋯ }
      n =
    (Γ₀.splitting K[X]).φ
      (((N₁ ⋙ Γ₂).obj X).p ≫
        { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op,
            naturality := ⋯ } ≫
          ((toKaroubi (SimplicialObject C)).obj X).p)
      n
tactic: intro n
state_before: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
n : ℕ
⊢ (Γ₀.splitting K[X]).φ
      { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op, naturality := ⋯ }
      n =
    (Γ₀.splitting K[X]).φ
      (((N₁ ⋙ Γ₂).obj X).p ≫
        { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op,
            naturality := ⋯ } ≫
          ((toKaroubi (SimplicialObject C)).obj X).p)
      n
state_after: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
n : ℕ
⊢ ((Γ₀.splitting K[X]).ι n ≫ (Γ₀.splitting K[X]).desc (op [n]) fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op) =
    (Γ₀.splitting K[X]).ι n ≫
      ((Γ₀.splitting K[X]).desc (op [n]) fun A =>
          PInfty.f (unop A.fst).len ≫ ((Γ₀.splitting K[X]).cofan (op [n])).inj A) ≫
        ((Γ₀.splitting K[X]).desc (op [n]) fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op) ≫ 𝟙 (X _[n])
tactic: dsimp [N₁]
state_before: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X : SimplicialObject C
n : ℕ
⊢ ((Γ₀.splitting K[X]).ι n ≫ (Γ₀.splitting K[X]).desc (op [n]) fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op) =
    (Γ₀.splitting K[X]).ι n ≫
      ((Γ₀.splitting K[X]).desc (op [n]) fun A =>
          PInfty.f (unop A.fst).len ≫ ((Γ₀.splitting K[X]).cofan (op [n])).inj A) ≫
        ((Γ₀.splitting K[X]).desc (op [n]) fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op) ≫ 𝟙 (X _[n])
state_after: no goals
tactic: simp only [← Splitting.cofan_inj_id, Splitting.ι_desc, comp_id, Splitting.ι_desc_assoc,
          assoc, PInfty_f_idem_assoc]
state_before: C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X Y : SimplicialObject C
f : X ⟶ Y
⊢ (N₁ ⋙ Γ₂).map f ≫
      (fun X =>
          {
            f :=
              { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op,
                naturality := ⋯ },
            comm := ⋯ })
        Y =
    (fun X =>
          {
            f :=
              { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op,
                naturality := ⋯ },
            comm := ⋯ })
        X ≫
      (toKaroubi (SimplicialObject C)).map f
state_after: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X Y : SimplicialObject C
f : X ⟶ Y
⊢ ((N₁ ⋙ Γ₂).map f ≫
        (fun X =>
            {
              f :=
                { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op,
                  naturality := ⋯ },
              comm := ⋯ })
          Y).f =
    ((fun X =>
            {
              f :=
                { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op,
                  naturality := ⋯ },
              comm := ⋯ })
          X ≫
        (toKaroubi (SimplicialObject C)).map f).f
tactic: ext1
state_before: case h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X Y : SimplicialObject C
f : X ⟶ Y
⊢ ((N₁ ⋙ Γ₂).map f ≫
        (fun X =>
            {
              f :=
                { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op,
                  naturality := ⋯ },
              comm := ⋯ })
          Y).f =
    ((fun X =>
            {
              f :=
                { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op,
                  naturality := ⋯ },
              comm := ⋯ })
          X ≫
        (toKaroubi (SimplicialObject C)).map f).f
state_after: case h.h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X Y : SimplicialObject C
f : X ⟶ Y
⊢ ∀ (n : ℕ),
    (Γ₀.splitting K[X]).φ
        ((N₁ ⋙ Γ₂).map f ≫
            (fun X =>
                {
                  f :=
                    { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op,
                      naturality := ⋯ },
                  comm := ⋯ })
              Y).f
        n =
      (Γ₀.splitting K[X]).φ
        ((fun X =>
                {
                  f :=
                    { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op,
                      naturality := ⋯ },
                  comm := ⋯ })
              X ≫
            (toKaroubi (SimplicialObject C)).map f).f
        n
tactic: apply (Γ₀.splitting K[X]).hom_ext
state_before: case h.h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X Y : SimplicialObject C
f : X ⟶ Y
⊢ ∀ (n : ℕ),
    (Γ₀.splitting K[X]).φ
        ((N₁ ⋙ Γ₂).map f ≫
            (fun X =>
                {
                  f :=
                    { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op,
                      naturality := ⋯ },
                  comm := ⋯ })
              Y).f
        n =
      (Γ₀.splitting K[X]).φ
        ((fun X =>
                {
                  f :=
                    { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op,
                      naturality := ⋯ },
                  comm := ⋯ })
              X ≫
            (toKaroubi (SimplicialObject C)).map f).f
        n
state_after: case h.h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X Y : SimplicialObject C
f : X ⟶ Y
n : ℕ
⊢ (Γ₀.splitting K[X]).φ
      ((N₁ ⋙ Γ₂).map f ≫
          (fun X =>
              {
                f :=
                  { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op,
                    naturality := ⋯ },
                comm := ⋯ })
            Y).f
      n =
    (Γ₀.splitting K[X]).φ
      ((fun X =>
              {
                f :=
                  { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op,
                    naturality := ⋯ },
                comm := ⋯ })
            X ≫
          (toKaroubi (SimplicialObject C)).map f).f
      n
tactic: intro n
state_before: case h.h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X Y : SimplicialObject C
f : X ⟶ Y
n : ℕ
⊢ (Γ₀.splitting K[X]).φ
      ((N₁ ⋙ Γ₂).map f ≫
          (fun X =>
              {
                f :=
                  { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op,
                    naturality := ⋯ },
                comm := ⋯ })
            Y).f
      n =
    (Γ₀.splitting K[X]).φ
      ((fun X =>
              {
                f :=
                  { app := fun Δ => (Γ₀.splitting K[X]).desc Δ fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op,
                    naturality := ⋯ },
                comm := ⋯ })
            X ≫
          (toKaroubi (SimplicialObject C)).map f).f
      n
state_after: case h.h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X Y : SimplicialObject C
f : X ⟶ Y
n : ℕ
⊢ ((Γ₀.splitting K[X]).ι n ≫
      ((Γ₀.splitting K[X]).desc (op [n]) fun A =>
          (PInfty.f (unop A.fst).len ≫ f.app A.fst) ≫ ((Γ₀.splitting K[Y]).cofan (op [n])).inj A) ≫
        (Γ₀.splitting K[Y]).desc (op [n]) fun A => PInfty.f (unop A.fst).len ≫ Y.map A.e.op) =
    (Γ₀.splitting K[X]).ι n ≫
      ((Γ₀.splitting K[X]).desc (op [n]) fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op) ≫ f.app (op [n])
tactic: dsimp [N₁, toKaroubi]
state_before: case h.h
C : Type u_1
inst✝² : Category.{?u.26563, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
X Y : SimplicialObject C
f : X ⟶ Y
n : ℕ
⊢ ((Γ₀.splitting K[X]).ι n ≫
      ((Γ₀.splitting K[X]).desc (op [n]) fun A =>
          (PInfty.f (unop A.fst).len ≫ f.app A.fst) ≫ ((Γ₀.splitting K[Y]).cofan (op [n])).inj A) ≫
        (Γ₀.splitting K[Y]).desc (op [n]) fun A => PInfty.f (unop A.fst).len ≫ Y.map A.e.op) =
    (Γ₀.splitting K[X]).ι n ≫
      ((Γ₀.splitting K[X]).desc (op [n]) fun A => PInfty.f (unop A.fst).len ≫ X.map A.e.op) ≫ f.app (op [n])
state_after: no goals
tactic: simp only [← Splitting.cofan_inj_id, Splitting.ι_desc, Splitting.ι_desc_assoc, assoc,
      PInfty_f_idem_assoc, Karoubi.comp_f, NatTrans.comp_app, Γ₂_map_f_app,
      HomologicalComplex.comp_f, AlternatingFaceMapComplex.map_f, PInfty_f_naturality_assoc,
      NatTrans.naturality, Splitting.IndexSet.id_fst, unop_op, len_mk]