File: Mathlib/CategoryTheory/Abelian/Exact.lean

full_name: CategoryTheory.ShortComplex.exact_iff_epi_imageToKernel'
code: theorem exact_iff_epi_imageToKernel' : S.Exact ↔ Epi (imageToKernel' S.f S.g S.zero) 
goal: S.Exact ↔ CategoryTheory.Epi (imageToKernel' S.f S.g ⋯)

full_name: CategoryTheory.ShortComplex.exact_iff_epi_imageToKernel
code: theorem exact_iff_epi_imageToKernel : S.Exact ↔ Epi (imageToKernel S.f S.g S.zero) 
goal: S.Exact ↔ CategoryTheory.Epi (imageToKernel S.f S.g ⋯)

full_name: CategoryTheory.ShortComplex.exact_iff_isIso_imageToKernel
code: theorem exact_iff_isIso_imageToKernel : S.Exact ↔ IsIso (imageToKernel S.f S.g S.zero) 
goal: S.Exact ↔ CategoryTheory.IsIso (imageToKernel S.f S.g ⋯)

full_name: CategoryTheory.ShortComplex.exact_iff_image_eq_kernel
code: /-- In an abelian category, a short complex `S` is exact
iff `imageSubobject S.f = kernelSubobject S.g`.
-/
theorem exact_iff_image_eq_kernel : S.Exact ↔ imageSubobject S.f = kernelSubobject S.g 
goal: S.Exact ↔ CategoryTheory.Limits.imageSubobject S.f = CategoryTheory.Limits.kernelSubobject S.g

full_name: CategoryTheory.ShortComplex.exact_iff_of_forks
code: theorem exact_iff_of_forks {cg : KernelFork S.g} (hg : IsLimit cg) {cf : CokernelCofork S.f}
    (hf : IsColimit cf) : S.Exact ↔ cg.ι ≫ cf.π = 0 
goal: S.Exact ↔ CategoryTheory.Limits.Fork.ι cg ≫ CategoryTheory.Limits.Cofork.π cf = 0

full_name: CategoryTheory.ShortComplex.Exact.isLimitImage
code: /-- If `(f, g)` is exact, then `Abelian.image.ι S.f` is a kernel of `S.g`. -/
def Exact.isLimitImage (h : S.Exact) :
    IsLimit (KernelFork.ofι (Abelian.image.ι S.f)
      (Abelian.image_ι_comp_eq_zero S.zero) : KernelFork S.g) 
goal: CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.KernelFork.ofι (CategoryTheory.Abelian.image.ι S.f) ⋯)

full_name: CategoryTheory.ShortComplex.Exact.isLimitImage'
code: /-- If `(f, g)` is exact, then `image.ι f` is a kernel of `g`. -/
def Exact.isLimitImage' (h : S.Exact) :
    IsLimit (KernelFork.ofι (Limits.image.ι S.f)
      (image_ι_comp_eq_zero S.zero) : KernelFork S.g) 
goal: CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.KernelFork.ofι (CategoryTheory.Limits.image.ι S.f) ⋯)

full_name: CategoryTheory.ShortComplex.Exact.isColimitCoimage
code: /-- If `(f, g)` is exact, then `Abelian.coimage.π g` is a cokernel of `f`. -/
def Exact.isColimitCoimage (h : S.Exact) :
    IsColimit
      (CokernelCofork.ofπ (Abelian.coimage.π S.g) (Abelian.comp_coimage_π_eq_zero S.zero) :
        CokernelCofork S.f) 
goal: CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.CokernelCofork.ofπ (CategoryTheory.Abelian.coimage.π S.g) ⋯)

full_name: CategoryTheory.ShortComplex.Exact.isColimitImage
code: /-- If `(f, g)` is exact, then `factorThruImage g` is a cokernel of `f`. -/
def Exact.isColimitImage (h : S.Exact) :
    IsColimit (CokernelCofork.ofπ (Limits.factorThruImage S.g)
        (comp_factorThruImage_eq_zero S.zero)) 
goal: CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.CokernelCofork.ofπ (CategoryTheory.Limits.factorThruImage S.g) ⋯)

full_name: CategoryTheory.ShortComplex.exact_kernel
code: theorem exact_kernel {X Y : C} (f : X ⟶ Y) :
    (ShortComplex.mk (kernel.ι f) f (by simp)).Exact 
goal: (CategoryTheory.ShortComplex.mk (CategoryTheory.Limits.kernel.ι f) f ⋯).Exact

full_name: CategoryTheory.ShortComplex.exact_cokernel
code: theorem exact_cokernel {X Y : C} (f : X ⟶ Y) :
    (ShortComplex.mk f (cokernel.π f) (by simp)).Exact 
goal: (CategoryTheory.ShortComplex.mk f (CategoryTheory.Limits.cokernel.π f) ⋯).Exact

full_name: CategoryTheory.ShortComplex.exact_iff_exact_image_ι
code: theorem exact_iff_exact_image_ι :
    S.Exact ↔ (ShortComplex.mk (Abelian.image.ι S.f) S.g
      (Abelian.image_ι_comp_eq_zero S.zero)).Exact 
goal: S.Exact ↔ (CategoryTheory.ShortComplex.mk (CategoryTheory.Abelian.image.ι S.f) S.g ⋯).Exact

full_name: CategoryTheory.ShortComplex.exact_iff_exact_coimage_π
code: theorem exact_iff_exact_coimage_π :
    S.Exact ↔ (ShortComplex.mk S.f (Abelian.coimage.π S.g)
      (Abelian.comp_coimage_π_eq_zero S.zero)).Exact 
goal: S.Exact ↔ (CategoryTheory.ShortComplex.mk S.f (CategoryTheory.Abelian.coimage.π S.g) ⋯).Exact

full_name: CategoryTheory.Abelian.tfae_mono
code: theorem Abelian.tfae_mono {X Y : C} (f : X ⟶ Y) (Z : C) :
    TFAE [Mono f, kernel.ι f = 0, (ShortComplex.mk (0 : Z ⟶ X) f zero_comp).Exact] 
goal: [CategoryTheory.Mono f, CategoryTheory.Limits.kernel.ι f = 0, (CategoryTheory.ShortComplex.mk 0 f ⋯).Exact].TFAE

full_name: CategoryTheory.Abelian.tfae_epi
code: theorem Abelian.tfae_epi {X Y : C} (f : X ⟶ Y) (Z : C ) :
    TFAE [Epi f, cokernel.π f = 0, (ShortComplex.mk f (0 : Y ⟶ Z) comp_zero).Exact] 
goal: [CategoryTheory.Epi f, CategoryTheory.Limits.cokernel.π f = 0, (CategoryTheory.ShortComplex.mk f 0 ⋯).Exact].TFAE

full_name: CategoryTheory.Functor.reflects_exact_of_faithful
code: lemma reflects_exact_of_faithful [F.Faithful] (S : ShortComplex C) (hS : (S.map F).Exact) :
    S.Exact 
goal: S.Exact

full_name: CategoryTheory.Functor.preservesMonomorphisms_of_map_exact
code: /-- A functor which preserves exactness preserves monomorphisms. -/
theorem preservesMonomorphisms_of_map_exact : L.PreservesMonomorphisms 
goal: L.PreservesMonomorphisms

full_name: CategoryTheory.Functor.preservesEpimorphisms_of_map_exact
code: /-- A functor which preserves exactness preserves epimorphisms. -/
theorem preservesEpimorphisms_of_map_exact : L.PreservesEpimorphisms 
goal: L.PreservesEpimorphisms

full_name: CategoryTheory.Functor.preservesHomologyOfMapExact
code: /-- A functor which preserves the exactness of short complexes preserves homology. -/
def preservesHomologyOfMapExact : L.PreservesHomology 
goal: L.PreservesHomology

full_name: CategoryTheory.Functor.preservesHomologyOfPreservesMonosAndCokernels
code: /-- A functor preserving zero morphisms, monos, and cokernels preserves homology. -/
def preservesHomologyOfPreservesMonosAndCokernels [PreservesZeroMorphisms L]
    [PreservesMonomorphisms L] [∀ {X Y} (f : X ⟶ Y), PreservesColimit (parallelPair f 0) L] :
    PreservesHomology L 
goal: L.PreservesHomology

full_name: CategoryTheory.Functor.preservesHomologyOfPreservesEpisAndKernels
code: /-- A functor preserving zero morphisms, epis, and kernels preserves homology. -/
def preservesHomologyOfPreservesEpisAndKernels [PreservesZeroMorphisms L]
    [PreservesEpimorphisms L] [∀ {X Y} (f : X ⟶ Y), PreservesLimit (parallelPair f 0) L] :
    PreservesHomology L 
goal: L.PreservesHomology