module Cat.Instances.Sheaves.Exponentials where

Exponentials of sheavesπŸ”—

In this module we will show that the sheaves, for a coverage are an exponential ideal in This means that, if is a and is any presheaf at all, then the exponential object is also a The proof will rely crucially on the closure properties of sites. For this proof, keep in that the exponential is constructed1 to have sections

is-sheaf-exponential
  : βˆ€ {β„“ β„“s} {C : Precategory β„“ β„“} (J : Coverage C β„“s) (A B : Functor (C ^op) (Sets β„“))
  β†’ is-sheaf J B
  β†’ is-sheaf J (PSh[_,_] {C = C} A B)
is-sheaf-exponential {C = C} J A B bshf = from-is-sheaf₁ Ξ» c β†’ done where
  open Cat C
  module bshf = sat bshf

  psh = PSh[_,_] {C = C} A B

The first thing we’ll do is show that is Let be a sieve of and be sections at which are equal, i.e.Β such that, for we have, for all maps and we have This condition is a bit of a mouthful, but all we’ve done is unfold the definition of equality in

What we must show, however, is that for a totally arbitrary and But, since this is an equality in and is a it suffices to choose a sieve of and to show this equality i.e.Β to show for any Note that, by naturality, these are equal to resp. We can then choose which lets us apply our equality (since means This concludes the proof that is

  abstract
    sep : βˆ€ {U} {c : J .covers U} β†’ is-separated₁ psh (J .cover c)
    sep {c = c} {x} {y} loc = ext Ξ» V f z β†’ bshf.separate (pull f (inc c)) Ξ» g hg β†’
      B βŸͺ g ⟫ x .Ξ· V (f , z)             β‰‘Λ˜βŸ¨ x .is-natural _ _ _ $β‚š _ βŸ©β‰‘Λ˜
      x .Ξ· _ (f ∘ g , A βŸͺ g ⟫ z)         β‰‘βŸ¨ ap (x .Ξ· _) (Ξ£-pathp (intror refl) refl) βŸ©β‰‘
      x .Ξ· _ ((f ∘ g) ∘ id , A βŸͺ g ⟫ z)  β‰‘βŸ¨ loc (f ∘ g) hg Ξ·β‚š _ $β‚š _ βŸ©β‰‘
      y .Ξ· _ ((f ∘ g) ∘ id , A βŸͺ g ⟫ z)  β‰‘Λ˜βŸ¨ ap (y .Ξ· _) (Ξ£-pathp (intror refl) refl) βŸ©β‰‘Λ˜
      y .Ξ· _ (f ∘ g , A βŸͺ g ⟫ z)         β‰‘βŸ¨ y .is-natural _ _ _ $β‚š _ βŸ©β‰‘
      B βŸͺ g ⟫ y .Ξ· V (f , z)             ∎

The proof of separatedness demonstrates the general schema for shuffling between local equality of natural transformations and local equality of their components, by passing to a pullback. The rest of the proof essentially follows from similar calculations.

This will also be the strategy to show that admits sections! To put together a section for a patch for a sieve it suffices to do so at each component; so we’ll start by showing that descends to a patch for on for any as long as we’re given Each part of is given by evaluating the corresponding part of

  module _ {U} {c : J .covers U} (p : Patch psh (J .cover c)) where
    p' : βˆ€ {V} (e : A Κ» V) (f : Hom V U) β†’ Patch B (pullback f (J .cover c))
    p' e f .part g hg = p .part (f ∘ g) hg .Ξ· _ (id , A βŸͺ g ⟫ e)
    p' e f .patch g hg h hh =
      B βŸͺ h ⟫ p .part (f ∘ g) _ .Ξ· _ (id , A βŸͺ g ⟫ e)          β‰‘Λ˜βŸ¨ p .part (f ∘ g) hg .is-natural _ _ _ $β‚š (id , A βŸͺ g ⟫ e) βŸ©β‰‘Λ˜
      p .part (f ∘ g) _ .Ξ· _ (id ∘ h , A βŸͺ h ⟫ (A βŸͺ g ⟫ e))    β‰‘βŸ¨ ap (Ξ» it β†’ p .part (f ∘ g) hg .Ξ· _ (it , A βŸͺ h ⟫ (A βŸͺ g ⟫ e))) id-comm-sym βŸ©β‰‘
      p .part (f ∘ g) _ .Ξ· _ (h ∘ id , A βŸͺ h ⟫ (A βŸͺ g ⟫ e))    β‰‘βŸ¨ p .patch (f ∘ g) hg h (subst (_∈ J .cover c) (assoc _ _ _) hh) Ξ·β‚š _ $β‚š (id , _) βŸ©β‰‘
      p .part ((f ∘ g) ∘ h) _ .Ξ· _ (id , A βŸͺ h ⟫ (A βŸͺ g ⟫ e))  β‰‘βŸ¨ app p (sym (assoc f g h)) Ξ·β‚š _ $β‚š _ βŸ©β‰‘
      p .part (f ∘ g ∘ h) _ .Ξ· _ (id , A βŸͺ h ⟫ (A βŸͺ g ⟫ e))    β‰‘βŸ¨ ap (Ξ» e β†’ p .part (f ∘ g ∘ h) hh .Ξ· _ (id , e)) (sym (A .F-∘ _ _ # _)) βŸ©β‰‘
      p .part (f ∘ g ∘ h) _ .Ξ· _ (id , A βŸͺ g ∘ h ⟫ e)          ∎

Then, since is a for the component at we can glue together the relevant By the same strategy by which we showed separatedness we can show naturality, and that the resulting natural transformation really does glue

    s' : Section (PSh[_,_] {C = C} A B) p
    s' .whole .Ξ· x (f , e) = it .whole module s' where
      it : Section B (p' e f)
      it = bshf.split (pull f (inc c)) (p' e f)

    s' .whole .is-natural x y f = ext Ξ» g e β†’ bshf.separate (pull (g ∘ f) (inc c)) Ξ» h hh β†’
      let clo = subst (_∈ J .cover c) (sym (assoc _ _ _)) hh in
      B βŸͺ h ⟫ (s'.it y (g ∘ f) (A βŸͺ f ⟫ e) .whole)            β‰‘βŸ¨ s'.it y (g ∘ f) (A βŸͺ f ⟫ e) .glues _ hh βŸ©β‰‘
      p .part ((g ∘ f) ∘ h) _ .Ξ· _ (id , A βŸͺ h ⟫ (A βŸͺ f ⟫ e)) β‰‘Λ˜βŸ¨ (Ξ» i β†’ p .part (assoc g f h i) (coe1β†’i (Ξ» i β†’ assoc g f h i ∈ J .cover c) i hh) .Ξ· _ (id , A .F-∘ h f i e)) βŸ©β‰‘Λ˜
      p .part (g ∘ f ∘ h) _ .Ξ· _ (id , A βŸͺ f ∘ h ⟫ e)         β‰‘Λ˜βŸ¨ sym (B .F-∘ _ _ # _) βˆ™ s'.it x g e .glues (f ∘ h) clo βŸ©β‰‘Λ˜
      B βŸͺ h ⟫ (B βŸͺ f ⟫ (s'.it x g e .whole))                  ∎

    s' .glues f hf = ext Ξ» x g e β†’
      let clo = J .cover c .closed (J .cover c .closed hf g) id in
      s'.it x (f ∘ g) e .whole                         β‰‘Λ˜βŸ¨ B .F-id # _ βŸ©β‰‘Λ˜
      (B βŸͺ id ⟫ s'.it x (f ∘ g) e .whole)              β‰‘βŸ¨ s'.it x (f ∘ g) e .glues id clo βŸ©β‰‘
      p .part ((f ∘ g) ∘ id) _ .Ξ· x (id , A βŸͺ id ⟫ e)  β‰‘βŸ¨ apβ‚‚ (Ξ» i1 i2 β†’ p .part i1 i2 .Ξ· x (id , A βŸͺ id ⟫ e)) (idr (f ∘ g)) prop! βŸ©β‰‘
      p .part (f ∘ g) _ .Ξ· x (id , A βŸͺ id ⟫ e)         β‰‘βŸ¨ sym (p .patch f hf g (J .cover c .closed hf g) Ξ·β‚š _ $β‚š (id , A βŸͺ id ⟫ e)) βŸ©β‰‘
      p .part f hf .Ξ· x (g ∘ id , A βŸͺ id ⟫ e)          β‰‘βŸ¨ ap (p .part f hf .Ξ· x) (Ξ£-pathp (idr g) (A .F-id # _)) βŸ©β‰‘
      p .part f hf .η x (g , e)                        ∎

    done = from-is-separated₁ psh sep s'

  1. If you’re worried about the dependence on the concrete construction, don’t be: this always holds as a natural isomorphism, by the yoneda lemma:

    β†©οΈŽ