mathlib documentation

category_theory.​abelian.​basic

category_theory.​abelian.​basic

Abelian categories

This file contains the definition and basic properties of abelian categories.

There are many definitions of abelian category. Our definition is as follows: A category is called abelian if it is preadditive, has a finite products, kernels and cokernels, and if every monomorphism and epimorphism is normal.

It should be noted that if we also assume coproducts, then preadditivity is actually a consequence of the other properties, as we show in non_preadditive_abelian.lean. However, this fact is of little practical relevance, since essentially all interesting abelian categories come with a preadditive structure. In this way, by requiring preadditivity, we allow the user to pass in the preadditive structure the specific category they are working with has natively.

Main definitions

Main results

Implementation notes

The typeclass abelian does not extend non_preadditive_abelian, to avoid having to deal with comparing the two has_zero_morphisms instances (one from preadditive in abelian, and the other a field of non_preadditive_abelian). As a consequence, at the beginning of this file we trivially build a non_preadditive_abelian instance from an abelian instance, and use this to restate a number of theorems, in each case just reusing the proof from non_preadditive_abelian.lean.

We don't show this yet, but abelian categories are finitely complete and finitely cocomplete. However, the limits we can construct at this level of generality will most likely be less nice than the ones that can be created in specific applications. For this reason, we adopt the following convention:

References

@[class]
structure category_theory.​abelian (C : Type u) [category_theory.category C] :
Type (max u (v+1))

A (preadditive) category C is called abelian if it has all finite products, all kernels and cokernels, and if every monomorphism is the kernel of some morphism and every epimorphism is the cokernel of some morphism.

(This definition implies the existence of zero objects: finite products give a terminal object, and in a preadditive category any terminal object is a zero object.)

Instances

The kernel of the cokernel of f is called the image of f.

The inclusion of the image into the codomain.

There is a canonical epimorphism p : P ⟶ image f for every f.

@[simp]

f factors through its image via the canonical morphism p.

@[instance]

The map p : P ⟶ image f is an epimorphism

Equations
  • _ = _

The cokernel of the kernel of f is called the coimage of f.

There is a canonical monomorphism i : coimage f ⟶ Q.

@[instance]

The canonical morphism i : coimage f ⟶ Q is a monomorphism

Equations
  • _ = _

There is a canonical isomorphism between the coimage and the image of a morphism.

In an abelian category, an epi is the cokernel of its kernel. More precisely: If f is an epimorphism and s is some limit kernel cone on f, then f is a cokernel of fork.ι s.

Equations

In an abelian category, a mono is the kernel of its cokernel. More precisely: If f is a monomorphism and s is some colimit cokernel cocone on f, then f is a kernel of cofork.π s.

Equations

This section contains a slightly technical result about pullbacks and biproducts. We will need it in the proof that the pullback of an epimorphism is an epimorpism.

The canonical map pullback f g ⟶ X ⊞ Y induces a kernel cone on the map biproduct X Y ⟶ Z induced by f and g. A slightly more intuitive way to think of this may be that it induces an equalizer fork on the maps induced by (f, 0) and (0, g).

The canonical map Y ⊞ Z ⟶ pushout f g induces a cokernel cofork on the map X ⟶ Y ⊞ Z induced by f and -g.

@[instance]

In an abelian category, the pullback of an epimorphism is an epimorphism. Proof from [aluffi2016, IX.2.3], cf. [borceux-vol2, 1.7.6]

Equations
  • _ = _
@[instance]

In an abelian category, the pullback of an epimorphism is an epimorphism.

Equations
  • _ = _