Ayberk Tosun
Started on 22 September 2023.
Proof of bijection completed on 29 September 2023.
This module contains the proof that points of a locale are in bijection with the
completely prime filters.
\begin{code}[hide]
{-# OPTIONS --safe --without-K --lossy-unification #-}
open import MLTT.Spartan
open import UF.PropTrunc
open import UF.FunExt
open import UF.Logic
open import UF.Subsingletons
open import UF.Retracts
module Locales.Point.Properties (pt : propositional-truncations-exist)
(fe : Fun-Ext)
(π€ : Universe)
(pe : propext π€)
where
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.Frame pt fe
open import Locales.InitialFrame pt fe
open import Locales.Point.Definition pt fe
open import Slice.Family
open import UF.Equiv
open import UF.Powerset-MultiUniverse
open import UF.Sets
open import UF.SubtypeClassifier
open AllCombinators pt fe
open ContinuousMaps
open DefnOfCPF
open FrameHomomorphismProperties
open FrameHomomorphisms
open Locale
open PropositionalTruncation pt
\end{code}
We denote by `πL` the terminal locale.
\begin{code}
πL : Locale (π€ βΊ) π€ π€
πL = πLoc pe
\end{code}
The map sending a CPF to a continuous map `π β X` is called `π―` (for "retract")
and its section is called `π°` (for "section"). We first define the underlying
functions of these and call them `π―β` and `π°β`. We then prove separately that
the results they give satisfy the desired conditions of being a continuous map
and being a completely prime filter (respectively).
\begin{code}
π―β : (X : Locale (π€ βΊ) π€ π€) β Point X β β¨ πͺ X β© β β¨ πͺ πL β©
π―β X (Ο , cpf) U = Ο U
π°β : (X : Locale (π€ βΊ) π€ π€) β (πL βcβ X) β π {π€} β¨ πͺ X β©
π°β X π» U = π» ββ U
where
open ContinuousMapNotation πL X using (_ββ_)
\end{code}
\begin{code}
π―β-gives-frame-homomorphism : (X : Locale (π€ βΊ) π€ π€) (x : Point X)
β is-a-frame-homomorphism (πͺ X) (πͺ πL) (π―β X x) holds
π―β-gives-frame-homomorphism X π@(Ο , cpf) = Ξ± , Ξ² , Ξ³
where
open Pointα΅£
open Joins (Ξ» U V β U β€[ poset-of (πͺ πL) ] V)
πβ² : Pointα΅£ X
πβ² = to-pointα΅£ X π
Ο : (π[ πͺ X ] ββ Ο) holds
Ο = point-contains-top πβ²
ΞΌ : closed-under-binary-meets X Ο holds
ΞΌ = point-is-closed-under-β§ πβ²
Ο
: is-monotonic (poset-of (πͺ X)) (poset-of (πͺ πL)) Ο holds
Ο
(U , V) = point-is-upwards-closed πβ² U V
Ξ± : Ο π[ πͺ X ] οΌ β€
Ξ± = only-π-is-above-π (πͺ πL) (Ο π[ πͺ X ]) (Ξ» _ β Ο)
Ξ² : (U V : β¨ πͺ X β©) β Ο (U β§[ πͺ X ] V) οΌ Ο U β§[ πͺ πL ] Ο V
Ξ² U V = β€-is-antisymmetric (poset-of (πͺ πL)) Ξ²β Ξ²β
where
Ξ²β : Ο (U β§[ πͺ X ] V) holds β (Ο U β§[ πͺ πL ] Ο V) holds
Ξ²β p = Ο
((U β§[ πͺ X ] V) , U) (β§[ πͺ X ]-lowerβ U V) p
, Ο
((U β§[ πͺ X ] V) , V) (β§[ πͺ X ]-lowerβ U V) p
Ξ²β : (Ο U β§[ πͺ πL ] Ο V) holds β Ο (U β§[ πͺ X ] V) holds
Ξ²β (p , q) = ΞΌ U V p q
Ξ³β : (S : Fam π€ β¨ πͺ X β©) β Ο (β[ πͺ X ] S) οΌ β[ πͺ πL ] β
Ο U β£ U Ξ΅ S β
Ξ³β S = β€-is-antisymmetric (poset-of (πͺ πL)) β β‘
where
open PosetNotation (poset-of (πͺ πL))
β : (Ο (β[ πͺ X ] S) β€ (β[ πͺ πL ] β
Ο U β£ U Ξ΅ S β)) holds
β = point-is-completely-prime πβ² S
β‘ : ((β[ πͺ πL ] β
Ο U β£ U Ξ΅ S β) β€ Ο (β[ πͺ X ] S)) holds
β‘ p = β₯β₯Ξ©-rec β» p
where
β» : (Ξ£ i κ index S , Ο (S [ i ]) holds) β Ο (β[ πͺ X ] S) holds
β» (i , q) = Ο
(S [ i ] , β[ πͺ X ] S) (β[ πͺ X ]-upper S i) q
Ξ³ : (S : Fam π€ β¨ πͺ X β©) β (Ο (β[ πͺ X ] S) is-lub-of β
Ο U β£ U Ξ΅ S β) holds
Ξ³ S = transport (Ξ» - β (- is-lub-of β
Ο U β£ U Ξ΅ S β) holds) (Ξ³β S β»ΒΉ) β»
where
β» : ((β[ πͺ πL ] β
Ο U β£ U Ξ΅ S β) is-lub-of β
Ο U β£ U Ξ΅ S β) holds
β» = β[ πͺ πL ]-upper β
Ο U β£ U Ξ΅ S β , β[ πͺ πL ]-least β
Ο U β£ U Ξ΅ S β
\end{code}
\begin{code}
open DefnOfCPF
π°β-gives-cpf : (X : Locale (π€ βΊ) π€ π€) (π» : πL βcβ X)
β is-cpf X (π°β X π») holds
π°β-gives-cpf X π» = Pointβ²α΅£.point-is-cpf π
where
open ContinuousMapNotation πL X using (_ββ_)
Ο
: is-upwards-closed X (π» ββ_) holds
Ο
U V p q =
frame-morphisms-are-monotonic (πͺ X) (πͺ πL) (π» ββ_) (π» .prβ) (U , V) p q
Ο : π[ πͺ X ] β (π» ββ_)
Ο = equal-β€-gives-holds
(π» ββ π[ πͺ X ])
(frame-homomorphisms-preserve-top (πͺ X) (πͺ πL) π»)
ΞΌ : closed-under-binary-meets X (π» ββ_) holds
ΞΌ U V p q = equal-β€-gives-holds (π» ββ (U β§[ πͺ X ] V)) β
where
β : π» ββ meet-of (πͺ X) U V οΌ β€
β = (π» ββ (U β§[ πͺ X ] V))
οΌβ¨ frame-homomorphisms-preserve-meets (πͺ X) (πͺ πL) π» U V β©
π» ββ U β§[ πͺ πL ] (π» ββ V)
οΌβ¨ ap (Ξ» - β - β§ (π» ββ V)) (holds-gives-equal-β€ pe fe (π» ββ U) p) β©
β€ β§[ πͺ πL ] (π» ββ V)
οΌβ¨ ap (Ξ» - β β€ β§ -) (holds-gives-equal-β€ pe fe (π» ββ V) q) β©
β€ β§[ πͺ πL ] β€ οΌβ¨ β§[ πͺ πL ]-is-idempotent β€ β»ΒΉ β©
β€ β
cp : is-completely-prime X (π» ββ_) holds
cp S p = equal-β€-gives-holds (β[ πͺ πL ] β
π» ββ U β£ U Ξ΅ S β) q
where
Ο : is-set β¨ πͺ πL β©
Ο = carrier-of-[ poset-of (πͺ πL) ]-is-set
β
= frame-homomorphisms-preserve-all-joinsβ² (πͺ X) (πͺ πL) π» S β»ΒΉ
β
‘ = holds-gives-equal-β€ pe fe (π» ββ (β[ πͺ X ] S)) p
pβ² : π» ββ (β[ πͺ X ] S) οΌ β€
pβ² = holds-gives-equal-β€ pe fe (π» ββ (β[ πͺ X ] S)) p
q : β[ πͺ πL ] β
π» ββ U β£ U Ξ΅ S β οΌ β€
q = β[ πͺ πL ] β
π» ββ U β£ U Ξ΅ S β οΌβ¨ β
β©
π» ββ (β[ πͺ X ] S) οΌβ¨ β
‘ β©
β€ β
π : Pointβ²α΅£ X
π = record
{ point = π» ββ_
; point-is-upwards-closed = Ο
; point-contains-top = Ο
; point-is-closed-under-β§ = ΞΌ
; point-is-completely-prime = cp
}
\end{code}
\begin{code}
π― : (X : Locale (π€ βΊ) π€ π€) β Point X β πL βcβ X
π― X π = π―β X π , π―β-gives-frame-homomorphism X π
π° : (X : Locale (π€ βΊ) π€ π€) β πL βcβ X β Point X
π° X π» = π°β X π» , π°β-gives-cpf X π»
cpf-equiv-continuous-map-into-Ξ© : (X : Locale (π€ βΊ) π€ π€) β Point X β πL βcβ X
cpf-equiv-continuous-map-into-Ξ© X = π― X , β , β‘
where
sec : (π― X β π° X) βΌ id
sec π» = to-frame-homomorphism-οΌ (πͺ X) (πͺ πL) (π― X (π° X π»)) π» Ξ» _ β refl
ret : (π° X β π― X) βΌ id
ret π = to-subtype-οΌ (holds-is-prop β is-cpf X) (dfunext fe Ξ» _ β refl)
β : has-section (π― X)
β = π° X , sec
β‘ : is-section (π― X)
β‘ = π° X , ret
\end{code}