module Cat.Diagram.Separator.Regular {o β} (C : Precategory o β) (coprods : (I : Set β) β has-coproducts-indexed-by C β£ I β£) where
open Cat.Morphism.Strong.Epi C open Cat.Diagram.Separator.Strong C coprods open Cat.Diagram.Separator C open Cat.Reasoning C open Copowers coprods private variable s : Ob
Regular separatorsπ
Let be a category with set-indexed coproducts. An object is a regular separator if the canonical map is a regular epi.
is-regular-separator : Ob β Type (o β β) is-regular-separator s = β {x} β is-regular-epi C (β!.match (Hom s x) s Ξ» e β e)
A family of objects is a regular separating family if the canonical map is a regular epi.
is-regular-separating-family : β (Idx : Set β) β (sα΅’ : β£ Idx β£ β Ob) β Type (o β β) is-regular-separating-family Idx sα΅’ = β {x} β is-regular-epi C (β!.match (Ξ£[ i β β£ Idx β£ ] (Hom (sα΅’ i) x)) (sα΅’ β fst) snd)
To motivate this definition, note that dense separators are extremely rare, as they impose a strong discreteness condition on Instead, it is slightly more reasonable to assume that every object of arises via some quotient of a bunch of points. This intuition is what regular separators codify.
As the name suggests, regular separators and regular separating families are separators and separating families, respectively. This follows directly from the fact that regular epis are epis.
regular-separatorβseparator : β {s} β is-regular-separator s β is-separator s regular-separatorβseparator regular = epiβseparator coprods $ is-regular-epiβis-epic regular regular-separating-familyβseparating-family : β (Idx : Set β) (sα΅’ : β£ Idx β£ β Ob) β is-regular-separating-family Idx sα΅’ β is-separating-family sα΅’ regular-separating-familyβseparating-family Idx sα΅’ regular = epiβseparating-family coprods Idx sα΅’ $ is-regular-epiβis-epic regular
Relations to other separatorsπ
Every dense separator is regular.
dense-separatorβregular-separator : is-dense-separator s β is-regular-separator s
The proof here mirrors the proof that colimits yield regular epis in the presence of enough coproducts. More explicitly, the idea is that is already a sufficient approximation of so we do not need to perform any quotienting. In other words, ought to be a coequalising pair.
dense-separatorβregular-separator {s = s} dense {x} = regular where module dense = is-dense-separator dense open is-regular-epi open is-coequaliser regular : is-regular-epi C (β!.match (Hom s x) s Ξ» e β e) regular .r = Hom s x β! s regular .arrβ = id regular .arrβ = id regular .has-is-coeq .coequal = refl
This is straightforward enough to prove with sufficient elbow grease.
regular .has-is-coeq .universal {e' = e'} _ = dense.universal Ξ» e β e' β β!.ΞΉ (Hom s x) s e regular .has-is-coeq .factors {e' = e'} {p = p} = β!.uniqueβ (Hom s x) s Ξ» e β (dense.universal _ β β!.match _ _ _) β β!.ΞΉ _ _ e β‘β¨ pullr (β!.commute _ _) β©β‘ dense.universal _ β e β‘β¨ dense.commute β©β‘ e' β β!.ΞΉ _ _ e β regular .has-is-coeq .unique {e' = e'} {colim = h} p = dense.unique _ Ξ» e β h β e β‘Λβ¨ ap (h β_) (β!.commute (Hom s x) s) β©β‘Λ h β β!.match _ _ _ β β!.ΞΉ _ _ e β‘β¨ pulll p β©β‘ e' β β!.ΞΉ _ _ e β
Additionally, note that every regular separator is a strong separator; this follows directly from the fact that every regular epi is strong.
regular-separatorβstrong-separator : β {s} β is-regular-separator s β is-strong-separator s regular-separatorβstrong-separator {s} regular {x} = is-regular-epiβis-strong-epi _ regular