\begin{code} {-# 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.Subsingletons-FunExt open import UF.EquivalenceExamples open import UF.Base module Locales.ClassificationOfScottOpens (π€ : Universe) (pt : propositional-truncations-exist) (pe : propext π€) (fe : Fun-Ext) where open Universal fe open Implication fe open Existential pt open Conjunction open import DomainTheory.Basics.Dcpo pt fe π€ renaming (β¨_β© to β¨_β©β) open import DomainTheory.Topology.ScottTopology pt fe π€ open import DomainTheory.Basics.Pointed pt fe π€ open import DomainTheory.Lifting.LiftingSet pt fe open import DomainTheory.Basics.Miscelanea pt fe π€ open import Lifting.Construction π€ open import UF.SubtypeClassifier open import UF.Subsingletons-Properties open import Slice.Family open import UF.Equiv open PropositionalTruncation pt \end{code} We first define the Sierpinski domain. \begin{code} π : DCPOβ₯ π = π-DCPOβ₯ π€ pe (props-are-sets {X = π {π€ βΊ}} π-is-prop) \end{code} \begin{code} module _ {π : DCPOβ₯ {π€ βΊ} {π€}} where to-predicateβ : DCPOβ₯[ π , π ] β (βͺ π β« β Ξ© π€) to-predicateβ (f , p) x = is-defined (f x) , being-defined-is-prop (f x) open DefnOfScottTopology (π β») π€ predicate-is-upwards-closed : (π» : DCPOβ₯[ π , π ]) β is-upwards-closed (to-predicateβ π») holds predicate-is-upwards-closed π»@(f , Ο ) x y p q = transport is-defined (ΞΌ x y q p) p where ΞΌ : is-monotone (π β») (π β») f ΞΌ = monotone-if-continuous (π β») (π β») π» ββ_ : (Ξ£ S κ Fam π€ βͺ π β« , is-Directed (π β») (S .prβ)) β βͺ π β« ββ (S , Ξ΄) = the-sup (underlying-order (π β»)) (directed-completeness (π β») (index S) (S [_]) Ξ΄) image-on-directed-set-is-directed : {I : π€ Μ}(π» : DCPOβ₯[ π , π ]) β (Ξ± : I β βͺ π β«) β is-Directed (π β») Ξ± β is-Directed (π β») (π» .prβ β Ξ±) image-on-directed-set-is-directed {I = I} π»@(f , _) Ξ± (β£iβ£ , Ο ) = β£iβ£ , β where ΞΌ : is-monotone (π β») (π β») f ΞΌ = monotone-if-continuous (π β») (π β») π» β : is-semidirected (underlying-order (π β»)) (π» .prβ β Ξ±) β i j = β₯β₯-rec β-is-prop Ξ³ (Ο i j) where Ξ³ : Ξ£ k κ I , Ξ± i ββ¨ π β» β© Ξ± k Γ Ξ± j ββ¨ π β» β© Ξ± k β β k κ I , f (Ξ± i) ββ¨ π β» β© f (Ξ± k) Γ f (Ξ± j) ββ¨ π β» β© f (Ξ± k) Ξ³ (k , pβ , pβ) = β£ k , ΞΌ (Ξ± i) (Ξ± k) pβ , ΞΌ (Ξ± j) (Ξ± k) pβ β£ predicate-is-ibdj : (π» : DCPOβ₯[ π , π ]) β is-inaccessible-by-directed-joins (to-predicateβ π») holds predicate-is-ibdj π»@(f , ΞΆ) (S , (Ξ΄β , Ξ΄β)) p = β₯β₯-rec β-is-prop β‘ β where ΞΌ : is-monotone (π β») (π β») f ΞΌ = monotone-if-continuous (π β») (π β») π» Ξ΄β² : is-Directed (π β») (β f x β£ x Ξ΅ S β [_]) Ξ΄β² = image-on-directed-set-is-directed π» (S .prβ) (Ξ΄β , Ξ΄β) d : has-sup (underlying-order (π β»)) (β f x β£ x Ξ΅ S β [_]) d = directed-completeness (π β») (index S) (β f x β£ x Ξ΅ S β [_]) Ξ΄β² β£ : f (β (π β») (Ξ΄β , Ξ΄β)) οΌ the-sup (underlying-order (π β»)) d β£ = sups-are-unique (underlying-order (π β»)) (prβ (axioms-of-dcpo (π β»))) (β f x β£ x Ξ΅ S β [_]) (ΞΆ (index S) (S [_]) (Ξ΄β , Ξ΄β)) (sup-property (underlying-order (π β»)) (directed-completeness (π β») (index S) (β f x β£ x Ξ΅ S β .prβ) Ξ΄β²)) β : is-defined (ββ (β f x β£ x Ξ΅ S β , Ξ΄β²)) β = transport is-defined β£ p β‘ : Ξ£ i κ index S , is-defined (f (S [ i ])) β β i κ index S , to-predicateβ π» (S [ i ]) holds β‘ (i , p) = β£ i , p β£ to-predicate : DCPOβ₯[ π , π ] β πͺβ to-predicate π»@(f , _) = to-predicateβ π» , predicate-is-upwards-closed π» , predicate-is-ibdj π» to-π-mapβ : (βͺ π β« β Ξ© π€) β (βͺ π β« β βͺ π β«) to-π-mapβ P x = P x holds , (Ξ» _ β β) , holds-is-prop (P x) to-π-map : πͺβ β DCPOβ₯[ π , π ] to-π-map (P , Ο , ΞΉ) = to-π-mapβ P , c where c : is-continuous (π β») (π β») (to-π-mapβ P) c I Ξ± Ξ΄ = β where u = sup-property (underlying-order (π β»)) (directed-completeness (π β») (index (I , Ξ±)) Ξ± Ξ΄) β : is-sup (underlying-order (π β»)) (to-π-mapβ P (β ((I , Ξ±) , Ξ΄))) (to-π-mapβ P β Ξ±) β = β β , β β where β β : (i : I) β to-π-mapβ P (Ξ± i) ββ¨ π β» β© to-π-mapβ P (β ((I , Ξ±) , Ξ΄)) β β i p = to-subtype-οΌ β β£ where q : (Ξ± i ββ¨ π β» β©β (β ((I , Ξ±) , Ξ΄))) holds q = sup-is-upperbound (underlying-order (π β»)) u i β : P (Ξ± i) holds οΌ π β = prβ (prβ (prβ (π-οΌ-β (P (Ξ± i) holds) fe pe (holds-is-prop (P (Ξ± i)))))) p β»ΒΉ β ‘ : π οΌ P (β ((I , Ξ±) , Ξ΄)) holds β ‘ = prβ (prβ (prβ (π-οΌ-β (P (β ((I , Ξ±) , Ξ΄)) holds) fe pe (holds-is-prop _)))) (Ο (Ξ± i) (β ((I , Ξ±) , Ξ΄)) p q) β : (P : π€ Μ) β is-prop ((P β π) Γ is-prop P) β _ = Γ-is-prop (Ξ -is-prop fe (Ξ» _ β π-is-prop)) (being-prop-is-prop fe) β£ : P (Ξ± i) holds οΌ P (β ((I , Ξ±) , Ξ΄)) holds β£ = P (Ξ± i) holds οΌβ¨ β β© π οΌβ¨ β ‘ β© P (β ((I , Ξ±) , Ξ΄)) holds β β β : is-lowerbound-of-upperbounds (underlying-order (π β»)) (to-π-mapβ P (β ((I , Ξ±) , Ξ΄))) (to-π-mapβ P β Ξ±) β β π¬@(Q , (h , p)) Ο q = β₯β₯-rec (sethood (π β»)) β β (ΞΉ ((I , Ξ±) , Ξ΄) q) where β β : Ξ£ i κ I , P (Ξ± i) holds β to-π-mapβ P (β ((I , Ξ±) , Ξ΄)) οΌ π¬ β β (i , r) = to-subtype-οΌ β β£ where β : (Q : π€ Μ) (x y : Ξ (Ξ» _ β π) Γ is-prop Q) β x οΌ y β _ = Γ-is-prop (Ξ -is-prop fe (Ξ» _ β π-is-prop)) (being-prop-is-prop fe) eq : P (Ξ± i) holds οΌ Q eq = prβ (from-Ξ£-οΌ (Ο i r)) upper : (Ξ± i ββ¨ π β» β©β (β ((I , Ξ±) , Ξ΄))) holds upper = sup-is-upperbound (underlying-order (π β»)) u i pβ : P (β ((I , Ξ±) , Ξ΄)) holds pβ = Ο (Ξ± i) (β ((I , Ξ±) , Ξ΄)) r upper Q-holds : Q Q-holds = transport id eq r β£ : P (β ((I , Ξ±) , Ξ΄)) holds οΌ Q β£ = pe (holds-is-prop _) p (Ξ» _ β Q-holds) (Ξ» _ β pβ) section : (U : πͺβ) β to-predicate (to-π-map U) οΌ U section U = to-subtype-οΌ (holds-is-prop β is-scott-open) (dfunext fe Ξ» _ β refl) retract : (f : DCPOβ₯[ π , π ]) β to-π-map (to-predicate f) οΌ f retract f = to-subtype-οΌ (being-continuous-is-prop (π β») (π β»)) (dfunext fe β ) where β : (x : βͺ π β«) β to-π-mapβ (to-predicate f .prβ) x οΌ f .prβ x β x = refl {x = f .prβ x} bijection : πͺβ β DCPOβ₯[ π , π ] bijection = to-π-map , ((to-predicate , retract) , to-predicate , section) \end{code}