Theorem: HomologicalComplex.coconeOfHasColimitEval_pt_X
File: Mathlib/Algebra/Homology/HomologicalComplexLimits.lean

Proof steps:
state_before: C : Type u_1
ι : Type u_2
J : Type u_3
inst✝³ : Category.{?u.43710, u_1} C
inst✝² : Category.{?u.43714, u_3} J
c : ComplexShape ι
inst✝¹ : HasZeroMorphisms C
F : J ⥤ HomologicalComplex C c
inst✝ : ∀ (n : ι), HasColimit (F ⋙ eval C c n)
n m : ι
h : ¬c.Rel n m
⊢ (fun n m => colimMap { app := fun j => (F.obj j).d n m, naturality := ⋯ }) n m = 0
state_after: case w
C : Type u_1
ι : Type u_2
J : Type u_3
inst✝³ : Category.{?u.43710, u_1} C
inst✝² : Category.{?u.43714, u_3} J
c : ComplexShape ι
inst✝¹ : HasZeroMorphisms C
F : J ⥤ HomologicalComplex C c
inst✝ : ∀ (n : ι), HasColimit (F ⋙ eval C c n)
n m : ι
h : ¬c.Rel n m
j : J
⊢ colimit.ι (F ⋙ eval C c n) j ≫ (fun n m => colimMap { app := fun j => (F.obj j).d n m, naturality := ⋯ }) n m =
    colimit.ι (F ⋙ eval C c n) j ≫ 0
tactic: ext j
state_before: case w
C : Type u_1
ι : Type u_2
J : Type u_3
inst✝³ : Category.{?u.43710, u_1} C
inst✝² : Category.{?u.43714, u_3} J
c : ComplexShape ι
inst✝¹ : HasZeroMorphisms C
F : J ⥤ HomologicalComplex C c
inst✝ : ∀ (n : ι), HasColimit (F ⋙ eval C c n)
n m : ι
h : ¬c.Rel n m
j : J
⊢ colimit.ι (F ⋙ eval C c n) j ≫ (fun n m => colimMap { app := fun j => (F.obj j).d n m, naturality := ⋯ }) n m =
    colimit.ι (F ⋙ eval C c n) j ≫ 0
state_after: case w
C : Type u_1
ι : Type u_2
J : Type u_3
inst✝³ : Category.{?u.43710, u_1} C
inst✝² : Category.{?u.43714, u_3} J
c : ComplexShape ι
inst✝¹ : HasZeroMorphisms C
F : J ⥤ HomologicalComplex C c
inst✝ : ∀ (n : ι), HasColimit (F ⋙ eval C c n)
n m : ι
h : ¬c.Rel n m
j : J
⊢ { app := fun j => (F.obj j).d n m, naturality := ⋯ }.app j ≫ colimit.ι (F ⋙ eval C c m) j =
    colimit.ι (F ⋙ eval C c n) j ≫ 0
tactic: rw [ι_colimMap]
state_before: case w
C : Type u_1
ι : Type u_2
J : Type u_3
inst✝³ : Category.{?u.43710, u_1} C
inst✝² : Category.{?u.43714, u_3} J
c : ComplexShape ι
inst✝¹ : HasZeroMorphisms C
F : J ⥤ HomologicalComplex C c
inst✝ : ∀ (n : ι), HasColimit (F ⋙ eval C c n)
n m : ι
h : ¬c.Rel n m
j : J
⊢ { app := fun j => (F.obj j).d n m, naturality := ⋯ }.app j ≫ colimit.ι (F ⋙ eval C c m) j =
    colimit.ι (F ⋙ eval C c n) j ≫ 0
state_after: case w
C : Type u_1
ι : Type u_2
J : Type u_3
inst✝³ : Category.{?u.43710, u_1} C
inst✝² : Category.{?u.43714, u_3} J
c : ComplexShape ι
inst✝¹ : HasZeroMorphisms C
F : J ⥤ HomologicalComplex C c
inst✝ : ∀ (n : ι), HasColimit (F ⋙ eval C c n)
n m : ι
h : ¬c.Rel n m
j : J
⊢ (F.obj j).d n m ≫ colimit.ι (F ⋙ eval C c m) j = colimit.ι (F ⋙ eval C c n) j ≫ 0
tactic: dsimp
state_before: case w
C : Type u_1
ι : Type u_2
J : Type u_3
inst✝³ : Category.{?u.43710, u_1} C
inst✝² : Category.{?u.43714, u_3} J
c : ComplexShape ι
inst✝¹ : HasZeroMorphisms C
F : J ⥤ HomologicalComplex C c
inst✝ : ∀ (n : ι), HasColimit (F ⋙ eval C c n)
n m : ι
h : ¬c.Rel n m
j : J
⊢ (F.obj j).d n m ≫ colimit.ι (F ⋙ eval C c m) j = colimit.ι (F ⋙ eval C c n) j ≫ 0
state_after: no goals
tactic: rw [(F.obj j).shape _ _ h, zero_comp, comp_zero]
state_before: C : Type u_1
ι : Type u_2
J : Type u_3
inst✝³ : Category.{?u.43710, u_1} C
inst✝² : Category.{?u.43714, u_3} J
c : ComplexShape ι
inst✝¹ : HasZeroMorphisms C
F : J ⥤ HomologicalComplex C c
inst✝ : ∀ (n : ι), HasColimit (F ⋙ eval C c n)
i j : J
φ : i ⟶ j
⊢ F.map φ ≫ (fun j => { f := fun n => colimit.ι (F ⋙ eval C c n) j, comm' := ⋯ }) j =
    (fun j => { f := fun n => colimit.ι (F ⋙ eval C c n) j, comm' := ⋯ }) i ≫
      ((Functor.const J).obj
            { X := fun n => colimit (F ⋙ eval C c n),
              d := fun n m => colimMap { app := fun j => (F.obj j).d n m, naturality := ⋯ }, shape := ⋯,
              d_comp_d' := ⋯ }).map
        φ
state_after: case h
C : Type u_1
ι : Type u_2
J : Type u_3
inst✝³ : Category.{?u.43710, u_1} C
inst✝² : Category.{?u.43714, u_3} J
c : ComplexShape ι
inst✝¹ : HasZeroMorphisms C
F : J ⥤ HomologicalComplex C c
inst✝ : ∀ (n : ι), HasColimit (F ⋙ eval C c n)
i j : J
φ : i ⟶ j
n : ι
⊢ (F.map φ ≫ (fun j => { f := fun n => colimit.ι (F ⋙ eval C c n) j, comm' := ⋯ }) j).f n =
    ((fun j => { f := fun n => colimit.ι (F ⋙ eval C c n) j, comm' := ⋯ }) i ≫
          ((Functor.const J).obj
                { X := fun n => colimit (F ⋙ eval C c n),
                  d := fun n m => colimMap { app := fun j => (F.obj j).d n m, naturality := ⋯ }, shape := ⋯,
                  d_comp_d' := ⋯ }).map
            φ).f
      n
tactic: ext n
state_before: case h
C : Type u_1
ι : Type u_2
J : Type u_3
inst✝³ : Category.{?u.43710, u_1} C
inst✝² : Category.{?u.43714, u_3} J
c : ComplexShape ι
inst✝¹ : HasZeroMorphisms C
F : J ⥤ HomologicalComplex C c
inst✝ : ∀ (n : ι), HasColimit (F ⋙ eval C c n)
i j : J
φ : i ⟶ j
n : ι
⊢ (F.map φ ≫ (fun j => { f := fun n => colimit.ι (F ⋙ eval C c n) j, comm' := ⋯ }) j).f n =
    ((fun j => { f := fun n => colimit.ι (F ⋙ eval C c n) j, comm' := ⋯ }) i ≫
          ((Functor.const J).obj
                { X := fun n => colimit (F ⋙ eval C c n),
                  d := fun n m => colimMap { app := fun j => (F.obj j).d n m, naturality := ⋯ }, shape := ⋯,
                  d_comp_d' := ⋯ }).map
            φ).f
      n
state_after: case h
C : Type u_1
ι : Type u_2
J : Type u_3
inst✝³ : Category.{?u.43710, u_1} C
inst✝² : Category.{?u.43714, u_3} J
c : ComplexShape ι
inst✝¹ : HasZeroMorphisms C
F : J ⥤ HomologicalComplex C c
inst✝ : ∀ (n : ι), HasColimit (F ⋙ eval C c n)
i j : J
φ : i ⟶ j
n : ι
⊢ (F.map φ).f n ≫ colimit.ι (F ⋙ eval C c n) j = colimit.ι (F ⋙ eval C c n) i ≫ 𝟙 (colimit (F ⋙ eval C c n))
tactic: dsimp
state_before: case h
C : Type u_1
ι : Type u_2
J : Type u_3
inst✝³ : Category.{?u.43710, u_1} C
inst✝² : Category.{?u.43714, u_3} J
c : ComplexShape ι
inst✝¹ : HasZeroMorphisms C
F : J ⥤ HomologicalComplex C c
inst✝ : ∀ (n : ι), HasColimit (F ⋙ eval C c n)
i j : J
φ : i ⟶ j
n : ι
⊢ (F.map φ).f n ≫ colimit.ι (F ⋙ eval C c n) j = colimit.ι (F ⋙ eval C c n) i ≫ 𝟙 (colimit (F ⋙ eval C c n))
state_after: no goals
tactic: erw [colimit.w (F ⋙ eval C c n) φ, comp_id]