Exact sequences in abelian categories #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
In an abelian category, we get several interesting results related to exactness which are not true in more general settings.
Main results #
(f, g)
is exact if and only iff ≫ g = 0
andkernel.ι g ≫ cokernel.π f = 0
. This characterisation tends to be less cumbersome to work with than the original definition involving the comparison mapimage f ⟶ kernel g
.- If
(f, g)
is exact, thenimage.ι f
has the universal property of the kernel ofg
. f
is a monomorphism iffkernel.ι f = 0
iffexact 0 f
, andf
is an epimorphism iffcokernel.π = 0
iffexact f 0
.- A faithful functor between abelian categories that preserves zero morphisms reflects exact sequences.
X ⟶ Y ⟶ Z ⟶ 0
is exact if and only if the second map is a cokernel of the first, and0 ⟶ X ⟶ Y ⟶ Z
is exact if and only if the first map is a kernel of the second.- An exact functor preserves exactness, more specifically,
F
preserves finite colimits and finite limits, if and only ifexact f g
impliesexact (F.map f) (F.map g)
.
In an abelian category, a pair of morphisms f : X ⟶ Y
, g : Y ⟶ Z
is exact
iff image_subobject f = kernel_subobject g
.
The dual result is true even in non-abelian categories, see
category_theory.exact_comp_mono_iff
.
If (f, g)
is exact, then abelian.image.ι f
is a kernel of g
.
Equations
- category_theory.abelian.is_limit_image f g h = category_theory.limits.kernel_fork.is_limit.of_ι (category_theory.abelian.image.ι f) _ (λ (W : C) (u : W ⟶ Y) (hu : u ≫ g = 0), category_theory.limits.kernel.lift (category_theory.limits.cokernel.π f) u _) _ _
If (f, g)
is exact, then image.ι f
is a kernel of g
.
If (f, g)
is exact, then coimages.coimage.π g
is a cokernel of f
.
Equations
- category_theory.abelian.is_colimit_coimage f g h = category_theory.limits.cokernel_cofork.is_colimit.of_π (category_theory.abelian.coimage.π g) _ (λ (W : C) (u : Y ⟶ W) (hu : f ≫ u = 0), category_theory.limits.cokernel.desc (category_theory.limits.kernel.ι g) u _) _ _
If (f, g)
is exact, then factor_thru_image g
is a cokernel of f
.
If ex : exact f g
and epi g
, then cokernel.desc _ _ ex.w
is an isomorphism.
If X ⟶ Y ⟶ Z ⟶ 0
is exact, then the second map is a cokernel of the first.
Equations
- category_theory.abelian.is_colimit_of_exact_of_epi f g h = (category_theory.limits.colimit.is_colimit (category_theory.limits.parallel_pair f 0)).of_iso_colimit (category_theory.limits.cocones.ext {hom := category_theory.limits.cokernel.desc f g _, inv := category_theory.abelian.epi_desc g (category_theory.limits.cokernel.π f) _, hom_inv_id' := _, inv_hom_id' := _} _)
If 0 ⟶ X ⟶ Y ⟶ Z
is exact, then the first map is a kernel of the second.
Equations
- category_theory.abelian.is_limit_of_exact_of_mono f g h = (category_theory.limits.limit.is_limit (category_theory.limits.parallel_pair g 0)).of_iso_limit (category_theory.limits.cones.ext {hom := category_theory.abelian.mono_lift f (category_theory.limits.kernel.ι g) _, inv := category_theory.limits.kernel.lift g f _, hom_inv_id' := _, inv_hom_id' := _} _)
Equations
A functor preserving finite limits and finite colimits preserves exactness. The converse
result is also true, see functor.preserves_finite_limits_of_map_exact
and
functor.preserves_finite_colimits_of_map_exact
.
A functor which preserves exactness preserves zero morphisms.
A functor which preserves exactness preserves monomorphisms.
A functor which preserves exactness preserves epimorphisms.
A functor which preserves exactness preserves kernels.
Equations
- L.preserves_kernels_of_map_exact h X Y f = {preserves := λ (c : category_theory.limits.cone (category_theory.limits.parallel_pair f 0)) (ic : category_theory.limits.is_limit c), let _inst : L.preserves_zero_morphisms := _, _inst_1 : L.preserves_monomorphisms := _, _inst_2 : category_theory.mono (category_theory.limits.fork.ι c) := _ in (⇑((category_theory.limits.is_limit_map_cone_fork_equiv' L _).symm) (category_theory.abelian.is_limit_of_exact_of_mono (L.map (category_theory.limits.fork.ι c)) (L.map f) _)).of_iso_limit ((category_theory.limits.cones.functoriality (category_theory.limits.parallel_pair f 0) L).map_iso (category_theory.limits.iso_of_ι c).symm)}
A functor which preserves exactness preserves zero cokernels.
Equations
- L.preserves_cokernels_of_map_exact h X Y f = {preserves := λ (c : category_theory.limits.cocone (category_theory.limits.parallel_pair f 0)) (ic : category_theory.limits.is_colimit c), let _inst : L.preserves_zero_morphisms := _, _inst_1 : L.preserves_epimorphisms := _, _inst_2 : category_theory.epi (category_theory.limits.cofork.π c) := _ in (⇑((category_theory.limits.is_colimit_map_cocone_cofork_equiv' L _).symm) (category_theory.abelian.is_colimit_of_exact_of_epi (L.map f) (L.map (category_theory.limits.cofork.π c)) _)).of_iso_colimit ((category_theory.limits.cocones.functoriality (category_theory.limits.parallel_pair f 0) L).map_iso (category_theory.limits.iso_of_π c).symm)}
A functor which preserves exactness is left exact, i.e. preserves finite limits.
This is part of the inverse implication to functor.map_exact
.
Equations
- L.preserves_finite_limits_of_map_exact h = let _inst : L.preserves_zero_morphisms := _, _inst_1 : Π (X Y : A) (f : X ⟶ Y), category_theory.limits.preserves_limit (category_theory.limits.parallel_pair f 0) L := L.preserves_kernels_of_map_exact h in L.preserves_finite_limits_of_preserves_kernels
A functor which preserves exactness is right exact, i.e. preserves finite colimits.
This is part of the inverse implication to functor.map_exact
.
Equations
- L.preserves_finite_colimits_of_map_exact h = let _inst : L.preserves_zero_morphisms := _, _inst_1 : Π (X Y : A) (f : X ⟶ Y), category_theory.limits.preserves_colimit (category_theory.limits.parallel_pair f 0) L := L.preserves_cokernels_of_map_exact h in L.preserves_finite_colimits_of_preserves_cokernels
A functor preserving zero morphisms, monos, and cokernels preserves finite limits.
A functor preserving zero morphisms, epis, and kernels preserves finite colimits.