module Cat.Diagram.Zero where
module _ {o h} (C : Precategory o h) where
open Cat.Reasoning C
Zero objects🔗
In some categories, initial and terminal objects coincide. When this occurs, we call the object a zero object.
record is-zero (ob : Ob) : Type (o ⊔ h) where
field
: is-initial C ob
has-is-initial : is-terminal C ob
has-is-terminal
record Zero : Type (o ⊔ h) where
field
: Ob
∅ : is-zero ∅
has-is-zero
open is-zero has-is-zero public
: Terminal C
terminal = record { top = ∅ ; has⊤ = has-is-terminal }
terminal
: Initial C
initial = record { bot = ∅ ; has⊥ = has-is-initial }
initial
open Terminal terminal public hiding (top)
open Initial initial public hiding (bot)
If has a zero object then every is pointed, by the composite we refer to a map which factors through a zero object as a zero morphism.
: ∀ {x y} → Hom x y
zero→ = ¡ ∘ !
zero→
: ∀ {x y z} → (f : Hom y z) → f ∘ zero→ {x} {y} ≡ zero→
zero-∘l = pulll (sym (¡-unique (f ∘ ¡)))
zero-∘l f
: ∀ {x y z} → (f : Hom x y) → zero→ {y} {z} ∘ f ≡ zero→
zero-∘r = pullr (sym (!-unique (! ∘ f)))
zero-∘r f
: ∀ {x y z} → (f : Hom y z) → (g : Hom x y) → f ∘ zero→ ≡ zero→ ∘ g
zero-comm = zero-∘l f ∙ sym (zero-∘r g)
zero-comm f g
: ∀ {x y z} → (f : Hom y z) → (g : Hom x y) → zero→ ∘ f ≡ g ∘ zero→
zero-comm-sym = zero-∘r f ∙ sym (zero-∘l g) zero-comm-sym f g
In the presence of a zero object, zero morphisms are unique with the property of being constant, in the sense that for any parallel pair (By duality, they are also unique with the property of being coconstant.)
zero-unique: ∀ {x y} {z : Hom x y}
→ (∀ {w} (f g : Hom w x) → z ∘ f ≡ z ∘ g)
→ z ≡ zero→
= sym (idr _) ∙ const _ zero→ ∙ zero-∘l _ zero-unique const