module Cat.Functor.Adjoint.Epireflective where
Epireflective subcategories🔗
A reflective subcategory is epireflective if the unit of the adjunction is an epimorphism.
module _
{oc ℓc od ℓd}
{C : Precategory oc ℓc}
{D : Precategory od ℓd}
{L : Functor C D} {R : Functor D C}
where
private
module C where
open Cat.Reasoning C public
open Cat.Morphism.Strong.Epi C public
module D = Cat.Reasoning D
module L = Cat.Functor.Reasoning L
module R = Cat.Functor.Reasoning R
record is-epireflective (L⊣R : L ⊣ R) : Type (oc ⊔ od ⊔ ℓc ⊔ ℓd) where
no-eta-equality
open _⊣_ L⊣R
field
: is-reflective L⊣R
reflective : ∀ {x} → C.is-epic (η x) unit-epic
Likewise, a strong epireflective category is a reflective subcategory where the unit is a strong epimorphism.
record is-strong-epireflective (L⊣R : L ⊣ R) : Type (oc ⊔ od ⊔ ℓc ⊔ ℓd) where
no-eta-equality
open _⊣_ L⊣R
field
: is-reflective L⊣R
reflective : ∀ {x} → C.is-strong-epi (η x) unit-strong-epi
module _
{oc ℓc od ℓd}
{C : Precategory oc ℓc}
{D : Precategory od ℓd}
{L : Functor C D} {R : Functor D C}
(L⊣R : L ⊣ R)
where
private
module C where
open Cat.Reasoning C public
open Cat.Morphism.Strong.Epi C public
open Cat.Morphism.Strong.Mono C public
module D = Cat.Reasoning D
module L = Cat.Functor.Reasoning L
module R = Cat.Functor.Reasoning R
open _⊣_ L⊣R
private
: ∀ {a b} → C.Hom a b → Ω
Epi = elΩ (C.is-epic x)
Epi x
: ∀ {a b} → C.Hom a b → Ω
Mono = elΩ (C.is-monic x)
Mono x
: ∀ {a b} → C.Hom a b → Ω
StrongEpi = elΩ (C.is-strong-epi f)
StrongEpi f
: ∀ {a b} → C.Hom a b → Ω
StrongMono = elΩ (C.is-strong-mono f) StrongMono f
Epireflective subcategories and strong monos🔗
If is epireflective, and is a strong monomorphism, then is invertible.
epireflective+strong-mono→unit-invertible: is-epireflective L⊣R
→ ∀ {x a} {f : C.Hom x (R.₀ a)} → C.is-strong-mono f → C.is-invertible (η x)
It suffices to show that is a strong monomorphism, as strong monos that are epic are isos. Luckily, this is rather straightforward: strong monos can be left cancelled, so we can resort to showing that is strong monic. However, is natural, which gives us the following commutative square:
Strong monos compose, so all that remains is to check that is a strong mono. However, is invertible, as the adjunction is reflective!
{x} {a} {f} f-strong-mono =
epireflective+strong-mono→unit-invertible epireflective .strong-mono+epi→invertible
C
unit-strong-mono
unit-epicwhere
open is-epireflective epireflective
: C.is-strong-mono (η x)
unit-strong-mono =
unit-strong-mono .strong-mono-cancell (R.₁ (L.₁ f)) (η x) $
C.subst-is-strong-mono (unit.is-natural _ _ _) $
C.strong-mono-∘ (η (R.₀ a)) f
C(C.invertible→strong-mono (is-reflective→unit-G-is-iso L⊣R reflective))
f-strong-mono
We also can prove a partial converse. is epireflective if:
- is reflective.
- is invertible if there is a strong mono
- Every morphism factors as an epi followed by a strong mono.
By our assumptions, is reflective, so all we need to show is that the unit is always epic.
factor+strong-mono-unit-invertible→epireflective: is-reflective L⊣R
→ (∀ {x a} {f : C.Hom x (R.₀ a)} → C.is-strong-mono f → C.is-invertible (η x))
→ (∀ {x y} → (f : C.Hom x y) → Factorisation C Epi StrongMono f)
→ ∀ {x} → C.is-epic (η x)
The proof starts by factoring the unit as Moreover, we can extend this factorisation along yielding the following diagram:
{x} =
factor+strong-mono-unit-invertible→epireflective reflective unit-inv factor
unit-epicwhere
open Factorisation (factor (η x)) renaming
( mediating to im
; forget to m
; mediate to e
; forget∈M to m-strong-mono
; mediate∈E to e-epi
)
What follows is a massive diagram chase. First, note that must be invertible, as is a strong mono.
: C.is-invertible (η im)
unit-im-invertible =
unit-im-invertible (□-out! m-strong-mono) unit-inv
Next, observe that must also be invertible: their composite is which is always invertible if is reflective.
RL[m]∘RL[e]-invertible: C.is-invertible (R.₁ (L.₁ m) C.∘ R.₁ (L.₁ e))
=
RL[m]∘RL[e]-invertible .subst-is-invertible (R.expand (L.expand factors)) $
C.F-map-invertible $
R is-reflective→F-unit-is-iso L⊣R reflective
This in turn means that must be a strong mono, as we can cancel strong monos.
: C.is-strong-mono (R.₁ (L.₁ e))
RL[e]-strong-mono =
RL[e]-strong-mono .strong-mono-cancell (R.₁ (L.₁ m)) (R.₁ (L.₁ e)) $
C.invertible→strong-mono $
C RL[m]∘RL[e]-invertible
Moreover, is also epic. This follows from a somewhat convoluted chase: has to be epic, as is invertible. Moreover, so we can use right-cancellation of epis to deduce that must be epic.
: C.is-epic (R.₁ (L.₁ e))
RL[e]-epic =
RL[e]-epic .epic-cancelr $
C.subst-is-epic (unit.is-natural _ _ _) $
C.epic-∘
C(C.invertible→epic unit-im-invertible)
(□-out! e-epi)
We can put the previous two observations together to show that must be invertible. Additionally, must also be invertible by 2-out-of-3.
: C.is-invertible (R.₁ (L.₁ e))
RL[e]-invertible =
RL[e]-invertible .strong-mono+epi→invertible
C
RL[e]-strong-mono
RL[e]-epic
: C.is-invertible (R.₁ (L.₁ m))
RL[m]-invertible =
RL[m]-invertible .invertible-cancell RL[e]-invertible $
C RL[m]∘RL[e]-invertible
We’re on to the home stretch now! Our final penultimate step is to show that must be invertible. This is another somewhat convoluted chase: is invertible, so must also be invertible by naturality. However, must itself be invertible, so is invertible via 2-out-of-3.
: C.is-invertible m
m-invertible =
m-invertible .invertible-cancelr
C(is-reflective→unit-G-is-iso L⊣R reflective)
(C.subst-is-invertible (sym (unit.is-natural _ _ _)) $
.invertible-∘ RL[m]-invertible unit-im-invertible) C
The prior step means that factors into a pair of epis, so it must also be an epi.
: C.is-epic (η x)
unit-epic =
unit-epic .subst-is-epic (sym factors) $
C.epic-∘
C(C.invertible→epic m-invertible)
(□-out! e-epi)
Strong epireflective subcategories and monos🔗
Our previous results relating epireflections and strong monos relied on the (very useful) fact that morphisms that are both strong monos and epis are isos. However, we can alternatively use monos and strong epis to prove invertability: this suggests that we can weaken the preconditions when is a strong epireflective category.
strong-epireflective+mono→unit-invertible: is-strong-epireflective L⊣R
→ ∀ {x a} {f : C.Hom x (R.₀ a)} → C.is-monic f → C.is-invertible (η x)
factor+mono-unit-invertible→strong-epireflective: is-reflective L⊣R
→ (∀ {x a} {f : C.Hom x (R.₀ a)} → C.is-monic f → C.is-invertible (η x))
→ (∀ {x y} → (f : C.Hom x y) → Factorisation C StrongEpi Mono f)
→ ∀ {x} → C.is-strong-epi (η x)
Fortunately, the proofs are almost identical to their non-strong counterparts. Unfortunately, this means that we need to replay the giant diagram chase; we will spare the innocent reader the details.
{x} {a} {f} f-mono =
strong-epireflective+mono→unit-invertible strong-epirefl .strong-epi+mono→invertible
C
unit-strong-epi
unit-monowhere
open is-strong-epireflective strong-epirefl
: C.is-monic (η x)
unit-mono =
unit-mono .monic-cancell $
C.subst-is-monic (unit.is-natural _ _ _) $
C.monic-∘
C(C.invertible→monic (is-reflective→unit-G-is-iso L⊣R reflective))
f-mono
{x} =
factor+mono-unit-invertible→strong-epireflective reflective unit-inv factor
unit-strong-epiwhere
open Factorisation (factor (η x)) renaming
( mediating to im
; forget to m
; mediate to e
; forget∈M to m-mono
; mediate∈E to e-strong-epi
)
: C.is-invertible (η im)
unit-im-invertible =
unit-im-invertible (□-out! m-mono)
unit-inv
RL[m]∘RL[e]-invertible: C.is-invertible (R.₁ (L.₁ m) C.∘ R.₁ (L.₁ e))
=
RL[m]∘RL[e]-invertible .subst-is-invertible (R.expand (L.expand factors)) $
C.F-map-invertible $
R
is-reflective→F-unit-is-iso L⊣R reflective
: C.is-monic (R.₁ (L.₁ e))
RL[e]-mono =
RL[e]-mono .monic-cancell $
C.invertible→monic $
C
RL[m]∘RL[e]-invertible
: C.is-strong-epi (R.₁ (L.₁ e))
RL[e]-strong-epi =
RL[e]-strong-epi .strong-epi-cancelr _ _ $
C.subst-is-strong-epi (unit.is-natural _ _ _) $
C.strong-epi-∘ _ _
C(C.invertible→strong-epi unit-im-invertible)
(□-out! e-strong-epi)
: C.is-invertible (R.₁ (L.₁ e))
RL[e]-invertible =
RL[e]-invertible .strong-epi+mono→invertible
C
RL[e]-strong-epi
RL[e]-mono
: C.is-invertible (R.₁ (L.₁ m))
RL[m]-invertible =
RL[m]-invertible .invertible-cancell RL[e]-invertible $
C
RL[m]∘RL[e]-invertible
: C.is-invertible m
m-invertible =
m-invertible .invertible-cancelr
C(is-reflective→unit-G-is-iso L⊣R reflective)
(C.subst-is-invertible (sym (unit.is-natural _ _ _)) $
.invertible-∘ RL[m]-invertible unit-im-invertible)
C
: C.is-strong-epi (η x)
unit-strong-epi =
unit-strong-epi .subst-is-strong-epi (sym factors) $
C.strong-epi-∘ _ _
C(C.invertible→strong-epi m-invertible)
(□-out! e-strong-epi)