Kernel–cokernel pairs #
A kernel–cokernel pair in a category with zero morphisms is a pair of composable morphisms
X ⟶ Y ⟶ Z with zero composite in which the first morphism is a kernel of the second and
the second is a cokernel of the first. Following Bühler, the first morphism of such a pair is
called its inflation and the second its deflation. Quillen exact structures are, by
definition, isomorphism-closed classes of such pairs, so this file supplies the objects an
ExactStructure will range over, together with the calculus those axioms are stated in.
The point of the notion is that it makes sense in an arbitrary additive category: neither
kernels nor cokernels are assumed to exist, so the two universal properties are asserted
explicitly rather than read off from ambient (co)completeness. In a balanced preadditive
category with homology the notion coincides with Mathlib's
CategoryTheory.ShortComplex.ShortExact; that comparison is
TauCeti.isKernelCokernelPair_iff_shortExact.
Main definitions #
TauCeti.IsKernelCokernelPair: the predicate on aCategoryTheory.ShortComplexsaying that its two morphisms form a kernel–cokernel pair. Its noncomputable accessorsTauCeti.IsKernelCokernelPair.fIsKernelandTauCeti.IsKernelCokernelPair.gIsCokernelproduce the two universal properties.TauCeti.IsKernelCokernelPair.liftandTauCeti.IsKernelCokernelPair.desc: the two factorizations, with their defining equations and their uniqueness.TauCeti.IsKernelCokernelPair.splittingOfSection: the splitting of a kernel–cokernel pair determined by a section of its deflation.
Main results #
TauCeti.IsKernelCokernelPair.of_isoandTauCeti.isKernelCokernelPair_iff_of_iso: the class of kernel–cokernel pairs is closed under isomorphism of short complexes, as an exact structure requires.TauCeti.IsKernelCokernelPair.map: a functor preserving the two relevant (co)limits carries kernel–cokernel pairs to kernel–cokernel pairs, andTauCeti.IsKernelCokernelPair.of_map: a fully faithful functor reflects them.TauCeti.IsKernelCokernelPair.op,TauCeti.isKernelCokernelPair_op_iffandTauCeti.isKernelCokernelPair_unop_iff: the notion is self-dual, which is what makes the Bühler axioms transport to the opposite category.TauCeti.IsKernelCokernelPair.of_isIso_f_of_isZeroandTauCeti.IsKernelCokernelPair.of_isIso_g_of_isZero: an isomorphism is both an inflation and a deflation.TauCeti.IsKernelCokernelPair.of_splittingandTauCeti.IsKernelCokernelPair.of_hasBinaryBiproduct: split short complexes, in particularX₁ ⟶ X₁ ⊞ X₂ ⟶ X₂, are kernel–cokernel pairs. These are the conflations of the split exact structure.TauCeti.IsKernelCokernelPair.biprod: a direct sum of kernel–cokernel pairs is a kernel–cokernel pair.TauCeti.isKernelCokernelPair_iff_shortExact: in a balanced preadditive category the kernel–cokernel pairs among the short complexes with homology are exactly the short exact ones. These are the conflations of the canonical exact structure on an abelian category.
Implementation notes #
IsKernelCokernelPair is a Prop whose fields are Nonempty universal properties, following
CategoryTheory.IsPushout. A class of conflations must be a class in the set-theoretic sense,
so membership has to be a proposition; the universal properties are recovered by choice, which
is harmless because CategoryTheory.Limits.IsLimit is a subsingleton.
of_isIso_f_of_isZero and of_isIso_g_of_isZero are proved directly rather than deduced from
CategoryTheory.ShortComplex.Splitting.ofIsIsoOfIsZero and its sibling together with
of_splitting, which would need a preadditive category with a zero object. The direct proofs
are no longer, and they keep these two statements — Bühler's axiom E0, that an isomorphism is
both an inflation and a deflation — in the same bare CategoryTheory.Limits.HasZeroMorphisms
generality as the rest of the core API. For the same reason of_hasBinaryBiproduct and
biprod are stated for a bare CategoryTheory.Limits.HasZeroMorphisms category with the
biproducts they mention: Mathlib's CategoryTheory.Limits.biprod.isKernelSndKernelFork and
its siblings already provide the witnesses there, so routing through of_splitting would
gratuitously assume a preadditive category with a zero object.
References #
- Theo Bühler, Exact categories, Expositiones Mathematicae 28 (2010), 1–69, https://arxiv.org/abs/0811.1480. Definition 2.1 and Remarks 2.2–2.8 fix the notion of a kernel–cokernel pair and the axioms an exact structure imposes on a class of them.
A short complex S : X₁ ⟶ X₂ ⟶ X₃ is a kernel–cokernel pair when S.f is a kernel of
S.g and S.g is a cokernel of S.f. This is Bühler's notion of a kernel–cokernel pair; the
conflations of a Quillen exact structure are an isomorphism-closed class of these.
- nonempty_fIsKernel : Nonempty (CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.KernelFork.ofι S.f ⋯))
S.fis a kernel ofS.g. - nonempty_gIsCokernel : Nonempty (CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.CokernelCofork.ofπ S.g ⋯))
S.gis a cokernel ofS.f.
Instances For
The universal property exhibiting S.f as a kernel of S.g.
Instances For
The universal property exhibiting S.g as a cokernel of S.f.
Equations
- h.gIsCokernel = ⋯.some
Instances For
The inflation of a kernel–cokernel pair is a monomorphism.
The deflation of a kernel–cokernel pair is an epimorphism.
The factorization through the kernel S.f of a morphism into S.X₂ killed by S.g.
Equations
- h.lift k hk = ↑(CategoryTheory.Limits.KernelFork.IsLimit.lift' h.fIsKernel k hk)
Instances For
IsKernelCokernelPair.lift is the unique factorization through S.f.
The factorization through the cokernel S.g of a morphism out of S.X₂ killed by S.f.
Equations
- h.desc k hk = ↑(CategoryTheory.Limits.CokernelCofork.IsColimit.desc' h.gIsCokernel k hk)
Instances For
IsKernelCokernelPair.desc is the unique factorization through S.g.
Being a kernel–cokernel pair is invariant under isomorphism of short complexes; this is the closure property an exact structure demands of its class of conflations.
A functor preserving zero morphisms and the two relevant (co)limits — for instance an equivalence, or an exact functor between abelian categories — carries kernel–cokernel pairs to kernel–cokernel pairs.
A fully faithful functor preserving zero morphisms reflects kernel–cokernel pairs. This is what makes a full subcategory inherit the kernel–cokernel pairs of its ambient category: the universal properties only have to be tested against objects of the subcategory.
A short complex whose first morphism is an isomorphism and whose last object is zero is a kernel–cokernel pair: an isomorphism is an inflation.
A short complex whose second morphism is an isomorphism and whose first object is zero is a kernel–cokernel pair: an isomorphism is a deflation.
The opposite of a kernel–cokernel pair is a kernel–cokernel pair.
The un-opposite of a kernel–cokernel pair is a kernel–cokernel pair.
The biproduct short complex X₁ ⟶ X₁ ⊞ X₂ ⟶ X₂ is a kernel–cokernel pair.
A direct sum of two kernel–cokernel pairs is a kernel–cokernel pair.
Being a kernel–cokernel pair only depends on the isomorphism class of a short complex.
A short complex is a kernel–cokernel pair if and only if its opposite is; the notion is self-dual.
A short complex in Cᵒᵖ is a kernel–cokernel pair if and only if its un-opposite is; the
notion is self-dual.
A split short complex is a kernel–cokernel pair. These are the conflations of the split exact structure on an additive category.
A kernel–cokernel pair whose deflation admits a section is split. The retraction is the
factorization of 𝟙 - S.g ≫ s through the kernel S.f.
Mathlib's CategoryTheory.ShortComplex.Splitting.ofExactOfSection proves this for an exact short
complex in a balanced category; here the kernel–cokernel hypothesis replaces balancedness, so
the statement applies inside an arbitrary additive category carrying an exact structure.
Equations
- h.splittingOfSection s hs = { r := h.lift (CategoryTheory.CategoryStruct.id S.X₂ - CategoryTheory.CategoryStruct.comp S.g s) ⋯, s := s, f_r := ⋯, s_g := hs, id := ⋯ }
Instances For
A kernel–cokernel pair with homology is a short exact short complex.
In a balanced preadditive category, a short exact short complex is a kernel–cokernel pair.
In a balanced preadditive category the kernel–cokernel pairs among the short complexes
with homology are exactly the short exact ones. This identifies the conflations of the
canonical exact structure of an abelian category with Mathlib's
CategoryTheory.ShortComplex.ShortExact.