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