Theorem: HomologicalComplex.asFunctor_map
File: Mathlib/Algebra/Homology/Functor.lean

Proof steps:
state_before: V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
ι : Type u_1
c : ComplexShape ι
T : Type u_2
inst✝ : Category.{?u.78, u_2} T
C : HomologicalComplex (T ⥤ V) c
t : T
i j k : ι
x✝¹ : c.Rel i j
x✝ : c.Rel j k
⊢ (fun i j => (C.d i j).app t) i j ≫ (fun i j => (C.d i j).app t) j k = 0
state_after: V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
ι : Type u_1
c : ComplexShape ι
T : Type u_2
inst✝ : Category.{?u.78, u_2} T
C : HomologicalComplex (T ⥤ V) c
t : T
i j k : ι
x✝¹ : c.Rel i j
x✝ : c.Rel j k
this : C.d i j ≫ C.d j k = 0
⊢ (fun i j => (C.d i j).app t) i j ≫ (fun i j => (C.d i j).app t) j k = 0
tactic: have := C.d_comp_d i j k
state_before: V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
ι : Type u_1
c : ComplexShape ι
T : Type u_2
inst✝ : Category.{?u.78, u_2} T
C : HomologicalComplex (T ⥤ V) c
t : T
i j k : ι
x✝¹ : c.Rel i j
x✝ : c.Rel j k
this : C.d i j ≫ C.d j k = 0
⊢ (fun i j => (C.d i j).app t) i j ≫ (fun i j => (C.d i j).app t) j k = 0
state_after: V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
ι : Type u_1
c : ComplexShape ι
T : Type u_2
inst✝ : Category.{?u.78, u_2} T
C : HomologicalComplex (T ⥤ V) c
t : T
i j k : ι
x✝¹ : c.Rel i j
x✝ : c.Rel j k
this : ∀ (a : T), (C.d i j ≫ C.d j k).app a = NatTrans.app 0 a
⊢ (fun i j => (C.d i j).app t) i j ≫ (fun i j => (C.d i j).app t) j k = 0
tactic: rw [NatTrans.ext_iff, Function.funext_iff] at this
state_before: V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
ι : Type u_1
c : ComplexShape ι
T : Type u_2
inst✝ : Category.{?u.78, u_2} T
C : HomologicalComplex (T ⥤ V) c
t : T
i j k : ι
x✝¹ : c.Rel i j
x✝ : c.Rel j k
this : ∀ (a : T), (C.d i j ≫ C.d j k).app a = NatTrans.app 0 a
⊢ (fun i j => (C.d i j).app t) i j ≫ (fun i j => (C.d i j).app t) j k = 0
state_after: no goals
tactic: exact this t
state_before: V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
ι : Type u_1
c : ComplexShape ι
T : Type u_2
inst✝ : Category.{?u.78, u_2} T
C : HomologicalComplex (T ⥤ V) c
t : T
i j : ι
h : ¬c.Rel i j
⊢ (fun i j => (C.d i j).app t) i j = 0
state_after: V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
ι : Type u_1
c : ComplexShape ι
T : Type u_2
inst✝ : Category.{?u.78, u_2} T
C : HomologicalComplex (T ⥤ V) c
t : T
i j : ι
h : ¬c.Rel i j
this : C.d i j = 0
⊢ (fun i j => (C.d i j).app t) i j = 0
tactic: have := C.shape _ _ h
state_before: V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
ι : Type u_1
c : ComplexShape ι
T : Type u_2
inst✝ : Category.{?u.78, u_2} T
C : HomologicalComplex (T ⥤ V) c
t : T
i j : ι
h : ¬c.Rel i j
this : C.d i j = 0
⊢ (fun i j => (C.d i j).app t) i j = 0
state_after: V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
ι : Type u_1
c : ComplexShape ι
T : Type u_2
inst✝ : Category.{?u.78, u_2} T
C : HomologicalComplex (T ⥤ V) c
t : T
i j : ι
h : ¬c.Rel i j
this : ∀ (a : T), (C.d i j).app a = NatTrans.app 0 a
⊢ (fun i j => (C.d i j).app t) i j = 0
tactic: rw [NatTrans.ext_iff, Function.funext_iff] at this
state_before: V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
ι : Type u_1
c : ComplexShape ι
T : Type u_2
inst✝ : Category.{?u.78, u_2} T
C : HomologicalComplex (T ⥤ V) c
t : T
i j : ι
h : ¬c.Rel i j
this : ∀ (a : T), (C.d i j).app a = NatTrans.app 0 a
⊢ (fun i j => (C.d i j).app t) i j = 0
state_after: no goals
tactic: exact this t
state_before: V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
ι : Type u_1
c : ComplexShape ι
T : Type u_2
inst✝ : Category.{?u.78, u_2} T
C : HomologicalComplex (T ⥤ V) c
t : T
⊢ { obj := fun t => { X := fun i => (C.X i).obj t, d := fun i j => (C.d i j).app t, shape := ⋯, d_comp_d' := ⋯ },
          map := fun {X Y} h => { f := fun i => (C.X i).map h, comm' := ⋯ } }.map
      (𝟙 t) =
    𝟙
      ({ obj := fun t => { X := fun i => (C.X i).obj t, d := fun i j => (C.d i j).app t, shape := ⋯, d_comp_d' := ⋯ },
            map := fun {X Y} h => { f := fun i => (C.X i).map h, comm' := ⋯ } }.obj
        t)
state_after: case h
V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
ι : Type u_1
c : ComplexShape ι
T : Type u_2
inst✝ : Category.{?u.78, u_2} T
C : HomologicalComplex (T ⥤ V) c
t : T
i : ι
⊢ ({ obj := fun t => { X := fun i => (C.X i).obj t, d := fun i j => (C.d i j).app t, shape := ⋯, d_comp_d' := ⋯ },
              map := fun {X Y} h => { f := fun i => (C.X i).map h, comm' := ⋯ } }.map
          (𝟙 t)).f
      i =
    (𝟙
          ({
                obj := fun t =>
                  { X := fun i => (C.X i).obj t, d := fun i j => (C.d i j).app t, shape := ⋯, d_comp_d' := ⋯ },
                map := fun {X Y} h => { f := fun i => (C.X i).map h, comm' := ⋯ } }.obj
            t)).f
      i
tactic: ext i
state_before: case h
V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
ι : Type u_1
c : ComplexShape ι
T : Type u_2
inst✝ : Category.{?u.78, u_2} T
C : HomologicalComplex (T ⥤ V) c
t : T
i : ι
⊢ ({ obj := fun t => { X := fun i => (C.X i).obj t, d := fun i j => (C.d i j).app t, shape := ⋯, d_comp_d' := ⋯ },
              map := fun {X Y} h => { f := fun i => (C.X i).map h, comm' := ⋯ } }.map
          (𝟙 t)).f
      i =
    (𝟙
          ({
                obj := fun t =>
                  { X := fun i => (C.X i).obj t, d := fun i j => (C.d i j).app t, shape := ⋯, d_comp_d' := ⋯ },
                map := fun {X Y} h => { f := fun i => (C.X i).map h, comm' := ⋯ } }.obj
            t)).f
      i
state_after: case h
V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
ι : Type u_1
c : ComplexShape ι
T : Type u_2
inst✝ : Category.{?u.78, u_2} T
C : HomologicalComplex (T ⥤ V) c
t : T
i : ι
⊢ (C.X i).map (𝟙 t) = 𝟙 ((C.X i).obj t)
tactic: dsimp
state_before: case h
V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
ι : Type u_1
c : ComplexShape ι
T : Type u_2
inst✝ : Category.{?u.78, u_2} T
C : HomologicalComplex (T ⥤ V) c
t : T
i : ι
⊢ (C.X i).map (𝟙 t) = 𝟙 ((C.X i).obj t)
state_after: no goals
tactic: rw [(C.X i).map_id]
state_before: V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
ι : Type u_1
c : ComplexShape ι
T : Type u_2
inst✝ : Category.{?u.78, u_2} T
C : HomologicalComplex (T ⥤ V) c
X✝ Y✝ Z✝ : T
h₁ : X✝ ⟶ Y✝
h₂ : Y✝ ⟶ Z✝
⊢ { obj := fun t => { X := fun i => (C.X i).obj t, d := fun i j => (C.d i j).app t, shape := ⋯, d_comp_d' := ⋯ },
          map := fun {X Y} h => { f := fun i => (C.X i).map h, comm' := ⋯ } }.map
      (h₁ ≫ h₂) =
    { obj := fun t => { X := fun i => (C.X i).obj t, d := fun i j => (C.d i j).app t, shape := ⋯, d_comp_d' := ⋯ },
            map := fun {X Y} h => { f := fun i => (C.X i).map h, comm' := ⋯ } }.map
        h₁ ≫
      { obj := fun t => { X := fun i => (C.X i).obj t, d := fun i j => (C.d i j).app t, shape := ⋯, d_comp_d' := ⋯ },
            map := fun {X Y} h => { f := fun i => (C.X i).map h, comm' := ⋯ } }.map
        h₂
state_after: case h
V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
ι : Type u_1
c : ComplexShape ι
T : Type u_2
inst✝ : Category.{?u.78, u_2} T
C : HomologicalComplex (T ⥤ V) c
X✝ Y✝ Z✝ : T
h₁ : X✝ ⟶ Y✝
h₂ : Y✝ ⟶ Z✝
i : ι
⊢ ({ obj := fun t => { X := fun i => (C.X i).obj t, d := fun i j => (C.d i j).app t, shape := ⋯, d_comp_d' := ⋯ },
              map := fun {X Y} h => { f := fun i => (C.X i).map h, comm' := ⋯ } }.map
          (h₁ ≫ h₂)).f
      i =
    ({ obj := fun t => { X := fun i => (C.X i).obj t, d := fun i j => (C.d i j).app t, shape := ⋯, d_comp_d' := ⋯ },
                map := fun {X Y} h => { f := fun i => (C.X i).map h, comm' := ⋯ } }.map
            h₁ ≫
          {
                obj := fun t =>
                  { X := fun i => (C.X i).obj t, d := fun i j => (C.d i j).app t, shape := ⋯, d_comp_d' := ⋯ },
                map := fun {X Y} h => { f := fun i => (C.X i).map h, comm' := ⋯ } }.map
            h₂).f
      i
tactic: ext i
state_before: case h
V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
ι : Type u_1
c : ComplexShape ι
T : Type u_2
inst✝ : Category.{?u.78, u_2} T
C : HomologicalComplex (T ⥤ V) c
X✝ Y✝ Z✝ : T
h₁ : X✝ ⟶ Y✝
h₂ : Y✝ ⟶ Z✝
i : ι
⊢ ({ obj := fun t => { X := fun i => (C.X i).obj t, d := fun i j => (C.d i j).app t, shape := ⋯, d_comp_d' := ⋯ },
              map := fun {X Y} h => { f := fun i => (C.X i).map h, comm' := ⋯ } }.map
          (h₁ ≫ h₂)).f
      i =
    ({ obj := fun t => { X := fun i => (C.X i).obj t, d := fun i j => (C.d i j).app t, shape := ⋯, d_comp_d' := ⋯ },
                map := fun {X Y} h => { f := fun i => (C.X i).map h, comm' := ⋯ } }.map
            h₁ ≫
          {
                obj := fun t =>
                  { X := fun i => (C.X i).obj t, d := fun i j => (C.d i j).app t, shape := ⋯, d_comp_d' := ⋯ },
                map := fun {X Y} h => { f := fun i => (C.X i).map h, comm' := ⋯ } }.map
            h₂).f
      i
state_after: case h
V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
ι : Type u_1
c : ComplexShape ι
T : Type u_2
inst✝ : Category.{?u.78, u_2} T
C : HomologicalComplex (T ⥤ V) c
X✝ Y✝ Z✝ : T
h₁ : X✝ ⟶ Y✝
h₂ : Y✝ ⟶ Z✝
i : ι
⊢ (C.X i).map (h₁ ≫ h₂) = (C.X i).map h₁ ≫ (C.X i).map h₂
tactic: dsimp
state_before: case h
V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
ι : Type u_1
c : ComplexShape ι
T : Type u_2
inst✝ : Category.{?u.78, u_2} T
C : HomologicalComplex (T ⥤ V) c
X✝ Y✝ Z✝ : T
h₁ : X✝ ⟶ Y✝
h₂ : Y✝ ⟶ Z✝
i : ι
⊢ (C.X i).map (h₁ ≫ h₂) = (C.X i).map h₁ ≫ (C.X i).map h₂
state_after: no goals
tactic: rw [Functor.map_comp]