Preserving (co)kernels #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
Constructions to relate the notions of preserving (co)kernels and reflecting (co)kernels to concrete (co)forks.
In particular, we show that kernel_comparison f g G
is an isomorphism iff G
preserves
the limit of the parallel pair f,0
, as well as the dual result.
The map of a kernel fork is a limit iff
the kernel fork consisting of the mapped morphisms is a limit.
This essentially lets us commute kernel_fork.of_ι
with functor.map_cone
.
This is a variant of is_limit_map_cone_fork_equiv
for equalizers,
which we can't use directly between G.map 0 = 0
does not hold definitionally.
Equations
- category_theory.limits.is_limit_map_cone_fork_equiv' G w = (category_theory.limits.is_limit.postcompose_hom_equiv (category_theory.limits.parallel_pair.ext (category_theory.iso.refl ((category_theory.limits.parallel_pair f 0 ⋙ G).obj category_theory.limits.walking_parallel_pair.zero)) (category_theory.iso.refl ((category_theory.limits.parallel_pair f 0 ⋙ G).obj category_theory.limits.walking_parallel_pair.one)) _ _) (G.map_cone (category_theory.limits.kernel_fork.of_ι h w))).symm.trans (category_theory.limits.is_limit.equiv_iso_limit (category_theory.limits.fork.ext (category_theory.iso.refl ((category_theory.limits.cones.postcompose (category_theory.limits.parallel_pair.ext (category_theory.iso.refl ((category_theory.limits.parallel_pair f 0 ⋙ G).obj category_theory.limits.walking_parallel_pair.zero)) (category_theory.iso.refl ((category_theory.limits.parallel_pair f 0 ⋙ G).obj category_theory.limits.walking_parallel_pair.one)) _ _).hom).obj (G.map_cone (category_theory.limits.kernel_fork.of_ι h w))).X) _))
The property of preserving kernels expressed in terms of kernel forks.
This is a variant of is_limit_fork_map_of_is_limit
for equalizers,
which we can't use directly between G.map 0 = 0
does not hold definitionally.
If G
preserves kernels and C
has them, then the fork constructed of the mapped morphisms of
a kernel fork is a limit.
If the kernel comparison map for G
at f
is an isomorphism, then G
preserves the
kernel of f
.
Equations
- category_theory.limits.preserves_kernel.of_iso_comparison G f = category_theory.limits.preserves_limit_of_preserves_limit_cone (category_theory.limits.kernel_is_kernel f) (⇑((category_theory.limits.is_limit_map_cone_fork_equiv' G _).symm) (category_theory.limits.kernel_is_kernel (G.map f)).of_point_iso)
If G
preserves the kernel of f
, then the kernel comparison map for G
at f
is
an isomorphism.
The map of a cokernel cofork is a colimit iff
the cokernel cofork consisting of the mapped morphisms is a colimit.
This essentially lets us commute cokernel_cofork.of_π
with functor.map_cocone
.
This is a variant of is_colimit_map_cocone_cofork_equiv
for equalizers,
which we can't use directly between G.map 0 = 0
does not hold definitionally.
Equations
- category_theory.limits.is_colimit_map_cocone_cofork_equiv' G w = (category_theory.limits.is_colimit.precompose_hom_equiv (category_theory.limits.parallel_pair.ext (category_theory.iso.refl ((category_theory.limits.parallel_pair (G.map f) 0).obj category_theory.limits.walking_parallel_pair.zero)) (category_theory.iso.refl ((category_theory.limits.parallel_pair (G.map f) 0).obj category_theory.limits.walking_parallel_pair.one)) _ _) (G.map_cocone (category_theory.limits.cokernel_cofork.of_π h w))).symm.trans (category_theory.limits.is_colimit.equiv_iso_colimit (category_theory.limits.cofork.ext (category_theory.iso.refl ((category_theory.limits.cocones.precompose (category_theory.limits.parallel_pair.ext (category_theory.iso.refl ((category_theory.limits.parallel_pair (G.map f) 0).obj category_theory.limits.walking_parallel_pair.zero)) (category_theory.iso.refl ((category_theory.limits.parallel_pair (G.map f) 0).obj category_theory.limits.walking_parallel_pair.one)) _ _).hom).obj (G.map_cocone (category_theory.limits.cokernel_cofork.of_π h w))).X) _))
The property of preserving cokernels expressed in terms of cokernel coforks.
This is a variant of is_colimit_cofork_map_of_is_colimit
for equalizers,
which we can't use directly between G.map 0 = 0
does not hold definitionally.
If G
preserves cokernels and C
has them, then the cofork constructed of the mapped morphisms of
a cokernel cofork is a colimit.
If the cokernel comparison map for G
at f
is an isomorphism, then G
preserves the
cokernel of f
.
Equations
- category_theory.limits.preserves_cokernel.of_iso_comparison G f = category_theory.limits.preserves_colimit_of_preserves_colimit_cocone (category_theory.limits.cokernel_is_cokernel f) (⇑((category_theory.limits.is_colimit_map_cocone_cofork_equiv' G _).symm) (category_theory.limits.cokernel_is_cokernel (G.map f)).of_point_iso)
If G
preserves the cokernel of f
, then the cokernel comparison map for G
at f
is
an isomorphism.