Theorem: AlgebraicTopology.DoldKan.Γ₀.map_app
File: Mathlib/AlgebraicTopology/DoldKan/FunctorGamma.lean

Proof steps:
state_before: C : Type u_1
inst✝² : Category.{?u.71152, u_1} C
inst✝¹ : Preadditive C
K✝ K'✝ : ChainComplex C ℕ
f✝ : K✝ ⟶ K'✝
Δ✝ Δ'✝ Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K K' : ChainComplex C ℕ
f : K ⟶ K'
Δ' Δ : SimplexCategoryᵒᵖ
θ : Δ' ⟶ Δ
⊢ (obj K).map θ ≫ (fun Δ => (splitting K).desc Δ fun A => f.f (unop A.fst).len ≫ ((splitting K').cofan Δ).inj A) Δ =
    (fun Δ => (splitting K).desc Δ fun A => f.f (unop A.fst).len ≫ ((splitting K').cofan Δ).inj A) Δ' ≫ (obj K').map θ
state_after: case h
C : Type u_1
inst✝² : Category.{?u.71152, u_1} C
inst✝¹ : Preadditive C
K✝ K'✝ : ChainComplex C ℕ
f✝ : K✝ ⟶ K'✝
Δ✝ Δ'✝ Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K K' : ChainComplex C ℕ
f : K ⟶ K'
Δ' Δ : SimplexCategoryᵒᵖ
θ : Δ' ⟶ Δ
⊢ ∀ (A : Splitting.IndexSet Δ'),
    ((splitting K).cofan Δ').inj A ≫
        (obj K).map θ ≫
          (fun Δ => (splitting K).desc Δ fun A => f.f (unop A.fst).len ≫ ((splitting K').cofan Δ).inj A) Δ =
      ((splitting K).cofan Δ').inj A ≫
        (fun Δ => (splitting K).desc Δ fun A => f.f (unop A.fst).len ≫ ((splitting K').cofan Δ).inj A) Δ' ≫
          (obj K').map θ
tactic: apply (Γ₀.splitting K).hom_ext'
state_before: case h
C : Type u_1
inst✝² : Category.{?u.71152, u_1} C
inst✝¹ : Preadditive C
K✝ K'✝ : ChainComplex C ℕ
f✝ : K✝ ⟶ K'✝
Δ✝ Δ'✝ Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K K' : ChainComplex C ℕ
f : K ⟶ K'
Δ' Δ : SimplexCategoryᵒᵖ
θ : Δ' ⟶ Δ
⊢ ∀ (A : Splitting.IndexSet Δ'),
    ((splitting K).cofan Δ').inj A ≫
        (obj K).map θ ≫
          (fun Δ => (splitting K).desc Δ fun A => f.f (unop A.fst).len ≫ ((splitting K').cofan Δ).inj A) Δ =
      ((splitting K).cofan Δ').inj A ≫
        (fun Δ => (splitting K).desc Δ fun A => f.f (unop A.fst).len ≫ ((splitting K').cofan Δ).inj A) Δ' ≫
          (obj K').map θ
state_after: case h
C : Type u_1
inst✝² : Category.{?u.71152, u_1} C
inst✝¹ : Preadditive C
K✝ K'✝ : ChainComplex C ℕ
f✝ : K✝ ⟶ K'✝
Δ✝ Δ'✝ Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K K' : ChainComplex C ℕ
f : K ⟶ K'
Δ' Δ : SimplexCategoryᵒᵖ
θ : Δ' ⟶ Δ
A : Splitting.IndexSet Δ'
⊢ ((splitting K).cofan Δ').inj A ≫
      (obj K).map θ ≫ (fun Δ => (splitting K).desc Δ fun A => f.f (unop A.fst).len ≫ ((splitting K').cofan Δ).inj A) Δ =
    ((splitting K).cofan Δ').inj A ≫
      (fun Δ => (splitting K).desc Δ fun A => f.f (unop A.fst).len ≫ ((splitting K').cofan Δ).inj A) Δ' ≫ (obj K').map θ
tactic: intro A
state_before: case h
C : Type u_1
inst✝² : Category.{?u.71152, u_1} C
inst✝¹ : Preadditive C
K✝ K'✝ : ChainComplex C ℕ
f✝ : K✝ ⟶ K'✝
Δ✝ Δ'✝ Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K K' : ChainComplex C ℕ
f : K ⟶ K'
Δ' Δ : SimplexCategoryᵒᵖ
θ : Δ' ⟶ Δ
A : Splitting.IndexSet Δ'
⊢ ((splitting K).cofan Δ').inj A ≫
      (obj K).map θ ≫ (fun Δ => (splitting K).desc Δ fun A => f.f (unop A.fst).len ≫ ((splitting K').cofan Δ).inj A) Δ =
    ((splitting K).cofan Δ').inj A ≫
      (fun Δ => (splitting K).desc Δ fun A => f.f (unop A.fst).len ≫ ((splitting K').cofan Δ).inj A) Δ' ≫ (obj K').map θ
state_after: case h
C : Type u_1
inst✝² : Category.{?u.71152, u_1} C
inst✝¹ : Preadditive C
K✝ K'✝ : ChainComplex C ℕ
f✝ : K✝ ⟶ K'✝
Δ✝ Δ'✝ Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K K' : ChainComplex C ℕ
f : K ⟶ K'
Δ' Δ : SimplexCategoryᵒᵖ
θ : Δ' ⟶ Δ
A : Splitting.IndexSet Δ'
⊢ Obj.Termwise.mapMono K (image.ι (θ.unop ≫ A.e)) ≫
      f.f (unop (A.pull θ).fst).len ≫ ((splitting K').cofan Δ).inj (A.pull θ) =
    f.f (unop A.fst).len ≫ Obj.Termwise.mapMono K' (image.ι (θ.unop ≫ A.e)) ≫ ((splitting K').cofan Δ).inj (A.pull θ)
tactic: simp only [(splitting K).ι_desc_assoc, Obj.map_on_summand'_assoc K _ θ, (splitting K).ι_desc,
      assoc, Obj.map_on_summand' K' _ θ]
state_before: case h
C : Type u_1
inst✝² : Category.{?u.71152, u_1} C
inst✝¹ : Preadditive C
K✝ K'✝ : ChainComplex C ℕ
f✝ : K✝ ⟶ K'✝
Δ✝ Δ'✝ Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K K' : ChainComplex C ℕ
f : K ⟶ K'
Δ' Δ : SimplexCategoryᵒᵖ
θ : Δ' ⟶ Δ
A : Splitting.IndexSet Δ'
⊢ Obj.Termwise.mapMono K (image.ι (θ.unop ≫ A.e)) ≫
      f.f (unop (A.pull θ).fst).len ≫ ((splitting K').cofan Δ).inj (A.pull θ) =
    f.f (unop A.fst).len ≫ Obj.Termwise.mapMono K' (image.ι (θ.unop ≫ A.e)) ≫ ((splitting K').cofan Δ).inj (A.pull θ)
state_after: no goals
tactic: apply Obj.Termwise.mapMono_naturality_assoc