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}