module Cat.Functor.Adjoint.Properties where
Basic properties of adjointsπ
This file contains a collection of basic results about adjoint functors, particularly focusing on when a left/right adjoint is faithful, full, etc.
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 = Cat.Reasoning C module D = Cat.Reasoning D module L = Cat.Functor.Reasoning L module R = Cat.Functor.Reasoning R open _β£_ Lβ£R
Faithful adjointsπ
Let be a pair of adjoint functors. The following conditions are equivalent:
Letβs start with (1 β 2). Suppose that is faithful, and that is faithful, so it suffices to show that Moreover, is a left adjoint, so it suffices to show that the adjuncts and are equal. Finally, is natural, so it suffices to show that which is exactly our hypothesis.
left-faithfulβunit-monic : is-faithful L β β {x} β C.is-monic (Ξ· x) left-faithfulβunit-monic faithful {x} f g Ξ·f=Ξ·g = faithful $ L-adjunct.injective Lβ£R (unit.naturall Ξ·f=Ξ·g)
Proving that (2 β 1) is similarly easy. Suppose the unit is monic, and As is monic, it suffices to show that Additionally, is natural, so it suffices to show that which follows directly from our hypothesis.
unit-monicβleft-faithful : (β {x} β C.is-monic (Ξ· x)) β is-faithful L unit-monicβleft-faithful Ξ·-monic {x} {y} {f} {g} Lf=Lg = Ξ·-monic f g $ unit.viewr R.β¨ Lf=Lg β©R.
Next, letβs show that (3 β 2). This follows from a very short calculation.
left-reflects-monosβunit-monic : (β {x y} {f : C.Hom x y} β D.is-monic (L.β f) β C.is-monic f) β β {x} β C.is-monic (Ξ· x) left-reflects-monosβunit-monic L-reflect {x} = L-reflect Ξ» f g p β f β‘β¨ D.introl zig β©β‘ (Ξ΅ (L.β x) D.β L.β (Ξ· x)) D.β f β‘β¨ D.extendr p β©β‘ (Ξ΅ (L.β x) D.β L.β (Ξ· x)) D.β g β‘β¨ D.eliml zig β©β‘ g β
In general, faithful functors reflect monomorphisms so we get (1 β 3) for free, finishing the proof.
We also obtain dual results for faithful right adjoints, but we omit the (nearly identical) proofs.
right-faithfulβcounit-epic : is-faithful R β β {x} β D.is-epic (Ξ΅ x) counit-epicβright-faithful : (β {x} β D.is-epic (Ξ΅ x)) β is-faithful R right-reflects-episβcounit-epic : (β {x y} {f : D.Hom x y} β C.is-epic (R.β f) β D.is-epic f) β β {x} β D.is-epic (Ξ΅ x)
right-faithfulβcounit-epic faithful {x} f g fΞ΅=gΞ΅ = faithful $ R-adjunct.injective Lβ£R $ counit.naturalr fΞ΅=gΞ΅ counit-epicβright-faithful Ξ΅-epic {x} {y} {f} {g} Rf=Rg = Ξ΅-epic f g $ counit.viewl L.β¨ Rf=Rg β©L. right-reflects-episβcounit-epic R-reflect {x} = R-reflect Ξ» f g p β C.intror zag Β·Β· C.extendl p Β·Β· C.elimr zag
Full adjointsπ
A left adjoint is full if and only if the unit is a split epimorphism.
For the forward direction, suppose that is full. We can then find a in the fibre of over Moreover, is a section of EG: By the usual adjunct yoga, it suffices to show that
which follows from a short calculation.
left-fullβunit-split-epic : is-full L β β {x} β C.is-split-epic (Ξ· x) left-fullβunit-split-epic full {x} = do (f , p) β full (Ξ΅ (L.β x)) pure $ C.make-section f $ R-adjunct.injective Lβ£R $ Ξ΅ (L.β x) D.β L.β (Ξ· x C.β f) β‘β¨ L.removel zig β©β‘ L.Fβ f β‘β¨ p β©β‘ Ξ΅ (L.β x) β‘β¨ D.intror L.F-id β©β‘ Ξ΅ (L.β x) D.β L.β C.id β
For the reverse direction, suppose that every component the unit has a section, and let In particular, must have a section Next, note that thee composite is a morphism so all that remains is to check that
Now, is left adjoint, so we can take the adjunct of both sides of this equality, reducing the problem to showing that
Next, is natural, so we can re-arrange our equation like so.
Finally, as is a section.
unit-split-epicβleft-full : (β {x} β C.is-split-epic (Ξ· x)) β is-full L unit-split-epicβleft-full Ξ·-split-epic {x} {y} f = do s β Ξ·-split-epic {y} let module s = C.has-section s let in-im : L.β (s.section C.β L-adjunct Lβ£R f) β‘ f in-im = L-adjunct.injective Lβ£R $ R.β (L.β (s.section C.β R.β f C.β Ξ· _)) C.β Ξ· _ β‘Λβ¨ unit.is-natural _ _ _ β©β‘Λ Ξ· _ C.β s.section C.β R.Fβ f C.β Ξ· _ β‘β¨ C.cancell s.is-section β©β‘ R.β f C.β Ξ· _ β pure (s.section C.β L-adjunct Lβ£R f , in-im)
Dual results hold for full right adjoints and split monos.
right-fullβcounit-split-monic : is-full R β β {x} β D.is-split-monic (Ξ΅ x) counit-split-monicβright-full : (β {x} β D.is-split-monic (Ξ΅ x)) β is-full R
right-fullβcounit-split-monic full {x} = do (f , p) β full (Ξ· (R.β x)) pure $ D.make-retract f $ L-adjunct.injective Lβ£R $ R.β (f D.β Ξ΅ x) C.β Ξ· (R.β x) β‘β¨ R.remover zag β©β‘ R.Fβ f β‘β¨ p β©β‘ Ξ· (R.β x) β‘β¨ C.introl R.F-id β©β‘ R.β D.id C.β Ξ· (R.Fβ x) β counit-split-monicβright-full Ξ΅-split-monic {x} {y} f = do r β Ξ΅-split-monic {x} let module r = D.has-retract r pure $ R-adjunct Lβ£R f D.β r.retract , R-adjunct.injective Lβ£R (counit.is-natural _ _ _ β D.cancelr r.is-retract)