--------------------------------------------------------------------------------
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}