module Cat.Diagram.Separator.Regular
{o ℓ}
(C : Precategory o ℓ)
(coprods : (I : Set ℓ) → has-coproducts-indexed-by C ∣ I ∣)
where
Regular separators🔗
Let be a category with set-indexed coproducts. An object is a regular separator if the canonical map is a regular epi.
: Ob → Type (o ⊔ ℓ)
is-regular-separator = ∀ {x} → is-regular-epi C (⊗!.match (Hom s x) s λ e → e) is-regular-separator s
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.
{s = s} dense {x} = regular where
dense-separator→regular-separator module dense = is-dense-separator dense
open is-regular-epi
open is-coequaliser
: 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 regular
This is straightforward enough to prove with sufficient elbow grease.
.has-is-coeq .universal {e' = e'} _ =
regular .universal λ e → e' ∘ ⊗!.ι (Hom s x) s e
dense.has-is-coeq .factors {e' = e'} {p = p} =
regular .unique₂ (Hom s x) s λ e →
⊗!(dense.universal _ ∘ ⊗!.match _ _ _) ∘ ⊗!.ι _ _ e ≡⟨ pullr (⊗!.commute _ _) ⟩
.universal _ ∘ e ≡⟨ dense.commute ⟩
dense.ι _ _ e ∎
e' ∘ ⊗!.has-is-coeq .unique {e' = e'} {other = h} p =
regular .unique _ λ e →
dense(h ∘_) (⊗!.commute (Hom s x) s) ⟩
h ∘ e ≡˘⟨ ap .match _ _ _ ∘ ⊗!.ι _ _ e ≡⟨ pulll p ⟩
h ∘ ⊗!.ι _ _ 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
{s} regular {x} =
regular-separator→strong-separator _ regular is-regular-epi→is-strong-epi