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.

Faithful adjointsπŸ”—

Let be a pair of adjoint functors. The following conditions are equivalent:

  1. is faithful.
  2. The unit of the adjunction is monic.
  3. reflects monomorphisms.

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)

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