Ayberk Tosun, 14 June 2023.
\begin{code}
{-# OPTIONS --safe --without-K #-}
open import MLTT.Spartan
open import UF.FunExt
open import UF.PropTrunc
module DomainTheory.Topology.ScottTopology
(pt : propositional-truncations-exist)
(fe : Fun-Ext)
(π₯ : Universe)
where
open PropositionalTruncation pt
open import Slice.Family
open import UF.ImageAndSurjection pt
open import UF.Logic
open import UF.Powerset-MultiUniverse
open import UF.SubtypeClassifier
open Universal fe
open Existential pt
open Implication fe
open Conjunction
open import DomainTheory.Basics.Dcpo pt fe π₯
underlying-orderβ : (π : DCPO {π€} {π£}) β β¨ π β© β β¨ π β© β Ξ© π£
underlying-orderβ π x y = (x ββ¨ π β© y) , prop-valuedness π x y
syntax underlying-orderβ π x y = x ββ¨ π β©β y
_βimageβ_ : {X : π€ Μ } {Y : π¦ Μ } β Y β (X β Y) β Ξ© (π€ β π¦)
y βimageβ f = y βimage f , β-is-prop
\end{code}
We define the notion of a Scott-open subset in the following module. The DCPO
`π` taken as an argument has a carrier set living in π€ and order living in π£.
The parameter `π¦` is for the universe of the subsets for which Scott-openness is
defined. In other words, we define what it means for a subset `P : β¨ π β© β Ξ© π¦`
to be Scott-open.
\begin{code}
module DefnOfScottTopology (π : DCPO {π€} {π£}) (π¦ : Universe) where
\end{code}
I find it convenient to define the type of directed families.
\begin{code}
Famβ : π€ β π₯ βΊ β π£ Μ
Famβ = Ξ£ S κ Fam π₯ β¨ π β© , is-Directed π (S [_])
β_ : Famβ β β¨ π β©
β (S , Ξ΄) =
the-sup (underlying-order π) (directed-completeness π (index S) (S [_]) Ξ΄ )
β-is-sup : (S : Famβ) β is-sup (underlying-order π) (β S) (S .prβ [_])
β-is-sup (S , Ξ΄) =
sup-property (underlying-order π) (directed-completeness π (index S) (S [_]) Ξ΄)
β-is-upperbound : (S : Famβ) β is-upperbound (underlying-order π) (β S) (S .prβ [_])
β-is-upperbound S = prβ (β-is-sup S)
is-upwards-closed : π {π¦} β¨ π β© β Ξ© (π€ β π£ β π¦)
is-upwards-closed P = β±― x κ β¨ π β© , β±― y κ β¨ π β© , P x β x ββ¨ π β©β y β P y
is-inaccessible-by-directed-joins : π {π¦} β¨ π β© β Ξ© (π₯ βΊ β π€ β π£ β π¦)
is-inaccessible-by-directed-joins P =
β±― (S , Ξ΄) κ Famβ , P (β (S , Ξ΄)) β (Ζ i κ index S , P (S [ i ]) holds)
is-scott-open : π {π¦} β¨ π β© β Ξ© (π₯ βΊ β π€ β π£ β π¦)
is-scott-open P = is-upwards-closed P β§ is-inaccessible-by-directed-joins P
πͺβ : π€ β π¦ βΊ β π₯ βΊ β π£ Μ
πͺβ = Ξ£ P κ (β¨ π β© β Ξ© π¦) , is-scott-open P holds
_ββ_ : β¨ π β© β πͺβ β Ξ© π¦
x ββ U = U .prβ x
\end{code}
\begin{code}
record πͺβα΄Ώ : π€ β π¦ βΊ β π₯ βΊ β π£ Μ where
field
pred : β¨ π β© β Ξ© π¦
pred-is-upwards-closed : is-upwards-closed pred holds
pred-is-inaccessible-by-dir-joins : is-inaccessible-by-directed-joins pred holds
to-πͺβα΄Ώ : πͺβ β πͺβα΄Ώ
to-πͺβα΄Ώ (P , Ο
, ΞΉ) = record
{ pred = P
; pred-is-upwards-closed = Ο
; pred-is-inaccessible-by-dir-joins = ΞΉ
}
from-πͺβα΄Ώ : πͺβα΄Ώ β πͺβ
from-πͺβα΄Ώ π =
π .pred , π .pred-is-upwards-closed , π .pred-is-inaccessible-by-dir-joins
where
open πͺβα΄Ώ
upward-closure : (π : πͺβ) β is-upwards-closed (Ξ» - β - ββ π) holds
upward-closure = πͺβα΄Ώ.pred-is-upwards-closed β to-πͺβα΄Ώ
scott-openness : (π : πͺβ) β is-scott-open (Ξ» - β - ββ π) holds
scott-openness π =
πͺβα΄Ώ.pred-is-upwards-closed πα΄Ώ , πͺβα΄Ώ.pred-is-inaccessible-by-dir-joins πα΄Ώ
where
πα΄Ώ : πͺβα΄Ώ
πα΄Ώ = to-πͺβα΄Ώ π
\end{code}