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}