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.
module _ {oc ℓc oc' ℓc' od ℓd oa ℓa} {C : Precategory oc ℓc} {C' : Precategory oc' ℓc'} {D : Precategory od ℓd} {A : Precategory oa ℓa} {p : Functor C C'} {F : Functor C D} {G : Functor C' D} {eta : F => G F∘ p} (lan : is-lan p F G eta) {L : Functor D A} {R : Functor A D} (adj : L ⊣ R) where private open _⊣_ adj module l = is-lan lan open is-lan open _=>_ module A = Cr A module D = Cr D module L = Fr L module R = Fr R module F = Functor F module G = Functor G module p = Functor p LF = L F∘ F LG = L F∘ G RL = R F∘ L module RL = Functor RL module LF = Functor LF module LG = Functor LG
left-adjoint→left-extension : preserves-lan L lan left-adjoint→left-extension = pres where
fixup : ∀ {M : Functor C' A} → (LF => M F∘ p) → F => (R F∘ M) F∘ p fixup α .η x = L-adjunct adj (α .η x) fixup {M = M} α .is-natural x y f = (R.₁ (α .η y) D.∘ unit.η _) D.∘ F.₁ f ≡⟨ D.pullr (unit.is-natural _ _ _) ⟩≡ (R.₁ (α .η y) D.∘ (RL.₁ (F.₁ f)) D.∘ unit.η _) ≡⟨ D.extendl (R.weave (α .is-natural _ _ _)) ⟩≡ R.₁ (M.₁ (p.₁ f)) D.∘ R.₁ (α .η x) D.∘ unit.η _ ∎ where module M = Functor M
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
pres : is-lan p (L F∘ F) (L F∘ G) (nat-assoc-to (L ▸ eta))
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.
pres .σ α .η x = R-adjunct adj (l.σ (fixup α) .η x) pres .σ {M = M} α .is-natural x y f = (ε _ 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 _ _ _) ⟩≡ M.₁ f A.∘ pres .σ α .η x ∎ where 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.
pres .σ-comm {α = α} = ext λ x → (R-adjunct adj (l.σ (fixup α) .η _)) A.∘ L.₁ (eta .η _) ≡⟨ L.pullr (l.σ-comm {α = fixup α} ηₚ _) ⟩≡ R-adjunct adj (L-adjunct adj (α .η x)) ≡⟨ equiv→unit (L-adjunct-is-equiv adj) (α .η x) ⟩≡ α .η x ∎ pres .σ-uniq {M = M} {α = α} {σ' = σ'} wit = ext λ x → R-adjunct adj (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) ⟩≡ σ' .η 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 _ _ _)) ⟩≡ R.₁ (M.₁ f) D.∘ R.₁ (σ' .η x) D.∘ unit.η _ ∎ lemma : fixup α ≡ ((σ'' ◂ p) ∘nt eta) lemma = ext λ x → R.₁ (α .η 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.₁ (σ' .η _) D.∘ unit.η _) D.∘ eta .η x ∎
Dually🔗
By duality, right adjoints preserve right extensions.
module _ {oc ℓc oc' ℓc' od ℓd oa ℓa} {C : Precategory oc ℓc} {C' : Precategory oc' ℓc'} {D : Precategory od ℓd} {A : Precategory oa ℓa} {p : Functor C C'} {F : Functor C D} {G : Functor C' D} {eps : G F∘ p => F} (ran : is-ran p F G eps) {L : Functor A D} {R : Functor D A} (adj : L ⊣ R) where
right-adjoint→right-extension : preserves-ran R ran right-adjoint→right-extension = fixed where pres-lan = left-adjoint→left-extension (is-ran→is-co-lan _ _ ran) (opposite-adjunction adj) module p = is-lan pres-lan open is-ran open _=>_ fixed : is-ran p (R F∘ F) (R F∘ G) (nat-assoc-from (R ▸ eps)) fixed .is-ran.σ {M = M} α = σ' where 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.σ α') fixed .is-ran.σ-comm = ext λ x → p.σ-comm ηₚ _ fixed .is-ran.σ-uniq {M = M} {σ' = σ'} p = ext λ x → p.σ-uniq {σ' = dualise! σ'} (reext! p) ηₚ x
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↩︎