module Cat.Diagram.Zero wheremodule _ {o h} (C : Precategory o h) where
open Cat.Reasoning CZero 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
has-is-initial : is-initial C ob
has-is-terminal : is-terminal C ob
record Zero : Type (o ⊔ h) where
field
∅ : Ob
has-is-zero : is-zero ∅
open is-zero has-is-zero public
terminal : Terminal C
terminal = record { top = ∅ ; has⊤ = has-is-terminal }
initial : Initial C
initial = record { bot = ∅ ; has⊥ = has-is-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.
zero→ : ∀ {x y} → Hom x y
zero→ = ¡ ∘ !
zero-∘l : ∀ {x y z} → (f : Hom y z) → f ∘ zero→ {x} {y} ≡ zero→
zero-∘l f = pulll (sym (¡-unique (f ∘ ¡)))
zero-∘r : ∀ {x y z} → (f : Hom x y) → zero→ {y} {z} ∘ f ≡ zero→
zero-∘r f = pullr (sym (!-unique (! ∘ f)))
zero-comm : ∀ {x y z} → (f : Hom y z) → (g : Hom x y) → f ∘ zero→ ≡ zero→ ∘ g
zero-comm f g = zero-∘l f ∙ sym (zero-∘r g)
zero-comm-sym : ∀ {x y z} → (f : Hom y z) → (g : Hom x y) → zero→ ∘ f ≡ g ∘ zero→
zero-comm-sym f g = zero-∘r f ∙ sym (zero-∘l 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→
zero-unique const = sym (idr _) ∙ const _ zero→ ∙ zero-∘l _