module Cat.Functor.Adjoint.Kan where
Adjoints preserve Kan extensions🔗
Let be a pair of adjoint functors. It’s well-known that right adjoints preserve limits1, and dually that left adjoints preserve colimits, but it turns out that this theorem can be made a bit more general: If is a left (resp. right) extension of along then is a left extension of along left adjoints preserve left extensions. This dualises to right adjoints preserving right extensions.
The proof could be given in bicategorical generality: If the triangle below is a left extension diagram, then the overall pasted diagram is also a left extension. This is essentially because the adjunction provides a bunch of isomorphisms between natural transformations, e.g. which we can use to “grow” the original extension diagram.
: preserves-lan L lan
left-adjoint→left-extension = pres where left-adjoint→left-extension
It wouldn’t fit in the diagram above, but the 2-cell of the larger diagram is simply the whiskering Unfortunately, proof assistants; Our existing definition of whiskering lands in but we need a natural transformation onto
: is-lan p (L F∘ F) (L F∘ G) (nat-assoc-to (L ▸ eta)) pres
Given a 2-cell how do we factor it through as a 2-cell Well, since the original diagram was an extension, if we can get our hands on a 2-cell that’ll give us a cell Hm: choose let be the adjunct of factor it through the original into a cell and let be its adjunct.
.σ α .η x = R-adjunct adj (l.σ (fixup α) .η x)
pres .σ {M = M} α .is-natural x y f =
pres (ε _ A.∘ L.₁ (l.σ (fixup α) .η y)) A.∘ LG.₁ f ≡⟨ A.pullr (L.weave (l.σ (fixup α) .is-natural x y f)) ⟩
_ A.∘ (L.₁ (RM.₁ f) A.∘ L.₁ (l.σ (fixup α) .η x)) ≡⟨ A.extendl (counit.is-natural _ _ _) ⟩
ε .₁ f A.∘ pres .σ α .η x ∎
Mwhere module M = Functor M
module RM = Functor (R F∘ M)
And since every part of the process in the preceeding paragraph is an isomorphism, this is indeed a factorisation, and it’s unique to boot: we’ve shown that is the extension of along
The details of the calculation is just some more calculation with natural transformations. We’ll leave them here for the intrepid reader but they will not be elaborated on.
.σ-comm {α = α} = ext λ x →
pres (R-adjunct adj (l.σ (fixup α) .η _)) A.∘ L.₁ (eta .η _) ≡⟨ L.pullr (l.σ-comm {α = fixup α} ηₚ _) ⟩
(L-adjunct adj (α .η x)) ≡⟨ equiv→unit (L-adjunct-is-equiv adj) (α .η x) ⟩
R-adjunct adj .η x ∎
α
.σ-uniq {M = M} {α = α} {σ' = σ'} wit = ext λ x →
pres (l.σ (fixup α) .η x) ≡⟨ A.refl⟩∘⟨ ap L.₁ (l.σ-uniq lemma ηₚ x) ⟩
R-adjunct adj (L-adjunct adj (σ' .η x)) ≡⟨ equiv→unit (L-adjunct-is-equiv adj) (σ' .η x) ⟩
R-adjunct adj .η x ∎
σ' where
module M = Functor M
: G => R F∘ M
σ'' .η x = L-adjunct adj (σ' .η x)
σ'' .is-natural x y f =
σ'' (R.₁ (σ' .η _) D.∘ unit.η _) D.∘ G.₁ f ≡⟨ D.pullr (unit.is-natural _ _ _) ⟩
(R.₁ (σ' .η _) D.∘ (RL.₁ (G.₁ f)) D.∘ unit.η _) ≡⟨ D.extendl (R.weave (σ' .is-natural _ _ _)) ⟩
.₁ (M.₁ f) D.∘ R.₁ (σ' .η x) D.∘ unit.η _ ∎
R
: fixup α ≡ ((σ'' ◂ p) ∘nt eta)
lemma = ext λ x →
lemma .₁ (α .η x) D.∘ unit.η _ ≡⟨ ap R.₁ (wit ηₚ _) D.⟩∘⟨refl ⟩
R.₁ (σ' .η _ A.∘ L.₁ (eta .η _)) D.∘ unit.η _ ≡⟨ ap (D._∘ unit.η _) (R.F-∘ _ _) ∙ D.extendr (sym (unit.is-natural _ _ _)) ⟩
R(R.₁ (σ' .η _) D.∘ unit.η _) D.∘ eta .η x ∎
Dually🔗
By duality, right adjoints preserve right extensions.
: preserves-ran R ran
right-adjoint→right-extension = fixed where
right-adjoint→right-extension = left-adjoint→left-extension
pres-lan (is-ran→is-co-lan _ _ ran)
(opposite-adjunction adj)
module p = is-lan pres-lan
open is-ran
open _=>_
: is-ran p (R F∘ F) (R F∘ G) (nat-assoc-from (R ▸ eps))
fixed .is-ran.σ {M = M} α = σ' where
fixed unquoteDecl α' = dualise-into α'
(Functor.op R F∘ Functor.op F => Functor.op M F∘ Functor.op p)
αunquoteDecl σ' = dualise-into σ' (M => R F∘ G) (p.σ α')
.is-ran.σ-comm = ext λ x → p.σ-comm ηₚ _
fixed .is-ran.σ-uniq {M = M} {σ' = σ'} p =
fixed λ x → p.σ-uniq {σ' = dualise! σ'} (reext! p) ηₚ x ext
Here on the 1Lab, we derive the proof that right (resp. left) adjoints preserve limits (resp. colimits) from this proof that adjoints preserve Kan extensions. For a more concrete approach to that proof, we recommend the nLab’s↩︎