-------------------------------------------------------------------------------- author: Ayberk Tosun date-started: 2022-03-01 dates-updated: [2024-05-06] -------------------------------------------------------------------------------- Originally part of `ayberkt/formal-topology-in-UF`. Ported to TypeTopology on 2022-03-01. \begin{code} {-# OPTIONS --safe --without-K #-} open import MLTT.Spartan open import UF.FunExt open import UF.PropTrunc module Locales.AdjointFunctorTheoremForFrames (pt : propositional-truncations-exist) (fe : Fun-Ext) where open import Locales.ContinuousMap.Definition pt fe open import Locales.ContinuousMap.FrameHomomorphism-Properties pt fe open import Locales.Frame pt fe open import Locales.GaloisConnection pt fe open import Slice.Family open import UF.Logic open AllCombinators pt fe open PropositionalTruncation pt open import UF.SubtypeClassifier open Locale \end{code} \begin{code} module AdjointFunctorTheorem (X : Locale π€' π₯ π₯) (Y : Locale π€ π₯ π₯) (π· : has-basis (πͺ Y) holds) where \end{code} \begin{code} private πͺXβ = poset-of (πͺ X) πͺYβ = poset-of (πͺ Y) open GaloisConnectionBetween πͺYβ πͺXβ aft-forward : (f : πͺYβ βmβ πͺXβ) β has-right-adjoint f β is-join-preserving (πͺ Y) (πͺ X) (f .prβ) holds aft-forward (f , ΞΌ) (β@(g , _) , p) S = β[ πͺ X ]-unique β f s β£ s Ξ΅ S β (f (β[ πͺ Y ] S)) (Ξ² , Ξ³) where open Joins (Ξ» x y β x β€[ poset-of (πͺ X) ] y) open Joins (Ξ» x y β x β€[ poset-of (πͺ Y) ] y) using () renaming (_is-an-upper-bound-of_ to _is-a-ub-of_) Ξ² : (f (β[ πͺ Y ] S) is-an-upper-bound-of β f s β£ s Ξ΅ S β) holds Ξ² i = ΞΌ (S [ i ] , β[ πͺ Y ] S) (β[ πͺ Y ]-upper S i) Ξ³ : (β±― (u , _) κ upper-bound β f s β£ s Ξ΅ S β , f (β[ πͺ Y ] S) β€[ πͺXβ ] u) holds Ξ³ (u , q) = prβ (p (β[ πͺ Y ] S) u) (β[ πͺ Y ]-least S (g u , Ξ΄)) where Ξ΄ : (g u is-a-ub-of S) holds Ξ΄ i = prβ (p (S [ i ]) u) (q i) \end{code} \begin{code} aft-backward : (π» : πͺYβ βmβ πͺXβ) β is-join-preserving (πͺ Y) (πͺ X) (π» .prβ) holds β has-right-adjoint π» aft-backward π»@(f , ΞΌf) Ο = β₯β₯-rec (has-right-adjoint-is-prop π») Ξ³ π· where open Joins (Ξ» x y β x β€[ poset-of (πͺ Y) ] y) open Joins (Ξ» x y β x β€[ poset-of (πͺ X) ] y) using () renaming (_is-an-upper-bound-of_ to _is-an-ub-of_) Ξ³ : Ξ£ β¬ κ Fam π₯ β¨ πͺ Y β© , is-basis-for (πͺ Y) β¬ β Ξ£ β κ πͺXβ βmβ πͺYβ , (π» β£ β) holds Ξ³ (β¬ , b) = (g , ΞΌβ²) , Ξ² where π¦ : β£ πͺXβ β£β β π₯ Μ π¦ y = Ξ£ i κ index β¬ , (f (β¬ [ i ]) β€[ πͺXβ ] y) holds g : β£ πͺXβ β£β β β£ πͺYβ β£β g y = β[ πͺ Y ] β β¬ [ i ] β£ (i , _) βΆ π¦ y β ΞΌβ² : is-monotonic πͺXβ πͺYβ g holds ΞΌβ² (yβ , yβ) p = β[ πͺ Y ]-least β β¬ [ i ] β£ (i , _) βΆ π¦ yβ β (g yβ , Ξ΅) where open PosetReasoning πͺXβ Ξ΅ : (g yβ is-an-upper-bound-of β β¬ [ i ] β£ (i , _) βΆ π¦ yβ β) holds Ξ΅ πΎ@(i , q) = β[ πͺ Y ]-upper β β¬ [ i ] β£ (i , _) βΆ π¦ yβ β (i , β ) where β : (f (β¬ [ i ]) β€[ πͺXβ ] yβ) holds β = f (β¬ [ i ]) β€β¨ q β© yβ β€β¨ p β© yβ β β = g , ΞΌβ² Ξ² : (π» β£ β) holds Ξ² U V = Ξ²β , Ξ²β where π₯ : Fam π₯ (index β¬) π₯ = prβ (b U) c : U οΌ β[ πͺ Y ] β β¬ [ i ] β£ i Ξ΅ π₯ β c = β[ πͺ Y ]-unique β β¬ [ i ] β£ i Ξ΅ π₯ β U (prβ (b U)) Ξ²β : (f U β€[ πͺXβ ] V β U β€[ πͺYβ ] g V) holds Ξ²β p = U οΌβ¨ c β©β β[ πͺ Y ] β β¬ [ i ] β£ i Ξ΅ π₯ β β€β¨ β β© g V β where open PosetReasoning πͺYβ open PosetReasoning πͺXβ using () renaming (_β to _β β; _β€β¨_β©_ to _β€β¨_β©β_) u = β[ πͺ Y ] β β¬ [ i ] β£ (i , _) βΆ π¦ V β ΞΆ : (u is-an-upper-bound-of β β¬ [ i ] β£ i Ξ΅ π₯ β) holds ΞΆ j = β[ πͺ Y ]-upper β β¬ [ i ] β£ (i , _) βΆ π¦ V β (π₯ [ j ] , Ξ·) where ΞΈ : ((β¬ [ π₯ [ j ] ]) β€[ πͺYβ ] U) holds ΞΈ = β¬ [ π₯ [ j ] ] β€β¨ β[ πͺ Y ]-upper _ j β© β[ πͺ Y ] β β¬ [ i ] β£ i Ξ΅ π₯ β οΌβ¨ c β»ΒΉ β©β U β Ξ· : (f (β¬ [ π₯ [ j ] ]) β€[ πͺXβ ] V) holds Ξ· = f (β¬ [ π₯ [ j ] ]) β€β¨ ΞΌf (β¬ [ π₯ [ j ] ] , U) ΞΈ β©β f U β€β¨ p β©β V β β β : ((β[ πͺ Y ] β β¬ [ i ] β£ i Ξ΅ π₯ β) β€[ poset-of (πͺ Y) ] g V) holds β = β[ πͺ Y ]-least β β¬ [ i ] β£ i Ξ΅ π₯ β (g V , β‘) where β‘ : (g V is-an-upper-bound-of β β¬ [ i ] β£ i Ξ΅ π₯ β) holds β‘ i = β¬ [ π₯ [ i ] ] β€β¨ π β© β[ πͺ Y ] β β¬ [ i ] β£ i Ξ΅ π₯ β β€β¨ π β© β[ πͺ Y ] β β¬ [ i ] β£ (i , _) βΆ π¦ V β οΌβ¨ refl β©β g V β where π = β[ πͺ Y ]-upper β β¬ [ i ] β£ i Ξ΅ π₯ β i π = β[ πͺ Y ]-least β β¬ [ i ] β£ i Ξ΅ π₯ β (u , ΞΆ) β : ((β[ πͺ X ] β f (β¬ [ i ]) β£ (i , _) βΆ π¦ V β) β€[ poset-of (πͺ X) ] V) holds β = β[ πͺ X ]-least β f (β¬ [ i ]) β£ (i , _) βΆ π¦ V β (V , prβ) Ξ²β : (U β€[ πͺYβ ] g V β f U β€[ πͺXβ ] V) holds Ξ²β p = f U β€β¨ ΞΌf (U , g V) p β© f (g V) οΌβ¨ refl β©β f (β[ πͺ Y ] β β¬ [ i ] β£ (i , _) βΆ π¦ V β) οΌβ¨ Ο β β¬ [ i ] β£ (i , _) βΆ π¦ V β β©β β[ πͺ X ] β f (β¬ [ i ]) β£ (i , _) βΆ π¦ V β β€β¨ β β© V β where open PosetReasoning πͺXβ \end{code} \begin{code} open ContinuousMaps open FrameHomomorphismProperties aft : (π» : πͺYβ βmβ πͺXβ) β has-right-adjoint π» β is-join-preserving (πͺ Y) (πͺ X) (π» .prβ) holds aft π» = aft-forward π» , aft-backward π» right-adjoint-of : (X βcβ Y) β πͺXβ βmβ πͺYβ right-adjoint-of π½@(h , Ο @(_ , _ , jp)) = prβ (aft-backward hβ Ξ³) where hβ : πͺYβ βmβ πͺXβ hβ = h , frame-morphisms-are-monotonic (πͺ Y) (πͺ X) h Ο Ξ³ : is-join-preserving (πͺ Y) (πͺ X) h holds Ξ³ S = β[ πͺ X ]-unique β h s β£ s Ξ΅ S β (h (β[ πͺ Y ] S)) (jp S) infixl 9 _βΒ·_ _βΒ·_ : (X βcβ Y) β β¨ πͺ X β© β β¨ πͺ Y β© _βΒ·_ f U = right-adjoint-of f .prβ U open ContinuousMapNotation X Y adjunction-inequality-forward : (π»@(f , _) : X βcβ Y) β (U : β¨ πͺ X β©) (V : β¨ πͺ Y β©) β ((π» ββ V) β€[ poset-of (πͺ X) ] U) holds β (V β€[ poset-of (πͺ Y) ] (π» βΒ· U)) holds adjunction-inequality-forward π»@(f , Ο@(_ , _ , p)) U V Ο = prβ (prβ (aft-backward π»β Ξ³) V U) Ο where π»β : poset-of (πͺ Y) βmβ poset-of (πͺ X) π»β = f , frame-morphisms-are-monotonic (πͺ Y) (πͺ X) f Ο Ξ³ : is-join-preserving (πͺ Y) (πͺ X) (π»β .prβ) holds Ξ³ S = β[ πͺ X ]-unique β f V β£ V Ξ΅ S β (f (β[ πͺ Y ] S)) (p S) adjunction-inequality-backward : (π»@(f , _) : X βcβ Y) β (U : β¨ πͺ X β©) (V : β¨ πͺ Y β©) β (V β€[ poset-of (πͺ Y) ] (π» βΒ· U)) holds β ((π» ββ V) β€[ poset-of (πͺ X) ] U) holds adjunction-inequality-backward π»@(f , Ο@(_ , _ , p)) U V Ο = prβ (prβ (aft-backward π»β Ξ³) V U) Ο where π»β : poset-of (πͺ Y) βmβ poset-of (πͺ X) π»β = f , frame-morphisms-are-monotonic (πͺ Y) (πͺ X) f Ο Ξ³ : is-join-preserving (πͺ Y) (πͺ X) (π»β .prβ) holds Ξ³ S = β[ πͺ X ]-unique β f V β£ V Ξ΅ S β (f (β[ πͺ Y ] S)) (p S) fβ-is-right-adjoint-of-fβΊ : (π»@(f , _) : X βcβ Y) β let π»β = monotone-map-of (πͺ Y) (πͺ X) π» in (π»β β£ right-adjoint-of π») holds fβ-is-right-adjoint-of-fβΊ π» V U = adjunction-inequality-forward π» U V , adjunction-inequality-backward π» U V fβΊfβ-is-deflationary : (π» : X βcβ Y) β let π»β = right-adjoint-of π» .prβ in (U : β¨ πͺ X β©) β (π» .prβ (π»β U) β€[ poset-of (πͺ X) ] U) holds fβΊfβ-is-deflationary π» = counit π»βΊβ π»ββ (fβ-is-right-adjoint-of-fβΊ π») where π»β = right-adjoint-of π» .prβ π»ββ = right-adjoint-of π» π»βΊβ = monotone-map-of (πͺ Y) (πͺ X) π» fβ-preserves-binary-meets : (π»@(f , _) : X βcβ Y) β (U V : β¨ πͺ X β©) β let π»β = right-adjoint-of π» .prβ in π»β (U β§[ πͺ X ] V) οΌ π»β U β§[ πͺ Y ] π»β V fβ-preserves-binary-meets π» U V = β§[ πͺ Y ]-unique β where open Meets (Ξ» U V β U β€[ poset-of (πͺ Y) ] V) π»β = right-adjoint-of π» .prβ β β : (π»β (U β§[ πͺ X ] V) is-a-lower-bound-of (π»β U , π»β V)) holds β β = Ξ²β , Ξ²β where open PosetReasoning (poset-of (πͺ X)) β = fβΊfβ-is-deflationary π» (U β§[ πͺ X ] V) Ξ²β : (π»β (U β§[ πͺ X ] V) β€[ poset-of (πͺ Y) ] (π»β U)) holds Ξ²β = adjunction-inequality-forward π» U (π»β (U β§[ πͺ X ] V)) β» where β» : (π» ββ π»β (U β§[ πͺ X ] V) β€[ poset-of (πͺ X) ] U) holds β» = π» ββ π»β (U β§[ πͺ X ] V) β€β¨ β β© U β§[ πͺ X ] V β€β¨ β ‘ β© U β where β ‘ = β§[ πͺ X ]-lowerβ U V Ξ²β : (π»β (U β§[ πͺ X ] V) β€[ poset-of (πͺ Y) ] (π»β V)) holds Ξ²β = adjunction-inequality-forward π» V (π»β (U β§[ πͺ X ] V)) β» where β» : (π» ββ π»β (U β§[ πͺ X ] V) β€[ poset-of (πͺ X) ] V) holds β» = π» ββ π»β (U β§[ πͺ X ] V) β€β¨ β β© U β§[ πͺ X ] V β€β¨ β ‘ β© V β where β ‘ = β§[ πͺ X ]-lowerβ U V β β : ((u , _) : lower-bound (π»β U , π»β V)) β (u β€[ poset-of (πͺ Y) ] π»β (U β§[ πͺ X ] V)) holds β β (u , p , q) = adjunction-inequality-forward π» (U β§[ πͺ X ] V) u β» where β£β : (π» ββ u β€[ poset-of (πͺ X) ] U) holds β£β = adjunction-inequality-backward π» U u p β£β : (π» ββ u β€[ poset-of (πͺ X) ] V) holds β£β = adjunction-inequality-backward π» V u q β» : (π» ββ u β€[ poset-of (πͺ X) ] (U β§[ πͺ X ] V)) holds β» = β§[ πͺ X ]-greatest U V (π» ββ u) β£β β£β β : (π»β (U β§[ πͺ X ] V) is-glb-of (π»β U , π»β V)) holds β = β β , β β \end{code} Added on 2024-05-06. Monotone equivalences are adjoints. \begin{code} monotone-equivalences-are-adjoints : (sβ@(s , _) : poset-of (πͺ X) βmβ poset-of (πͺ Y)) β (rβ@(r , _) : poset-of (πͺ Y) βmβ poset-of (πͺ X)) β s β r βΌ id β r β s βΌ id β (rβ β£ sβ) holds monotone-equivalences-are-adjoints (s , πβ) (r , πβ) Ο Ο U V = β , β‘ where open PosetReasoning πͺXβ β : (r U β€[ πͺXβ ] V β U β€[ πͺYβ ] s V) holds β p = sections-are-order-embeddings (poset-of (πͺ Y)) (poset-of (πͺ X)) r s πβ Ο β» where β» : (r U β€[ πͺXβ ] r (s V)) holds β» = r U β€β¨ p β© V οΌβ¨ Ο V β»ΒΉ β©β r (s V) β β‘ : (U β€[ πͺYβ ] s V β r U β€[ πͺXβ ] V) holds β‘ p = r U β€β¨ πβ (U , _) p β© r (s V) οΌβ¨ Ο V β©β V β \end{code}