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