File: Mathlib/Algebra/Homology/Additive.lean

full_name: HomologicalComplex.instZeroHom_1
code: instance : Zero (C ⟶ D) 
goal: Zero (C ⟶ D)

full_name: HomologicalComplex.instAddHom
code: instance : Add (C ⟶ D) 
goal: Add (C ⟶ D)

full_name: HomologicalComplex.instNegHom
code: instance : Neg (C ⟶ D) 
goal: Neg (C ⟶ D)

full_name: HomologicalComplex.instSubHom
code: instance : Sub (C ⟶ D) 
goal: Sub (C ⟶ D)

full_name: HomologicalComplex.hasNatScalar
code: instance hasNatScalar : SMul ℕ (C ⟶ D) 
goal: SMul ℕ (C ⟶ D)

full_name: HomologicalComplex.hasIntScalar
code: instance hasIntScalar : SMul ℤ (C ⟶ D) 
goal: SMul ℤ (C ⟶ D)

full_name: HomologicalComplex.zero_f_apply
code: @[simp]
theorem zero_f_apply (i : ι) : (0 : C ⟶ D).f i = 0 
goal: HomologicalComplex.Hom.f 0 i = 0

full_name: HomologicalComplex.add_f_apply
code: @[simp]
theorem add_f_apply (f g : C ⟶ D) (i : ι) : (f + g).f i = f.f i + g.f i 
goal: (f + g).f i = f.f i + g.f i

full_name: HomologicalComplex.neg_f_apply
code: @[simp]
theorem neg_f_apply (f : C ⟶ D) (i : ι) : (-f).f i = -f.f i 
goal: (-f).f i = -f.f i

full_name: HomologicalComplex.sub_f_apply
code: @[simp]
theorem sub_f_apply (f g : C ⟶ D) (i : ι) : (f - g).f i = f.f i - g.f i 
goal: (f - g).f i = f.f i - g.f i

full_name: HomologicalComplex.nsmul_f_apply
code: @[simp]
theorem nsmul_f_apply (n : ℕ) (f : C ⟶ D) (i : ι) : (n • f).f i = n • f.f i 
goal: (n • f).f i = n • f.f i

full_name: HomologicalComplex.zsmul_f_apply
code: @[simp]
theorem zsmul_f_apply (n : ℤ) (f : C ⟶ D) (i : ι) : (n • f).f i = n • f.f i 
goal: (n • f).f i = n • f.f i

full_name: HomologicalComplex.instAddCommGroupHom
code: instance : AddCommGroup (C ⟶ D) 
goal: AddCommGroup (C ⟶ D)

full_name: HomologicalComplex.instPreadditive
code: instance : Preadditive (HomologicalComplex V c) 
goal: CategoryTheory.Preadditive (HomologicalComplex V c)

full_name: HomologicalComplex.Hom.fAddMonoidHom_apply
code: /-- The `i`-th component of a chain map, as an additive map from chain maps to morphisms. -/
@[simps!]
def Hom.fAddMonoidHom {C₁ C₂ : HomologicalComplex V c} (i : ι) : (C₁ ⟶ C₂) →+ (C₁.X i ⟶ C₂.X i) 
goal: (HomologicalComplex.Hom.fAddMonoidHom i) f = f.f i

full_name: HomologicalComplex.Hom.fAddMonoidHom
code: /-- The `i`-th component of a chain map, as an additive map from chain maps to morphisms. -/
@[simps!]
def Hom.fAddMonoidHom {C₁ C₂ : HomologicalComplex V c} (i : ι) : (C₁ ⟶ C₂) →+ (C₁.X i ⟶ C₂.X i) 
goal: (C₁ ⟶ C₂) →+ (C₁.X i ⟶ C₂.X i)

full_name: HomologicalComplex.eval_additive
code: instance eval_additive (i : ι) : (eval V c i).Additive 
goal: (HomologicalComplex.eval V c i).Additive

full_name: CategoryTheory.Functor.mapHomologicalComplex
code: /-- An additive functor induces a functor between homological complexes.
This is sometimes called the "prolongation".
-/
@[simps]
def Functor.mapHomologicalComplex (F : W₁ ⥤ W₂) [F.PreservesZeroMorphisms] (c : ComplexShape ι) :
    HomologicalComplex W₁ c ⥤ HomologicalComplex W₂ c 
goal: HomologicalComplex W₁ c ⥤ HomologicalComplex W₂ c

full_name: CategoryTheory.Functor.mapHomologicalComplex_obj_d
code: /-- An additive functor induces a functor between homological complexes.
This is sometimes called the "prolongation".
-/
@[simps]
def Functor.mapHomologicalComplex (F : W₁ ⥤ W₂) [F.PreservesZeroMorphisms] (c : ComplexShape ι) :
    HomologicalComplex W₁ c ⥤ HomologicalComplex W₂ c 
goal: ((F.mapHomologicalComplex c).obj C).d i j = F.map (C.d i j)

full_name: CategoryTheory.Functor.mapHomologicalComplex_map_f
code: /-- An additive functor induces a functor between homological complexes.
This is sometimes called the "prolongation".
-/
@[simps]
def Functor.mapHomologicalComplex (F : W₁ ⥤ W₂) [F.PreservesZeroMorphisms] (c : ComplexShape ι) :
    HomologicalComplex W₁ c ⥤ HomologicalComplex W₂ c 
goal: ∀ {X Y : HomologicalComplex W₁ c} (f : X ⟶ Y) (i : ι), ((F.mapHomologicalComplex c).map f).f i = F.map (f.f i)

full_name: CategoryTheory.Functor.mapHomologicalComplex_obj_X
code: /-- An additive functor induces a functor between homological complexes.
This is sometimes called the "prolongation".
-/
@[simps]
def Functor.mapHomologicalComplex (F : W₁ ⥤ W₂) [F.PreservesZeroMorphisms] (c : ComplexShape ι) :
    HomologicalComplex W₁ c ⥤ HomologicalComplex W₂ c 
goal: ((F.mapHomologicalComplex c).obj C).X i = F.obj (C.X i)

full_name: CategoryTheory.instPreservesZeroMorphismsHomologicalComplexMapHomologicalComplex
code: instance (F : W₁ ⥤ W₂) [F.PreservesZeroMorphisms] (c : ComplexShape ι) :
    (F.mapHomologicalComplex c).PreservesZeroMorphisms 
goal: (F.mapHomologicalComplex c).PreservesZeroMorphisms

full_name: CategoryTheory.Functor.map_homogical_complex_additive
code: instance Functor.map_homogical_complex_additive (F : V ⥤ W) [F.Additive] (c : ComplexShape ι) :
    (F.mapHomologicalComplex c).Additive 
goal: (F.mapHomologicalComplex c).Additive

full_name: CategoryTheory.Functor.mapHomologicalComplexIdIso
code: /-- The functor on homological complexes induced by the identity functor is
isomorphic to the identity functor. -/
@[simps!]
def Functor.mapHomologicalComplexIdIso (c : ComplexShape ι) :
    (𝟭 W₁).mapHomologicalComplex c ≅ 𝟭 _ 
goal: (𝟭 W₁).mapHomologicalComplex c ≅ 𝟭 (HomologicalComplex W₁ c)

full_name: CategoryTheory.Functor.mapHomologicalComplexIdIso_hom_app_f
code: /-- The functor on homological complexes induced by the identity functor is
isomorphic to the identity functor. -/
@[simps!]
def Functor.mapHomologicalComplexIdIso (c : ComplexShape ι) :
    (𝟭 W₁).mapHomologicalComplex c ≅ 𝟭 _ 
goal: ((CategoryTheory.Functor.mapHomologicalComplexIdIso W₁ c).hom.app X).f i = 𝟙 (X.X i)

full_name: CategoryTheory.Functor.mapHomologicalComplexIdIso_inv_app_f
code: /-- The functor on homological complexes induced by the identity functor is
isomorphic to the identity functor. -/
@[simps!]
def Functor.mapHomologicalComplexIdIso (c : ComplexShape ι) :
    (𝟭 W₁).mapHomologicalComplex c ≅ 𝟭 _ 
goal: ((CategoryTheory.Functor.mapHomologicalComplexIdIso W₁ c).inv.app X).f i = 𝟙 (X.X i)

full_name: CategoryTheory.Functor.mapHomologicalComplex_reflects_iso
code: instance Functor.mapHomologicalComplex_reflects_iso (F : W₁ ⥤ W₂) [F.PreservesZeroMorphisms]
    [ReflectsIsomorphisms F] (c : ComplexShape ι) :
    ReflectsIsomorphisms (F.mapHomologicalComplex c) 
goal: (F.mapHomologicalComplex c).ReflectsIsomorphisms

full_name: CategoryTheory.NatTrans.mapHomologicalComplex_app_f
code: /-- A natural transformation between functors induces a natural transformation
between those functors applied to homological complexes.
-/
@[simps]
def NatTrans.mapHomologicalComplex {F G : W₁ ⥤ W₂}
    [F.PreservesZeroMorphisms] [G.PreservesZeroMorphisms] (α : F ⟶ G)
    (c : ComplexShape ι) : F.mapHomologicalComplex c ⟶ G.mapHomologicalComplex c 
goal: ((CategoryTheory.NatTrans.mapHomologicalComplex α c).app C).f i = α.app (C.X i)

full_name: CategoryTheory.NatTrans.mapHomologicalComplex
code: /-- A natural transformation between functors induces a natural transformation
between those functors applied to homological complexes.
-/
@[simps]
def NatTrans.mapHomologicalComplex {F G : W₁ ⥤ W₂}
    [F.PreservesZeroMorphisms] [G.PreservesZeroMorphisms] (α : F ⟶ G)
    (c : ComplexShape ι) : F.mapHomologicalComplex c ⟶ G.mapHomologicalComplex c 
goal: F.mapHomologicalComplex c ⟶ G.mapHomologicalComplex c

full_name: CategoryTheory.NatTrans.mapHomologicalComplex_id
code: @[simp]
theorem NatTrans.mapHomologicalComplex_id
    (c : ComplexShape ι) (F : W₁ ⥤ W₂) [F.PreservesZeroMorphisms] :
    NatTrans.mapHomologicalComplex (𝟙 F) c = 𝟙 (F.mapHomologicalComplex c) 
goal: CategoryTheory.NatTrans.mapHomologicalComplex (𝟙 F) c = 𝟙 (F.mapHomologicalComplex c)

full_name: CategoryTheory.NatTrans.mapHomologicalComplex_comp
code: @[simp]
theorem NatTrans.mapHomologicalComplex_comp (c : ComplexShape ι) {F G H : W₁ ⥤ W₂}
    [F.PreservesZeroMorphisms] [G.PreservesZeroMorphisms] [H.PreservesZeroMorphisms]
    (α : F ⟶ G) (β : G ⟶ H) :
    NatTrans.mapHomologicalComplex (α ≫ β) c =
      NatTrans.mapHomologicalComplex α c ≫ NatTrans.mapHomologicalComplex β c 
goal: CategoryTheory.NatTrans.mapHomologicalComplex (α ≫ β) c =
  CategoryTheory.NatTrans.mapHomologicalComplex α c ≫ CategoryTheory.NatTrans.mapHomologicalComplex β c

full_name: CategoryTheory.NatTrans.mapHomologicalComplex_naturality
code: @[reassoc (attr := simp 1100)]
theorem NatTrans.mapHomologicalComplex_naturality {c : ComplexShape ι} {F G : W₁ ⥤ W₂}
    [F.PreservesZeroMorphisms] [G.PreservesZeroMorphisms]
    (α : F ⟶ G) {C D : HomologicalComplex W₁ c} (f : C ⟶ D) :
    (F.mapHomologicalComplex c).map f ≫ (NatTrans.mapHomologicalComplex α c).app D =
      (NatTrans.mapHomologicalComplex α c).app C ≫ (G.mapHomologicalComplex c).map f 
goal: (F.mapHomologicalComplex c).map f ≫ (CategoryTheory.NatTrans.mapHomologicalComplex α c).app D =
  (CategoryTheory.NatTrans.mapHomologicalComplex α c).app C ≫ (G.mapHomologicalComplex c).map f

full_name: CategoryTheory.NatIso.mapHomologicalComplex
code: /-- A natural isomorphism between functors induces a natural isomorphism
between those functors applied to homological complexes.
-/
@[simps!]
def NatIso.mapHomologicalComplex {F G : W₁ ⥤ W₂} [F.PreservesZeroMorphisms]
    [G.PreservesZeroMorphisms] (α : F ≅ G) (c : ComplexShape ι) :
    F.mapHomologicalComplex c ≅ G.mapHomologicalComplex c 
goal: F.mapHomologicalComplex c ≅ G.mapHomologicalComplex c

full_name: CategoryTheory.NatIso.mapHomologicalComplex_hom_app_f
code: /-- A natural isomorphism between functors induces a natural isomorphism
between those functors applied to homological complexes.
-/
@[simps!]
def NatIso.mapHomologicalComplex {F G : W₁ ⥤ W₂} [F.PreservesZeroMorphisms]
    [G.PreservesZeroMorphisms] (α : F ≅ G) (c : ComplexShape ι) :
    F.mapHomologicalComplex c ≅ G.mapHomologicalComplex c 
goal: ((CategoryTheory.NatIso.mapHomologicalComplex α c).hom.app C).f i = α.hom.app (C.X i)

full_name: CategoryTheory.NatIso.mapHomologicalComplex_inv_app_f
code: /-- A natural isomorphism between functors induces a natural isomorphism
between those functors applied to homological complexes.
-/
@[simps!]
def NatIso.mapHomologicalComplex {F G : W₁ ⥤ W₂} [F.PreservesZeroMorphisms]
    [G.PreservesZeroMorphisms] (α : F ≅ G) (c : ComplexShape ι) :
    F.mapHomologicalComplex c ≅ G.mapHomologicalComplex c 
goal: ((CategoryTheory.NatIso.mapHomologicalComplex α c).inv.app C).f i = α.inv.app (C.X i)

full_name: CategoryTheory.Equivalence.mapHomologicalComplex_unitIso
code: /-- An equivalence of categories induces an equivalences between the respective categories
of homological complex.
-/
@[simps]
def Equivalence.mapHomologicalComplex (e : W₁ ≌ W₂) [e.functor.PreservesZeroMorphisms]
    (c : ComplexShape ι) :
    HomologicalComplex W₁ c ≌ HomologicalComplex W₂ c 
goal: (e.mapHomologicalComplex c).unitIso =
  (CategoryTheory.Functor.mapHomologicalComplexIdIso W₁ c).symm ≪≫
    CategoryTheory.NatIso.mapHomologicalComplex e.unitIso c

full_name: CategoryTheory.Equivalence.mapHomologicalComplex_functor
code: /-- An equivalence of categories induces an equivalences between the respective categories
of homological complex.
-/
@[simps]
def Equivalence.mapHomologicalComplex (e : W₁ ≌ W₂) [e.functor.PreservesZeroMorphisms]
    (c : ComplexShape ι) :
    HomologicalComplex W₁ c ≌ HomologicalComplex W₂ c 
goal: (e.mapHomologicalComplex c).functor = e.functor.mapHomologicalComplex c

full_name: CategoryTheory.Equivalence.mapHomologicalComplex_counitIso
code: /-- An equivalence of categories induces an equivalences between the respective categories
of homological complex.
-/
@[simps]
def Equivalence.mapHomologicalComplex (e : W₁ ≌ W₂) [e.functor.PreservesZeroMorphisms]
    (c : ComplexShape ι) :
    HomologicalComplex W₁ c ≌ HomologicalComplex W₂ c 
goal: (e.mapHomologicalComplex c).counitIso =
  CategoryTheory.NatIso.mapHomologicalComplex e.counitIso c ≪≫ CategoryTheory.Functor.mapHomologicalComplexIdIso W₂ c

full_name: CategoryTheory.Equivalence.mapHomologicalComplex
code: /-- An equivalence of categories induces an equivalences between the respective categories
of homological complex.
-/
@[simps]
def Equivalence.mapHomologicalComplex (e : W₁ ≌ W₂) [e.functor.PreservesZeroMorphisms]
    (c : ComplexShape ι) :
    HomologicalComplex W₁ c ≌ HomologicalComplex W₂ c 
goal: HomologicalComplex W₁ c ≌ HomologicalComplex W₂ c

full_name: CategoryTheory.Equivalence.mapHomologicalComplex_inverse
code: /-- An equivalence of categories induces an equivalences between the respective categories
of homological complex.
-/
@[simps]
def Equivalence.mapHomologicalComplex (e : W₁ ≌ W₂) [e.functor.PreservesZeroMorphisms]
    (c : ComplexShape ι) :
    HomologicalComplex W₁ c ≌ HomologicalComplex W₂ c 
goal: (e.mapHomologicalComplex c).inverse = e.inverse.mapHomologicalComplex c

full_name: ChainComplex.map_chain_complex_of
code: theorem map_chain_complex_of (F : W₁ ⥤ W₂) [F.PreservesZeroMorphisms] (X : α → W₁)
    (d : ∀ n, X (n + 1) ⟶ X n) (sq : ∀ n, d (n + 1) ≫ d n = 0) :
    (F.mapHomologicalComplex _).obj (ChainComplex.of X d sq) =
      ChainComplex.of (fun n => F.obj (X n)) (fun n => F.map (d n)) fun n => by
        rw [← F.map_comp, sq n, Functor.map_zero] 
goal: (F.mapHomologicalComplex (ComplexShape.down α)).obj (ChainComplex.of X d sq) =
  ChainComplex.of (fun n => F.obj (X n)) (fun n => F.map (d n)) ⋯

full_name: HomologicalComplex.instAdditiveSingle
code: instance (W : Type*) [Category W] [Preadditive W] [HasZeroObject W] [DecidableEq ι] (j : ι) :
    (single W c j).Additive 
goal: (HomologicalComplex.single W c j).Additive

full_name: HomologicalComplex.singleMapHomologicalComplex
code: /-- Turning an object into a complex supported at `j` then applying a functor is
the same as applying the functor then forming the complex.
-/
noncomputable def singleMapHomologicalComplex (j : ι) :
    single W₁ c j ⋙ F.mapHomologicalComplex _ ≅ F ⋙ single W₂ c j 
goal: HomologicalComplex.single W₁ c j ⋙ F.mapHomologicalComplex c ≅ F ⋙ HomologicalComplex.single W₂ c j

full_name: HomologicalComplex.singleMapHomologicalComplex_hom_app_self
code: @[simp]
theorem singleMapHomologicalComplex_hom_app_self (j : ι) (X : W₁) :
    ((singleMapHomologicalComplex F c j).hom.app X).f j =
      F.map (singleObjXSelf c j X).hom ≫ (singleObjXSelf c j (F.obj X)).inv 
goal: ((HomologicalComplex.singleMapHomologicalComplex F c j).hom.app X).f j =
  F.map (HomologicalComplex.singleObjXSelf c j X).hom ≫ (HomologicalComplex.singleObjXSelf c j (F.obj X)).inv

full_name: HomologicalComplex.singleMapHomologicalComplex_hom_app_ne
code: @[simp]
theorem singleMapHomologicalComplex_hom_app_ne {i j : ι} (h : i ≠ j) (X : W₁) :
    ((singleMapHomologicalComplex F c j).hom.app X).f i = 0 
goal: ((HomologicalComplex.singleMapHomologicalComplex F c j).hom.app X).f i = 0

full_name: HomologicalComplex.singleMapHomologicalComplex_inv_app_self
code: @[simp]
theorem singleMapHomologicalComplex_inv_app_self (j : ι) (X : W₁) :
    ((singleMapHomologicalComplex F c j).inv.app X).f j =
      (singleObjXSelf c j (F.obj X)).hom ≫ F.map (singleObjXSelf c j X).inv 
goal: ((HomologicalComplex.singleMapHomologicalComplex F c j).inv.app X).f j =
  (HomologicalComplex.singleObjXSelf c j (F.obj X)).hom ≫ F.map (HomologicalComplex.singleObjXSelf c j X).inv

full_name: HomologicalComplex.singleMapHomologicalComplex_inv_app_ne
code: @[simp]
theorem singleMapHomologicalComplex_inv_app_ne {i j : ι} (h : i ≠ j) (X : W₁) :
    ((singleMapHomologicalComplex F c j).inv.app X).f i = 0 
goal: ((HomologicalComplex.singleMapHomologicalComplex F c j).inv.app X).f i = 0