--------------------------------------------------------------------------------
title: Lattice homomorphism given by a spectral map
author: Ayberk Tosun
date-started: 2024-03-03
date-completed: 2024-03-04
--------------------------------------------------------------------------------
Any spectral map `f : X β Y` of spectral locales gives a lattice homomorphism
`π¦(Y) β π¦(X)`. We prove this fact in this module.
\begin{code}
{-# OPTIONS --safe --without-K --lossy-unification #-}
open import MLTT.Spartan
open import UF.FunExt
open import UF.Logic
open import UF.PropTrunc
open import UF.Size
open import UF.SubtypeClassifier
open import UF.UA-FunExt
open import UF.Univalence
module Locales.Spectrality.SpectralMapToLatticeHomomorphism
(ua : Univalence)
(pt : propositional-truncations-exist)
(sr : Set-Replacement pt)
where
fe : Fun-Ext
fe {π€} {π₯} = univalence-gives-funext' π€ π₯ (ua π€) (ua (π€ β π₯))
open import Locales.Compactness.Definition pt fe
open import Locales.ContinuousMap.Definition pt fe
open import Locales.ContinuousMap.FrameHomomorphism-Definition pt fe
open import Locales.ContinuousMap.FrameHomomorphism-Properties pt fe
open import Locales.DistributiveLattice.Homomorphism fe pt
open import Locales.Frame pt fe
open import Locales.SmallBasis pt fe sr
open import Locales.Spectrality.LatticeOfCompactOpens ua pt sr
open import Locales.Spectrality.SpectralLocale pt fe
open import Locales.Spectrality.SpectralMap pt fe
open AllCombinators pt fe
open ContinuousMaps
open FrameHomomorphismProperties
open FrameHomomorphisms
open Locale
open PropositionalTruncation pt
\end{code}
We fix large and locally small locales `X` and `Y` which we assume to be
spectral. We also fix a spectral map `f : X β Y`.
\begin{code}
module FunctorialAction
(X : Locale (π€ βΊ) π€ π€)
(Y : Locale (π€ βΊ) π€ π€)
(Οβ : is-spectral-with-small-basis ua X holds)
(Οβ : is-spectral-with-small-basis ua Y holds)
(f : X βcβ Y)
(π€ : is-spectral-map Y X f holds)
where
\end{code}
We denote by `π¦β¦
Xβ¦` and `π¦β¦
Yβ¦` the distributive lattices of compact opens of
locales `X` and `Y` respectively.
\begin{code}
open ContinuousMapNotation X Y
open π¦-Lattice X Οβ renaming (πβ to πβ-X;
π-is-compact to π-X-is-compact)
open π¦-Lattice Y Οβ renaming (πβ to πβ-Y;
π¦β¦
Xβ¦ to π¦β¦
Yβ¦;
π-is-compact to π-Y-is-compact)
open OperationsOnCompactOpens X (prβ Οβ) renaming (_β¨β_ to _β¨β_; _β§β_ to _β§β_)
open OperationsOnCompactOpens Y (prβ Οβ) renaming (_β¨β_ to _β¨β_; _β§β_ to _β§β_)
\end{code}
We denote by `π¦-mapβ` the underlying function of the lattice homomorphism
between the lattices of compact opens.
\begin{code}
π¦-mapβ : π¦ Y β π¦ X
π¦-mapβ (K , ΞΊ) = f ββ K , π€ K ΞΊ
\end{code}
The proof that this is a lattice homomorphism is easy.
\begin{code}
π¦-mapβ-preserves-π : π¦-mapβ πβ[ Y ] οΌ πβ[ X ]
π¦-mapβ-preserves-π =
to-π¦-οΌ
X
(π€ π[ πͺ Y ] (π-is-compact Y))
(π-is-compact X)
(frame-homomorphisms-preserve-bottom (πͺ Y) (πͺ X) f)
π¦-mapβ-preserves-π : π¦-mapβ πβ-Y οΌ πβ-X
π¦-mapβ-preserves-π =
to-π¦-οΌ
X
(π€ π[ πͺ Y ] π-Y-is-compact)
π-X-is-compact
(frame-homomorphisms-preserve-top (πͺ Y) (πͺ X) f)
π¦-mapβ-preserves-β¨ : (Kβ Kβ : π¦ Y) β π¦-mapβ (Kβ β¨β Kβ) οΌ π¦-mapβ Kβ β¨β π¦-mapβ Kβ
π¦-mapβ-preserves-β¨ πβ@(Kβ , ΞΊβ) πβ@(Kβ , ΞΊβ) =
to-π¦-οΌ X (π€ (Kβ β¨[ πͺ Y ] Kβ) ΞΊ) ΞΊβ² β
where
ΞΊ : is-compact-open Y (Kβ β¨[ πͺ Y ] Kβ) holds
ΞΊ = compact-opens-are-closed-under-β¨ Y Kβ Kβ ΞΊβ ΞΊβ
ΞΊβ² : is-compact-open X (f ββ Kβ β¨[ πͺ X ] f ββ Kβ) holds
ΞΊβ² = compact-opens-are-closed-under-β¨ X (f ββ Kβ) (f ββ Kβ) (π€ Kβ ΞΊβ) (π€ Kβ ΞΊβ)
β : f ββ (Kβ β¨[ πͺ Y ] Kβ) οΌ f ββ Kβ β¨[ πͺ X ] f ββ Kβ
β = frame-homomorphisms-preserve-binary-joins (πͺ Y) (πͺ X) f Kβ Kβ
π¦-mapβ-preserves-β§ : (Kβ Kβ : π¦ Y) β π¦-mapβ (Kβ β§β Kβ) οΌ π¦-mapβ Kβ β§β π¦-mapβ Kβ
π¦-mapβ-preserves-β§ (Kβ , ΞΊβ) (Kβ , ΞΊβ) =
to-π¦-οΌ X (π€ (Kβ β§[ πͺ Y ] Kβ) ΞΊ) ΞΊβ² β
where
ΞΊ : is-compact-open Y (Kβ β§[ πͺ Y ] Kβ) holds
ΞΊ = binary-coherence Y (ssb-implies-spectral ua Y Οβ) Kβ Kβ ΞΊβ ΞΊβ
ΞΊβ² : is-compact-open X (f ββ Kβ β§[ πͺ X ] f ββ Kβ) holds
ΞΊβ² = binary-coherence
X
(ssb-implies-spectral ua X Οβ)
(f ββ Kβ)
(f ββ Kβ)
(π€ Kβ ΞΊβ)
(π€ Kβ ΞΊβ)
β : f ββ (Kβ β§[ πͺ Y ] Kβ) οΌ f ββ Kβ β§[ πͺ X ] f ββ Kβ
β = frame-homomorphisms-preserve-meets (πͺ Y) (πͺ X) f Kβ Kβ
π¦-mapβ-is-lattice-homomorphism : is-homomorphismα΅ π¦β¦
Yβ¦ π¦β¦
Xβ¦ π¦-mapβ holds
π¦-mapβ-is-lattice-homomorphism = π¦-mapβ-preserves-π
, π¦-mapβ-preserves-β§
, π¦-mapβ-preserves-π
, π¦-mapβ-preserves-β¨
\end{code}
We package `π¦-mapβ` together with the proof that it is a lattice homomorphism
and call this `π¦-map`.
\begin{code}
π¦-map : Homomorphismα΅α΅£ π¦β¦
Yβ¦ π¦β¦
Xβ¦
π¦-map = record
{ h = π¦-mapβ
; h-is-homomorphism = π¦-mapβ-is-lattice-homomorphism
}
\end{code}
Finally, we put everything together to define a function `to-π¦-map` that maps a
spectral map `f : X β Y` of spectral locales to a homomorphism `π¦ Y β π¦ X` of
distributive lattices.
\begin{code}
module _ (X : Locale (π€ βΊ) π€ π€)
(Y : Locale (π€ βΊ) π€ π€)
(Οβ : is-spectral-with-small-basis ua X holds)
(Οβ : is-spectral-with-small-basis ua Y holds) where
open FunctorialAction X Y Οβ Οβ
open π¦-Lattice X Οβ renaming (πβ to πβ-X;
π-is-compact to π-X-is-compact)
open π¦-Lattice Y Οβ renaming (πβ to πβ-Y; π¦β¦
Xβ¦ to π¦β¦
Yβ¦;
π-is-compact to π-Y-is-compact)
to-π¦-map : (X βsβ Y) β π¦β¦
Yβ¦ βdβ π¦β¦
Xβ¦
to-π¦-map (f , π€) = π¦-map f π€
\end{code}