module Cat.Functor.Hom.Properties where

Properties of hom functors🔗

This module contains a collection of useful facts about Hom functors, and the Yoneda embedding.

Monos and epis🔗

The Yoneda embedding preserves monomorphisms. Let be a mono, and let be a pair of natural transformations such that Equality of natural transformations is defined componentwise, so for every and we have Since is a mono, we can immediately deduce that

  よ-preserves-mono : is-monic f  PSh[C].is-monic ( C .Functor.F₁ f)
  よ-preserves-mono f-mono α β p = ext λ x px 
    f-mono (α .η x px) (β .η x px) (unext p x px)

Furthermore, the Yoneda embedding is fully faithful, so it reflects both monos and epis.

  よ-reflects-mono : PSh[C].is-monic ( C .Functor.F₁ f)  is-monic f
  よ-reflects-mono = よ.faithful→reflects-mono (よ-is-faithful C)

  よ-reflects-epi : PSh[C].is-epic ( C .Functor.F₁ f)  is-epic f
  よ-reflects-epi = よ.faithful→reflects-epi (よ-is-faithful C)

Likewise, the covariant Yoneda embedding takes epis to monos, reflects monos to epis, and vice versa.

  Hom[-,-]-reverses-epi : is-epic f  CoPSh[C].is-monic (Hom[-,-] C .F₁ f)
  Hom[-,-]-reverses-epi {f = f} f-epic α β p = ext λ x px 
    f-epic (α .η x px) (β .η x px) (unext p x px)

  Hom[-,-]-reflects-mono-to-epi : CoPSh[C].is-monic (Hom[-,-] C .F₁ f)  is-epic f
  Hom[-,-]-reflects-mono-to-epi = Hom[-,-].faithful→reflects-mono (Hom[-,-]-is-faithful C)

  Hom[-,-]-reflects-epi-to-mono : CoPSh[C].is-epic (Hom[-,-] C .F₁ f)  is-monic f
  Hom[-,-]-reflects-epi-to-mono = Hom[-,-].faithful→reflects-epi (Hom[-,-]-is-faithful C)