Ayberk Tosun, 11 September 2023
\begin{code}[hide]
{-# OPTIONS --safe --without-K --lossy-unification #-}
open import UF.FunExt
open import UF.PropTrunc
module Locales.PerfectMaps (pt : propositional-truncations-exist)
(fe : Fun-Ext) where
open import Locales.AdjointFunctorTheoremForFrames
open import Locales.Compactness.Definition pt fe
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 Locales.Spectrality.Properties pt fe
open import Locales.Spectrality.SpectralLocale pt fe
open import Locales.WayBelowRelation.Definition pt fe
open import MLTT.Spartan hiding (π)
open import Slice.Family
open import UF.Logic
open import UF.SubtypeClassifier
open AllCombinators pt fe
open ContinuousMaps
open FrameHomomorphismProperties
open Locale
open PropositionalTruncation pt
\end{code}
\begin{code}
module SpectralMaps (X : Locale π€' π₯ π₯) (Y : Locale π€ π₯ π₯) where
is-spectral-map : (X βcβ Y) β Ξ© (π€ β π€' β π₯ βΊ)
is-spectral-map (f , _) =
β±― U κ β¨ πͺ Y β© , is-compact-open Y U β is-compact-open X (f U)
module PerfectMaps (X : Locale π€ π₯ π₯) (Y : Locale π€' π₯ π₯)
(π· : has-basis (πͺ Y) holds) where
open AdjointFunctorTheorem pt fe X Y π·
open ContinuousMapNotation X Y
\end{code}
A continuous map `f : X β Y` is called *perfect* if its right adjoint is
Scott-continuous.
\begin{code}
is-perfect-map : (X βcβ Y) β Ξ© (π€ β π€' β π₯ βΊ)
is-perfect-map f = is-scott-continuous (πͺ X) (πͺ Y) (prβ (right-adjoint-of f))
\end{code}
\begin{code}
\end{code}
Perfect maps preserve the way below relation.
\begin{code}
perfect-preserves-way-below : (π» : X βcβ Y)
β is-perfect-map π» holds
β (U V : β¨ πͺ Y β©)
β (U βͺ[ πͺ Y ] V) holds
β (π» ββ U βͺ[ πͺ X ] π» ββ V) holds
perfect-preserves-way-below f Ο U V Ο S Ξ΄ p = Ξ³
where
open GaloisConnectionBetween (poset-of (πͺ Y)) (poset-of (πͺ X))
open PosetReasoning (poset-of (πͺ Y))
T : Fam π₯ β¨ πͺ Y β©
T = β
f βΒ· V β£ V Ξ΅ S β
ΞΆβ : (V β€[ poset-of (πͺ Y) ] (f βΒ· (β[ πͺ X ] S))) holds
ΞΆβ = adjunction-inequality-forward f (join-of (πͺ X) S) V p
ΞΆβ : (V β€[ poset-of (πͺ Y) ] (β[ πͺ Y ] β
f βΒ· V β£ V Ξ΅ S β)) holds
ΞΆβ = V β€β¨ ΞΆβ β©
f βΒ· (β[ πͺ X ] S) οΌβ¨ β β©β
β[ πͺ Y ] β
f βΒ· V β£ V Ξ΅ S β β
where
β = scott-continuous-join-eq (πͺ X) (πͺ Y) (f βΒ·_) Ο S Ξ΄
T-is-directed : is-directed (πͺ Y) T holds
T-is-directed =
monotone-image-on-directed-family-is-directed (πͺ X) (πͺ Y) S Ξ΄ (f βΒ·_) ΞΌ
where
ΞΌ : is-monotonic (poset-of (πͺ X)) (poset-of (πͺ Y)) (f βΒ·_) holds
ΞΌ = prβ (right-adjoint-of f)
Ξ³ : (Ζ k κ index S , ((f ββ U) β€[ poset-of (πͺ X) ] (S [ k ])) holds) holds
Ξ³ = β₯β₯-rec β-is-prop Ο΅ (Ο T T-is-directed ΞΆβ)
where
Ο΅ : _
Ο΅ (k , q) = β£ k , β β£
where
β : ((f ββ U) β€[ poset-of (πͺ X) ] (S [ k ])) holds
β = adjunction-inequality-backward f (S [ k ]) U q
\end{code}
\begin{code}
compact-codomain-of-perfect-map-implies-compact-domain : (π» : X βcβ Y)
β is-perfect-map π» holds
β is-compact Y holds
β is-compact X holds
compact-codomain-of-perfect-map-implies-compact-domain π»@(f , Ο , _) p ΞΊ = Ξ³
where
Ξ² : (f π[ πͺ Y ] βͺ[ πͺ X ] f π[ πͺ Y ]) holds
Ξ² = perfect-preserves-way-below π» p π[ πͺ Y ] π[ πͺ Y ] ΞΊ
Ξ³ : (π[ πͺ X ] βͺ[ πͺ X ] π[ πͺ X ]) holds
Ξ³ = transport (Ξ» - β (- βͺ[ πͺ X ] -) holds) Ο Ξ²
\end{code}
\begin{code}
open SpectralMaps X Y
perfect-maps-are-spectral : (f : X βcβ Y)
β (is-perfect-map f β is-spectral-map f) holds
perfect-maps-are-spectral π»@(f , _) Ο U ΞΊ =
perfect-preserves-way-below π» Ο U U ΞΊ
\end{code}
\begin{code}
open Joins (Ξ» x y β x β€[ poset-of (πͺ Y) ] y)
scott-continuous-join-eqβ» : (h : β¨ πͺ X β© β β¨ πͺ Y β©)
β ((S : Fam π₯ β¨ πͺ X β©)
β is-directed (πͺ X) S holds
β h (β[ πͺ X ] S) οΌ β[ πͺ Y ] β
h V β£ V Ξ΅ S β)
β is-scott-continuous (πͺ X) (πͺ Y) h holds
scott-continuous-join-eqβ» h Ο S Ξ΄ =
transport
(Ξ» - β (- is-lub-of β
h V β£ V Ξ΅ S β) holds)
(Ο S Ξ΄ β»ΒΉ)
(β[ πͺ Y ]-upper β
h V β£ V Ξ΅ S β , β[ πͺ Y ]-least β
h V β£ V Ξ΅ S β)
open GaloisConnectionBetween (poset-of (πͺ Y)) (poset-of (πͺ X))
spectral-maps-are-perfect : is-spectral Y holds
β (f : X βcβ Y)
β (is-spectral-map f β is-perfect-map f) holds
spectral-maps-are-perfect π€ f Ο S Ξ΄ = scott-continuous-join-eqβ» fβ β S Ξ΄
where
open PosetNotation (poset-of (πͺ X))
open PosetNotation (poset-of (πͺ Y)) renaming (_β€_ to _β€y_)
infix -2 _β€β_
_β€β_ = _β€y_
fββ : poset-of (πͺ X) βmβ poset-of (πͺ Y)
fββ = right-adjoint-of f
fβΊ : β¨ πͺ Y β© β β¨ πͺ X β©
fβΊ = f ββ_
fβΊβ : poset-of (πͺ Y) βmβ poset-of (πͺ X)
fβΊβ = fβΊ , frame-morphisms-are-monotonic (πͺ Y) (πͺ X) fβΊ (prβ f)
fβ : β¨ πͺ X β© β β¨ πͺ Y β©
fβ = f βΒ·_
π : (fβΊβ β£ fββ) holds
π = fβ-is-right-adjoint-of-fβΊ f
β : (S : Fam π₯ β¨ πͺ X β©)
β is-directed (πͺ X) S holds
β f βΒ· (β[ πͺ X ] S) οΌ β[ πͺ Y ] β
f βΒ· V β£ V Ξ΅ S β
β S Ξ΄ = β€-is-antisymmetric (poset-of (πͺ Y)) β β β β
where
open PosetReasoning (poset-of (πͺ X))
open PosetReasoning (poset-of (πͺ Y)) using ()
renaming (_β€β¨_β©_ to _β€β¨_β©β_;
_β to _πππ)
Ο : ((f βΒ· (β[ πͺ X ] S)) β€β[ Y ] (β[ πͺ Y ] β
f βΒ· V β£ V Ξ΅ S β)) holds
Ο (K , ΞΊ) p = β₯β₯Ξ©-rec β» (ΞΊβ² S Ξ΄ q)
where
ΞΊβ² : is-compact-open X (fβΊ K) holds
ΞΊβ² = Ο K ΞΊ
q : (fβΊ K β€ (β[ πͺ X ] S)) holds
q = adjunction-inequality-backward f (β[ πͺ X ] S) K p
β» : Ξ£ k κ index S , (fβΊ K β€ S [ k ]) holds
β (K β€β β[ πͺ Y ] β
f βΒ· V β£ V Ξ΅ S β) holds
β» (k , p) =
K β€β¨ β
β©β
f βΒ· (S [ k ]) β€β¨ β
‘ β©β
β[ πͺ Y ] β
f βΒ· V β£ V Ξ΅ S β πππ
where
β
= adjunction-inequality-forward f (S [ k ]) K p
β
‘ = β[ πͺ Y ]-upper β
f βΒ· V β£ V Ξ΅ S β k
β β : (f βΒ· (β[ πͺ X ] S) β€β β[ πͺ Y ] β
f βΒ· V β£ V Ξ΅ S β) holds
β β =
spectral-yoneda Y π€ (f βΒ· (β[ πͺ X ] S)) (β[ πͺ Y ] β
f βΒ· V β£ V Ξ΅ S β) Ο
β‘β : (f ββ (β[ πͺ Y ] β
f βΒ· V β£ V Ξ΅ S β) β€ (β[ πͺ X ] S)) holds
β‘β =
f ββ (β[ πͺ Y ] β
f βΒ· V β£ V Ξ΅ S β) οΌβ¨ β
β©β
β[ πͺ X ] β
f ββ (f βΒ· V) β£ V Ξ΅ S β β€β¨ β
‘ β©
β[ πͺ X ] β
V β£ V Ξ΅ S β β
where
β» : cofinal-in (πͺ X) β
f ββ (f βΒ· V) β£ V Ξ΅ S β S holds
β» i = β£ i , counit fβΊβ fββ π (S [ i ]) β£
β
= continuity-of X Y f β
f βΒ· V β£ V Ξ΅ S β
β
‘ = cofinal-implies-join-covered
(πͺ X)
β
f ββ (f βΒ· V) β£ V Ξ΅ S β
S
β»
β β : (β[ πͺ Y ] β
f βΒ· V β£ V Ξ΅ S β β€β f βΒ· (β[ πͺ X ] S)) holds
β β = adjunction-inequality-forward
f
(β[ πͺ X ] S)
(β[ πͺ Y ] β
f βΒ· V β£ V Ξ΅ S β)
β‘β
\end{code}