Kernels and cokernels #
In a category with zero morphisms, the kernel of a morphism f : X ⟶ Y
is
the equalizer of f
and 0 : X ⟶ Y
. (Similarly the cokernel is the coequalizer.)
The basic definitions are
-
kernel : (X ⟶ Y) → C
-
kernel.condition : kernel.ι f ≫ f = 0
and -
kernel.lift (k : W ⟶ X) (h : k ≫ f = 0) : W ⟶ kernel f
(as well as the dual versions)
Main statements #
Besides the definition and lifts, we prove
kernel.ιZeroIsIso
: a kernel map of a zero morphism is an isomorphismkernel.eq_zero_of_epi_kernel
: ifkernel.ι f
is an epimorphism, thenf = 0
kernel.ofMono
: the kernel of a monomorphism is the zero objectkernel.liftMono
: the lift of a monomorphismk : W ⟶ X
such thatk ≫ f = 0
is still a monomorphismkernel.isLimitConeZeroCone
: if our category has a zero object, then the map from the zero object is a kernel map of any monomorphismkernel.ιOfZero
:kernel.ι (0 : X ⟶ Y)
is an isomorphism
and the corresponding dual statements.
Future work #
- TODO: connect this with existing work in the group theory and ring theory libraries.
Implementation notes #
As with the other special shapes in the limits library, all the definitions here are given as
abbreviation
s of the general statements for limits, so all the simp
lemmas and theorems about
general limits can be used.
References #
- [F. Borceux, Handbook of Categorical Algebra 2][borceux-vol2]
A morphism f
has a kernel if the functor ParallelPair f 0
has a limit.
Equations
Instances For
A morphism f
has a cokernel if the functor ParallelPair f 0
has a colimit.
Equations
Instances For
A kernel fork is just a fork where the second morphism is a zero morphism.
Equations
Instances For
A morphism ι
satisfying ι ≫ f = 0
determines a kernel fork over f
.
Equations
Instances For
Every kernel fork s
is isomorphic (actually, equal) to fork.ofι (fork.ι s) _
.
Equations
Instances For
If ι = ι'
, then fork.ofι ι _
and fork.ofι ι' _
are isomorphic.
Equations
Instances For
If F
is an equivalence, then applying F
to a diagram indexing a (co)kernel of f
yields
the diagram indexing the (co)kernel of F.map f
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If s
is a limit kernel fork and k : W ⟶ X
satisfies k ≫ f = 0
, then there is some
l : W ⟶ s.X
such that l ≫ fork.ι s = k
.
Equations
- CategoryTheory.Limits.KernelFork.IsLimit.lift' hs k h = { val := hs.lift (CategoryTheory.Limits.KernelFork.ofι k h), property := ⋯ }
Instances For
This is a slightly more convenient method to verify that a kernel fork is a limit cone. It only asks for a proof of facts that carry any mathematical content
Equations
- CategoryTheory.Limits.isLimitAux t lift fac uniq = { lift := lift, fac := ⋯, uniq := ⋯ }
Instances For
This is a more convenient formulation to show that a KernelFork
constructed using
KernelFork.ofι
is a limit cone.
Equations
- One or more equations did not get rendered due to their size.
Instances For
This is a more convenient formulation to show that a KernelFork
of the form
KernelFork.ofι i _
is a limit cone when we know that i
is a monomorphism.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Every kernel of f
induces a kernel of f ≫ g
if g
is mono.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Every kernel of f ≫ g
is also a kernel of f
, as long as c.ι ≫ f
vanishes.
Equations
- One or more equations did not get rendered due to their size.
Instances For
X
identifies to the kernel of a zero map X ⟶ Y
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Any zero object identifies to the kernel of a given monomorphisms.
Equations
- CategoryTheory.Limits.KernelFork.IsLimit.ofMonoOfIsZero c hf h = CategoryTheory.Limits.isLimitAux c (fun (s : CategoryTheory.Limits.KernelFork f) => 0) ⋯ ⋯
Instances For
The morphism between points of kernel forks induced by a morphism in the category of arrows.
Equations
- CategoryTheory.Limits.KernelFork.mapOfIsLimit kf hf' φ = hf'.lift (CategoryTheory.Limits.KernelFork.ofι (CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.Fork.ι kf) φ.left) ⋯)
Instances For
The isomorphism between points of limit kernel forks induced by an isomorphism in the category of arrows.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The kernel of a morphism, expressed as the equalizer with the 0 morphism.
Equations
Instances For
The map from kernel f
into the source of f
.
Equations
Instances For
The kernel built from kernel.ι f
is limiting.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given any morphism k : W ⟶ X
satisfying k ≫ f = 0
, k
factors through kernel.ι f
via kernel.lift : W ⟶ kernel f
.
Equations
Instances For
Equations
- ⋯ = ⋯
Any morphism k : W ⟶ X
satisfying k ≫ f = 0
induces a morphism l : W ⟶ kernel f
such that
l ≫ kernel.ι f = k
.
Equations
- CategoryTheory.Limits.kernel.lift' f k h = { val := CategoryTheory.Limits.kernel.lift f k h, property := ⋯ }
Instances For
A commuting square induces a morphism of kernels.
Equations
Instances For
Given a commutative diagram X --f--> Y --g--> Z | | | | | | v v v X' -f'-> Y' -g'-> Z' with horizontal arrows composing to zero, then we obtain a commutative square X ---> kernel g | | | | kernel.map | | v v X' --> kernel g'
A commuting square of isomorphisms induces an isomorphism of kernels.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Every kernel of the zero morphism is an isomorphism
Equations
- ⋯ = ⋯
The kernel of a zero morphism is isomorphic to the source.
Equations
- CategoryTheory.Limits.kernelZeroIsoSource = CategoryTheory.Limits.equalizer.isoSourceOfSelf 0
Instances For
If two morphisms are known to be equal, then their kernels are isomorphic.
Equations
Instances For
Equations
- ⋯ = ⋯
When g
is a monomorphism, the kernel of f ≫ g
is isomorphic to the kernel of f
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- ⋯ = ⋯
When f
is an isomorphism, the kernel of f ≫ g
is isomorphic to the kernel of g
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The morphism from the zero object determines a cone on a kernel diagram
Equations
- CategoryTheory.Limits.kernel.zeroKernelFork f = { pt := 0, π := { app := fun (j : CategoryTheory.Limits.WalkingParallelPair) => 0, naturality := ⋯ } }
Instances For
The map from the zero object is a kernel of a monomorphism
Equations
Instances For
The kernel of a monomorphism is isomorphic to the zero object
Equations
- One or more equations did not get rendered due to their size.
Instances For
The kernel morphism of a monomorphism is a zero morphism
If g ≫ f = 0
implies g = 0
for all g
, then 0 : 0 ⟶ X
is a kernel of f
.
Equations
- CategoryTheory.Limits.zeroKernelOfCancelZero f hf = CategoryTheory.Limits.Fork.IsLimit.mk (CategoryTheory.Limits.KernelFork.ofι 0 ⋯) (fun (s : CategoryTheory.Limits.Fork f 0) => 0) ⋯ ⋯
Instances For
If i
is an isomorphism such that l ≫ i.hom = f
, any kernel of f
is a kernel of l
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If i
is an isomorphism such that l ≫ i.hom = f
, the kernel of f
is a kernel of l
.
Equations
Instances For
If s
is any limit kernel cone over f
and if i
is an isomorphism such that
i.hom ≫ s.ι = l
, then l
is a kernel of f
.
Equations
- CategoryTheory.Limits.IsKernel.isoKernel f l hs i h = CategoryTheory.Limits.IsLimit.ofIsoLimit hs (CategoryTheory.Limits.Cones.ext i.symm ⋯)
Instances For
If i
is an isomorphism such that i.hom ≫ kernel.ι f = l
, then l
is a kernel of f
.
Equations
Instances For
The kernel morphism of a zero morphism is an isomorphism
A cokernel cofork is just a cofork where the second morphism is a zero morphism.
Equations
Instances For
A morphism π
satisfying f ≫ π = 0
determines a cokernel cofork on f
.
Equations
Instances For
Every cokernel cofork s
is isomorphic (actually, equal) to cofork.ofπ (cofork.π s) _
.
Equations
Instances For
If π = π'
, then CokernelCofork.of_π π _
and CokernelCofork.of_π π' _
are isomorphic.
Equations
Instances For
If s
is a colimit cokernel cofork, then every k : Y ⟶ W
satisfying f ≫ k = 0
induces
l : s.X ⟶ W
such that cofork.π s ≫ l = k
.
Equations
- CategoryTheory.Limits.CokernelCofork.IsColimit.desc' hs k h = { val := hs.desc (CategoryTheory.Limits.CokernelCofork.ofπ k h), property := ⋯ }
Instances For
This is a slightly more convenient method to verify that a cokernel cofork is a colimit cocone. It only asks for a proof of facts that carry any mathematical content
Equations
- CategoryTheory.Limits.isColimitAux t desc fac uniq = { desc := desc, fac := ⋯, uniq := ⋯ }
Instances For
This is a more convenient formulation to show that a CokernelCofork
constructed using
CokernelCofork.ofπ
is a limit cone.
Equations
- One or more equations did not get rendered due to their size.
Instances For
This is a more convenient formulation to show that a CokernelCofork
of the form
CokernelCofork.ofπ p _
is a colimit cocone when we know that p
is an epimorphism.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Every cokernel of f
induces a cokernel of g ≫ f
if g
is epi.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Every cokernel of g ≫ f
is also a cokernel of f
, as long as f ≫ c.π
vanishes.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Y
identifies to the cokernel of a zero map X ⟶ Y
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Any zero object identifies to the cokernel of a given epimorphisms.
Equations
- CategoryTheory.Limits.CokernelCofork.IsColimit.ofEpiOfIsZero c hf h = CategoryTheory.Limits.isColimitAux c (fun (s : CategoryTheory.Limits.CokernelCofork f) => 0) ⋯ ⋯
Instances For
The morphism between points of cokernel coforks induced by a morphism in the category of arrows.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The isomorphism between points of limit cokernel coforks induced by an isomorphism in the category of arrows.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The cokernel of a morphism, expressed as the coequalizer with the 0 morphism.
Equations
Instances For
The map from the target of f
to cokernel f
.
Equations
Instances For
The cokernel built from cokernel.π f
is colimiting.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given any morphism k : Y ⟶ W
such that f ≫ k = 0
, k
factors through cokernel.π f
via cokernel.desc : cokernel f ⟶ W
.
Equations
Instances For
Equations
- ⋯ = ⋯
Any morphism k : Y ⟶ W
satisfying f ≫ k = 0
induces l : cokernel f ⟶ W
such that
cokernel.π f ≫ l = k
.
Equations
- CategoryTheory.Limits.cokernel.desc' f k h = { val := CategoryTheory.Limits.cokernel.desc f k h, property := ⋯ }
Instances For
A commuting square induces a morphism of cokernels.
Equations
Instances For
Given a commutative diagram X --f--> Y --g--> Z | | | | | | v v v X' -f'-> Y' -g'-> Z' with horizontal arrows composing to zero, then we obtain a commutative square cokernel f ---> Z | | | cokernel.map | | | v v cokernel f' --> Z'
A commuting square of isomorphisms induces an isomorphism of cokernels.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The cokernel of the zero morphism is an isomorphism
Equations
- ⋯ = ⋯
The cokernel of a zero morphism is isomorphic to the target.
Equations
- CategoryTheory.Limits.cokernelZeroIsoTarget = CategoryTheory.Limits.coequalizer.isoTargetOfSelf 0
Instances For
If two morphisms are known to be equal, then their cokernels are isomorphic.
Equations
Instances For
Equations
- ⋯ = ⋯
When g
is an isomorphism, the cokernel of f ≫ g
is isomorphic to the cokernel of f
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- ⋯ = ⋯
When f
is an epimorphism, the cokernel of f ≫ g
is isomorphic to the cokernel of g
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The morphism to the zero object determines a cocone on a cokernel diagram
Equations
- CategoryTheory.Limits.cokernel.zeroCokernelCofork f = { pt := 0, ι := { app := fun (j : CategoryTheory.Limits.WalkingParallelPair) => 0, naturality := ⋯ } }
Instances For
The morphism to the zero object is a cokernel of an epimorphism
Equations
- One or more equations did not get rendered due to their size.
Instances For
The cokernel of an epimorphism is isomorphic to the zero object
Equations
- One or more equations did not get rendered due to their size.
Instances For
The cokernel morphism of an epimorphism is a zero morphism
The cokernel of the image inclusion of a morphism f
is isomorphic to the cokernel of f
.
(This result requires that the factorisation through the image is an epimorphism. This holds in any category with equalizers.)
Equations
- One or more equations did not get rendered due to their size.
Instances For
The cokernel of a zero morphism is an isomorphism
The kernel of the cokernel of an epimorphism is an isomorphism
Equations
- ⋯ = ⋯
The cokernel of the kernel of a monomorphism is an isomorphism
Equations
- ⋯ = ⋯
If f ≫ g = 0
implies g = 0
for all g
, then 0 : Y ⟶ 0
is a cokernel of f
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If i
is an isomorphism such that i.hom ≫ l = f
, then any cokernel of f
is a cokernel of
l
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If i
is an isomorphism such that i.hom ≫ l = f
, then the cokernel of f
is a cokernel of
l
.
Equations
Instances For
If s
is any colimit cokernel cocone over f
and i
is an isomorphism such that
s.π ≫ i.hom = l
, then l
is a cokernel of f
.
Equations
Instances For
If i
is an isomorphism such that cokernel.π f ≫ i.hom = l
, then l
is a cokernel of f
.
Equations
Instances For
The comparison morphism for the kernel of f
.
This is an isomorphism iff G
preserves the kernel of f
; see
CategoryTheory/Limits/Preserves/Shapes/Kernels.lean
Equations
- CategoryTheory.Limits.kernelComparison f G = CategoryTheory.Limits.kernel.lift (G.map f) (G.map (CategoryTheory.Limits.kernel.ι f)) ⋯
Instances For
The comparison morphism for the cokernel of f
.
Equations
- CategoryTheory.Limits.cokernelComparison f G = CategoryTheory.Limits.cokernel.desc (G.map f) (G.map (CategoryTheory.Limits.coequalizer.π f 0)) ⋯
Instances For
HasKernels
represents the existence of kernels for every morphism.
- has_limit : ∀ {X Y : C} (f : X ⟶ Y), CategoryTheory.Limits.HasKernel f
Instances
HasCokernels
represents the existence of cokernels for every morphism.
- has_colimit : ∀ {X Y : C} (f : X ⟶ Y), CategoryTheory.Limits.HasCokernel f
Instances
Equations
- ⋯ = ⋯