Zero morphisms and zero objects #
A category "has zero morphisms" if there is a designated "zero morphism" in each morphism space, and compositions of zero morphisms with anything give the zero morphism. (Notice this is extra structure, not merely a property.)
A category "has a zero object" if it has an object which is both initial and terminal. Having a zero object provides zero morphisms, as the unique morphisms factoring through the zero object.
References #
A category "has zero morphisms" if there is a designated "zero morphism" in each morphism space, and compositions of zero morphisms with anything give the zero morphism.
Every morphism space has zero
f
composed with0
is0
0
composed withf
is0
Instances
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
If you're tempted to use this lemma "in the wild", you should probably
carefully consider whether you've made a mistake in allowing two
instances of HasZeroMorphisms
to exist at all.
See, particularly, the note on zeroMorphismsOfZeroObject
below.
Equations
- CategoryTheory.Limits.hasZeroMorphismsOpposite = CategoryTheory.Limits.HasZeroMorphisms.mk ⋯ ⋯
A category with a zero object has zero morphisms.
It is rarely a good idea to use this. Many categories that have a zero object have zero
morphisms for some other reason, for example from additivity. Library code that uses
zeroMorphismsOfZeroObject
will then be incompatible with these categories because
the HasZeroMorphisms
instances will not be definitionally equal. For this reason library
code should generally ask for an instance of HasZeroMorphisms
separately, even if it already
asks for an instance of HasZeroObjects
.
Equations
- hO.hasZeroMorphisms = CategoryTheory.Limits.HasZeroMorphisms.mk ⋯ ⋯
Instances For
A category with a zero object has zero morphisms.
It is rarely a good idea to use this. Many categories that have a zero object have zero
morphisms for some other reason, for example from additivity. Library code that uses
zeroMorphismsOfZeroObject
will then be incompatible with these categories because
the has_zero_morphisms
instances will not be definitionally equal. For this reason library
code should generally ask for an instance of HasZeroMorphisms
separately, even if it already
asks for an instance of HasZeroObjects
.
Equations
- CategoryTheory.Limits.HasZeroObject.zeroMorphismsOfZeroObject = CategoryTheory.Limits.HasZeroMorphisms.mk ⋯ ⋯
Instances For
An arrow ending in the zero object is zero
An arrow starting at the zero object is zero
An object X
has 𝟙 X = 0
if and only if it is isomorphic to the zero object.
Because X ≅ 0
contains data (even if a subsingleton), we express this ↔
as an ≃
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If 0 : X ⟶ Y
is a monomorphism, then X ≅ 0
.
Equations
- CategoryTheory.Limits.isoZeroOfMonoZero x✝ = { hom := 0, inv := 0, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
If 0 : X ⟶ Y
is an epimorphism, then Y ≅ 0
.
Equations
- CategoryTheory.Limits.isoZeroOfEpiZero x✝ = { hom := 0, inv := 0, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
If a monomorphism out of X
is zero, then X ≅ 0
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If an epimorphism in to Y
is zero, then Y ≅ 0
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If an object X
is isomorphic to 0, there's no need to use choice to construct
an explicit isomorphism: the zero morphism suffices.
Equations
- CategoryTheory.Limits.isoOfIsIsomorphicZero P = { hom := 0, inv := 0, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
A zero morphism 0 : X ⟶ Y
is an isomorphism if and only if
the identities on both X
and Y
are zero.
Equations
- CategoryTheory.Limits.isIsoZeroEquiv X Y = { toFun := ⋯, invFun := ⋯, left_inv := ⋯, right_inv := ⋯ }
Instances For
A zero morphism 0 : X ⟶ X
is an isomorphism if and only if
the identity on X
is zero.
Equations
Instances For
A zero morphism 0 : X ⟶ Y
is an isomorphism if and only if
X
and Y
are isomorphic to the zero object.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A zero morphism 0 : X ⟶ X
is an isomorphism if and only if
X
is isomorphic to the zero object.
Equations
- CategoryTheory.Limits.isIsoZeroSelfEquivIsoZero X = (CategoryTheory.Limits.isIsoZeroEquivIsoZero X X).trans subsingletonProdSelfEquiv
Instances For
If there are zero morphisms, any initial object is a zero object.
If there are zero morphisms, any terminal object is a zero object.
The zero morphism has a MonoFactorisation
through the zero object.
Equations
Instances For
The factorisation through the zero object is an image factorisation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The image of a zero morphism is the zero object.
Equations
- CategoryTheory.Limits.imageZero = (CategoryTheory.Limits.Image.isImage 0).isoExt (CategoryTheory.Limits.imageFactorisationZero X Y).isImage
Instances For
The image of a morphism which is equal to zero is the zero object.
Equations
- CategoryTheory.Limits.imageZero' h = CategoryTheory.Limits.image.eqToIso h ≪≫ CategoryTheory.Limits.imageZero
Instances For
If we know f = 0
,
it requires a little work to conclude image.ι f = 0
,
because f = g
only implies image f ≅ image g
.
In the presence of zero morphisms, coprojections into a coproduct are (split) monomorphisms.
In the presence of zero morphisms, projections into a product are (split) epimorphisms.
In the presence of zero morphisms, coprojections into a coproduct are (split) monomorphisms.
In the presence of zero morphisms, coprojections into a coproduct are (split) monomorphisms.
In the presence of zero morphisms, projections into a product are (split) epimorphisms.
In the presence of zero morphisms, projections into a product are (split) epimorphisms.
If a functor F
is zero, then any cone for F
with a zero point is limit.
Equations
- CategoryTheory.Limits.IsLimit.ofIsZero c hF hc = { lift := fun (x : CategoryTheory.Limits.Cone F) => 0, fac := ⋯, uniq := ⋯ }
Instances For
If a functor F
is zero, then any cocone for F
with a zero point is colimit.
Equations
- CategoryTheory.Limits.IsColimit.ofIsZero c hF hc = { desc := fun (x : CategoryTheory.Limits.Cocone F) => 0, fac := ⋯, uniq := ⋯ }