Tom de Jong, January 2020. December 2021: Added material on semidirected and subsingleton suprema. June 2022: Refactored and moved some material around to/from other files. A collection of various useful definitions and facts on directed complete posets and Scott continuous maps between them. Table of contents * Lemmas for establishing Scott continuity of maps between dcpos. * Continuity of basic functions (constant functions, identity, composition). * Definitions of isomorphisms of dcpos, continuous retracts and embedding-projection pairs. * Defining local smallness for dcpos and showing it is preserved by continuous retracts. * Lemmas involving (joins of) cofinal directed families. * Reindexing directed families. * Suprema of ฯ-chains (added 23 June 2024). * Subdcpo induced by a subset/property (added 18th Feb 2024 by Martin Escardo). \begin{code} {-# OPTIONS --safe --without-K #-} open import MLTT.Spartan open import UF.FunExt open import UF.PropTrunc module DomainTheory.Basics.Miscelanea (pt : propositional-truncations-exist) (fe : Fun-Ext) (๐ฅ : Universe) where private fe' : FunExt fe' _ _ = fe open PropositionalTruncation pt open import UF.Equiv open import UF.EquivalenceExamples open import UF.Size hiding (is-small ; is-locally-small) open import UF.Subsingletons open import UF.Subsingletons-FunExt open import UF.UniverseEmbedding open import DomainTheory.Basics.Dcpo pt fe ๐ฅ \end{code} Some preliminary basic lemmas. \begin{code} โ-is-monotone : (๐ : DCPO {๐ค} {๐ฃ}) {I : ๐ฅ ฬ } {ฮฑ ฮฒ : I โ โจ ๐ โฉ} (ฮด : is-Directed ๐ ฮฑ) (ฮต : is-Directed ๐ ฮฒ) โ ((i : I) โ ฮฑ i โโจ ๐ โฉ ฮฒ i) โ โ ๐ ฮด โโจ ๐ โฉ โ ๐ ฮต โ-is-monotone ๐ {I} {ฮฑ} {ฮฒ} ฮด ฮต l = โ-is-lowerbound-of-upperbounds ๐ ฮด (โ ๐ ฮต) ฮณ where ฮณ : (i : I) โ ฮฑ i โโจ ๐ โฉ โ ๐ ฮต ฮณ i = ฮฑ i โโจ ๐ โฉ[ l i ] ฮฒ i โโจ ๐ โฉ[ โ-is-upperbound ๐ ฮต i ] โ ๐ ฮต โโจ ๐ โฉ โ-independent-of-directedness-witness : (๐ : DCPO {๐ค} {๐ฃ}) {I : ๐ฅ ฬ } {ฮฑ : I โ โจ ๐ โฉ} (ฮด ฮต : is-Directed ๐ ฮฑ) โ โ ๐ ฮด ๏ผ โ ๐ ฮต โ-independent-of-directedness-witness ๐ {I} {ฮฑ} ฮด ฮต = ap (โ ๐) p where p : ฮด ๏ผ ฮต p = being-directed-is-prop (underlying-order ๐) ฮฑ ฮด ฮต โ-family-๏ผ : (๐ : DCPO {๐ค} {๐ฃ}) {I : ๐ฅ ฬ } {ฮฑ ฮฒ : I โ โจ ๐ โฉ} (p : ฮฑ ๏ผ ฮฒ) (ฮด : is-Directed ๐ ฮฑ) โ โ ๐ {I} {ฮฑ} ฮด ๏ผ โ ๐ {I} {ฮฒ} (transport (is-Directed ๐) p ฮด) โ-family-๏ผ ๐ {I} {ฮฑ} {ฮฑ} refl ฮด = refl โ-family-๏ผ' : (๐ : DCPO {๐ค} {๐ฃ}) {I : ๐ฅ ฬ } {ฮฑ ฮฒ : I โ โจ ๐ โฉ} (h : ฮฑ โผ ฮฒ) (ฮด : is-Directed ๐ ฮฑ) (ฮต : is-Directed ๐ ฮฒ) โ โ ๐ {I} {ฮฑ} ฮด ๏ผ โ ๐ {I} {ฮฒ} ฮต โ-family-๏ผ' ๐ {I} {ฮฑ} {ฮฒ} h ฮด ฮต = โ-family-๏ผ ๐ (dfunext fe h) ฮด โ โ-independent-of-directedness-witness ๐ _ ฮต to-continuous-function-๏ผ : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) {f g : DCPO[ ๐ , ๐ ]} โ [ ๐ , ๐ ]โจ f โฉ โผ [ ๐ , ๐ ]โจ g โฉ โ f ๏ผ g to-continuous-function-๏ผ ๐ ๐ h = to-subtype-๏ผ (being-continuous-is-prop ๐ ๐) (dfunext fe h) ๏ผ-to-โ : (๐ : DCPO {๐ค} {๐ฃ}) {x y : โจ ๐ โฉ} โ x ๏ผ y โ x โโจ ๐ โฉ y ๏ผ-to-โ ๐ {x} {x} refl = reflexivity ๐ x ๏ผ-to-โ : (๐ : DCPO {๐ค} {๐ฃ}) {x y : โจ ๐ โฉ} โ y ๏ผ x โ x โโจ ๐ โฉ y ๏ผ-to-โ ๐ p = ๏ผ-to-โ ๐ (p โปยน) is-monotone : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) โ (โจ ๐ โฉ โ โจ ๐ โฉ) โ ๐ค โ ๐ฃ โ ๐ฃ' ฬ is-monotone ๐ ๐ f = (x y : โจ ๐ โฉ) โ x โโจ ๐ โฉ y โ f x โโจ ๐ โฉ f y is-inflationary : (๐ : DCPO {๐ค} {๐ฃ}) โ (โจ ๐ โฉ โ โจ ๐ โฉ) โ ๐ค โ ๐ฃ ฬ is-inflationary ๐ f = (x : โจ ๐ โฉ) โ x โโจ ๐ โฉ f x \end{code} Lemmas for establishing Scott continuity of maps between dcpos. \begin{code} image-is-directed : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) {f : โจ ๐ โฉ โ โจ ๐ โฉ} โ is-monotone ๐ ๐ f โ {I : ๐ฅ ฬ } โ {ฮฑ : I โ โจ ๐ โฉ} โ is-Directed ๐ ฮฑ โ is-Directed ๐ (f โ ฮฑ) image-is-directed ๐ ๐ {f} m {I} {ฮฑ} ฮด = inhabited-if-Directed ๐ ฮฑ ฮด , ฮณ where ฮณ : is-semidirected (underlying-order ๐) (f โ ฮฑ) ฮณ i j = โฅโฅ-functor (ฮป (k , u , v) โ k , m (ฮฑ i) (ฮฑ k) u , m (ฮฑ j) (ฮฑ k) v) (semidirected-if-Directed ๐ ฮฑ ฮด i j) continuity-criterion : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) (f : โจ ๐ โฉ โ โจ ๐ โฉ) โ (m : is-monotone ๐ ๐ f) โ ((I : ๐ฅ ฬ ) (ฮฑ : I โ โจ ๐ โฉ) (ฮด : is-Directed ๐ ฮฑ) โ f (โ ๐ ฮด) โโจ ๐ โฉ โ ๐ (image-is-directed ๐ ๐ m ฮด)) โ is-continuous ๐ ๐ f continuity-criterion ๐ ๐ f m e I ฮฑ ฮด = ub , lb-of-ubs where ub : (i : I) โ f (ฮฑ i) โโจ ๐ โฉ f (โ ๐ ฮด) ub i = m (ฮฑ i) (โ ๐ ฮด) (โ-is-upperbound ๐ ฮด i) ฮต : is-Directed ๐ (f โ ฮฑ) ฮต = image-is-directed ๐ ๐ m ฮด lb-of-ubs : is-lowerbound-of-upperbounds (underlying-order ๐) (f (โ ๐ ฮด)) (f โ ฮฑ) lb-of-ubs y u = f (โ ๐ ฮด) โโจ ๐ โฉ[ e I ฮฑ ฮด ] โ ๐ ฮต โโจ ๐ โฉ[ โ-is-lowerbound-of-upperbounds ๐ ฮต y u ] y โโจ ๐ โฉ continuity-criterion' : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) (f : โจ ๐ โฉ โ โจ ๐ โฉ) โ (m : is-monotone ๐ ๐ f) โ ((I : ๐ฅ ฬ ) (ฮฑ : I โ โจ ๐ โฉ) (ฮด : is-Directed ๐ ฮฑ) โ is-lowerbound-of-upperbounds (underlying-order ๐) (f (โ ๐ ฮด)) (f โ ฮฑ)) โ is-continuous ๐ ๐ f continuity-criterion' ๐ ๐ f m lb I ฮฑ ฮด = ub , lb I ฮฑ ฮด where ub : (i : I) โ f (ฮฑ i) โโจ ๐ โฉ f (โ ๐ ฮด) ub i = m (ฮฑ i) (โ ๐ ฮด) (โ-is-upperbound ๐ ฮด i) monotone-if-continuous : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) (f : DCPO[ ๐ , ๐ ]) โ is-monotone ๐ ๐ [ ๐ , ๐ ]โจ f โฉ monotone-if-continuous ๐ ๐ (f , cts) x y l = ฮณ where ฮฑ : ๐ {๐ฅ} + ๐ {๐ฅ} โ โจ ๐ โฉ ฮฑ (inl *) = x ฮฑ (inr *) = y ฮด : is-Directed ๐ ฮฑ ฮด = (โฃ inl โ โฃ , ฮต) where ฮต : (i j : ๐ + ๐) โ โ k ๊ ๐ + ๐ , ฮฑ i โโจ ๐ โฉ ฮฑ k ร ฮฑ j โโจ ๐ โฉ ฮฑ k ฮต (inl โ) (inl โ) = โฃ inr โ , l , l โฃ ฮต (inl โ) (inr โ) = โฃ inr โ , l , reflexivity ๐ y โฃ ฮต (inr โ) (inl โ) = โฃ inr โ , reflexivity ๐ y , l โฃ ฮต (inr โ) (inr โ) = โฃ inr โ , reflexivity ๐ y , reflexivity ๐ y โฃ a : y ๏ผ โ ๐ ฮด a = antisymmetry ๐ y (โ ๐ ฮด) (โ-is-upperbound ๐ ฮด (inr โ)) (โ-is-lowerbound-of-upperbounds ๐ ฮด y h) where h : (i : ๐ + ๐) โ ฮฑ i โโจ ๐ โฉ y h (inl โ) = l h (inr โ) = reflexivity ๐ y b : is-sup (underlying-order ๐) (f y) (f โ ฮฑ) b = transport (ฮป - โ is-sup (underlying-order ๐) - (f โ ฮฑ)) (ap f (a โปยน)) (cts (๐ + ๐) ฮฑ ฮด) ฮณ : f x โโจ ๐ โฉ f y ฮณ = sup-is-upperbound (underlying-order ๐) b (inl โ) image-is-directed' : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) (f : DCPO[ ๐ , ๐ ]) {I : ๐ฅ ฬ } {ฮฑ : I โ โจ ๐ โฉ} โ is-Directed ๐ ฮฑ โ is-Directed ๐ ([ ๐ , ๐ ]โจ f โฉ โ ฮฑ) image-is-directed' ๐ ๐ f {I} {ฮฑ} ฮด = image-is-directed ๐ ๐ m ฮด where m : is-monotone ๐ ๐ [ ๐ , ๐ ]โจ f โฉ m = monotone-if-continuous ๐ ๐ f continuous-โ-โ : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) (f : DCPO[ ๐ , ๐ ]) {I : ๐ฅ ฬ } {ฮฑ : I โ โจ ๐ โฉ} (ฮด : is-Directed ๐ ฮฑ) โ [ ๐ , ๐ ]โจ f โฉ (โ ๐ ฮด) โโจ ๐ โฉ โ ๐ (image-is-directed' ๐ ๐ f ฮด) continuous-โ-โ ๐ ๐ (f , c) {I} {ฮฑ} ฮด = sup-is-lowerbound-of-upperbounds (underlying-order ๐) (c I ฮฑ ฮด) (โ ๐ ฮต) u where ฮต : is-Directed ๐ (f โ ฮฑ) ฮต = image-is-directed' ๐ ๐ (f , c) ฮด u : is-upperbound (underlying-order ๐) (โ ๐ ฮต) (f โ ฮฑ) u = โ-is-upperbound ๐ ฮต continuous-โ-โ : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) (f : DCPO[ ๐ , ๐ ]) {I : ๐ฅ ฬ } {ฮฑ : I โ โจ ๐ โฉ} (ฮด : is-Directed ๐ ฮฑ) โ โ ๐ (image-is-directed' ๐ ๐ f ฮด) โโจ ๐ โฉ [ ๐ , ๐ ]โจ f โฉ (โ ๐ ฮด) continuous-โ-โ ๐ ๐ (f , c) {I} {ฮฑ} ฮด = โ-is-lowerbound-of-upperbounds ๐ ฮต (f (โ ๐ ฮด)) u where ฮต : is-Directed ๐ (f โ ฮฑ) ฮต = image-is-directed' ๐ ๐ (f , c) ฮด u : (i : I) โ f (ฮฑ i) โโจ ๐ โฉ f (โ ๐ ฮด) u i = sup-is-upperbound (underlying-order ๐) (c I ฮฑ ฮด) i continuous-โ-๏ผ : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) (f : DCPO[ ๐ , ๐ ]) {I : ๐ฅ ฬ } {ฮฑ : I โ โจ ๐ โฉ} (ฮด : is-Directed ๐ ฮฑ) โ [ ๐ , ๐ ]โจ f โฉ (โ ๐ ฮด) ๏ผ โ ๐ (image-is-directed' ๐ ๐ f ฮด) continuous-โ-๏ผ ๐ ๐ (f , c) {I} {ฮฑ} ฮด = antisymmetry ๐ (f (โ ๐ ฮด)) (โ ๐ ฮต) a b where ฮต : is-Directed ๐ (f โ ฮฑ) ฮต = image-is-directed' ๐ ๐ (f , c) ฮด a : f (โ ๐ ฮด) โโจ ๐ โฉ โ ๐ ฮต a = continuous-โ-โ ๐ ๐ (f , c) ฮด b : โ ๐ ฮต โโจ ๐ โฉ f (โ ๐ ฮด) b = continuous-โ-โ ๐ ๐ (f , c) ฮด \end{code} Continuity of basic functions (constant functions, identity, composition). \begin{code} constant-functions-are-continuous : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) {e : โจ ๐ โฉ} โ is-continuous ๐ ๐ (ฮป d โ e) constant-functions-are-continuous ๐ ๐ {e} I ฮฑ ฮด = u , v where u : (i : I) โ e โโจ ๐ โฉ e u i = reflexivity ๐ e v : (y : โจ ๐ โฉ) โ ((i : I) โ e โโจ ๐ โฉ y) โ e โโจ ๐ โฉ y v y l = โฅโฅ-rec (prop-valuedness ๐ e y) l (inhabited-if-Directed ๐ ฮฑ ฮด) id-is-monotone : (๐ : DCPO {๐ค} {๐ฃ}) โ is-monotone ๐ ๐ id id-is-monotone ๐ x y l = l id-is-inflationary : (๐ : DCPO {๐ค} {๐ฃ}) โ is-inflationary ๐ id id-is-inflationary = reflexivity id-is-continuous : (๐ : DCPO {๐ค} {๐ฃ}) โ is-continuous ๐ ๐ id id-is-continuous ๐ = continuity-criterion ๐ ๐ id (id-is-monotone ๐) ฮณ where ฮณ : (I : ๐ฅ ฬ )(ฮฑ : I โ โจ ๐ โฉ) (ฮด : is-Directed ๐ ฮฑ) โ โ ๐ ฮด โโจ ๐ โฉ โ ๐ (image-is-directed ๐ ๐ (ฮป x y l โ l) ฮด) ฮณ I ฮฑ ฮด = ๏ผ-to-โ ๐ (โ-independent-of-directedness-witness ๐ ฮด (image-is-directed ๐ ๐ (ฮป x y l โ l) ฮด)) โ-is-monotone : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) (๐' : DCPO {๐ฆ} {๐ฆ'}) (f : โจ ๐ โฉ โ โจ ๐ โฉ) (g : โจ ๐ โฉ โ โจ ๐' โฉ) โ is-monotone ๐ ๐ f โ is-monotone ๐ ๐' g โ is-monotone ๐ ๐' (g โ f) โ-is-monotone ๐ ๐ ๐' f g mf mg x y l = mg (f x) (f y) (mf x y l) โ-is-inflationary : (๐ : DCPO {๐ค} {๐ฃ}) (f g : โจ ๐ โฉ โ โจ ๐ โฉ) โ is-inflationary ๐ f โ is-inflationary ๐ g โ is-inflationary ๐ (g โ f) โ-is-inflationary ๐ f g if ig x = transitivity ๐ x (f x) (g (f x)) (if x) (ig (f x)) โ-is-continuous : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) (๐' : DCPO {๐ฆ} {๐ฆ'}) (f : โจ ๐ โฉ โ โจ ๐ โฉ) (g : โจ ๐ โฉ โ โจ ๐' โฉ) โ is-continuous ๐ ๐ f โ is-continuous ๐ ๐' g โ is-continuous ๐ ๐' (g โ f) โ-is-continuous ๐ ๐ ๐' f g cf cg = continuity-criterion ๐ ๐' (g โ f) m ฯ where mf : is-monotone ๐ ๐ f mf = monotone-if-continuous ๐ ๐ (f , cf) mg : is-monotone ๐ ๐' g mg = monotone-if-continuous ๐ ๐' (g , cg) m : is-monotone ๐ ๐' (g โ f) m = โ-is-monotone ๐ ๐ ๐' f g mf mg ฯ : (I : ๐ฅ ฬ )(ฮฑ : I โ โจ ๐ โฉ) (ฮด : is-Directed ๐ ฮฑ) โ g (f (โ ๐ ฮด)) โโจ ๐' โฉ โ ๐' (image-is-directed ๐ ๐' m ฮด) ฯ I ฮฑ ฮด = g (f (โ ๐ ฮด)) โโจ ๐' โฉ[ lโ ] g (โ ๐ ฮตf) โโจ ๐' โฉ[ lโ ] โ ๐' ฮตg โโจ ๐' โฉ[ lโ ] โ ๐' ฮต โโจ ๐' โฉ where ฮต : is-Directed ๐' (g โ f โ ฮฑ) ฮต = image-is-directed ๐ ๐' m ฮด ฮตf : is-Directed ๐ (f โ ฮฑ) ฮตf = image-is-directed' ๐ ๐ (f , cf) ฮด ฮตg : is-Directed ๐' (g โ f โ ฮฑ) ฮตg = image-is-directed' ๐ ๐' (g , cg) ฮตf lโ = mg (f (โ ๐ ฮด)) (โ ๐ ฮตf) h where h : f (โ ๐ ฮด) โโจ ๐ โฉ โ ๐ ฮตf h = continuous-โ-โ ๐ ๐ (f , cf) ฮด lโ = continuous-โ-โ ๐ ๐' (g , cg) ฮตf lโ = ๏ผ-to-โ ๐' (โ-independent-of-directedness-witness ๐' ฮตg ฮต) โ-is-continuousโ : {๐ฆโ ๐ฃโ ๐ฆโ ๐ฃโ ๐ฆโ ๐ฃโ ๐ฆโ ๐ฃโ : Universe} (๐โ : DCPO {๐ฆโ} {๐ฃโ}) (๐โ : DCPO {๐ฆโ} {๐ฃโ}) (๐โ : DCPO {๐ฆโ} {๐ฃโ}) (๐โ : DCPO {๐ฆโ} {๐ฃโ}) (f : โจ ๐โ โฉ โ โจ ๐โ โฉ) (g : โจ ๐โ โฉ โ โจ ๐โ โฉ) (h : โจ ๐โ โฉ โ โจ ๐โ โฉ) โ is-continuous ๐โ ๐โ f โ is-continuous ๐โ ๐โ g โ is-continuous ๐โ ๐โ h โ is-continuous ๐โ ๐โ (h โ g โ f) โ-is-continuousโ ๐โ ๐โ ๐โ ๐โ f g h cf cg ch = โ-is-continuous ๐โ ๐โ ๐โ f (h โ g) cf (โ-is-continuous ๐โ ๐โ ๐โ g h cg ch) DCPO-โ : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) (๐' : DCPO {๐ฆ} {๐ฆ'}) โ DCPO[ ๐ , ๐ ] โ DCPO[ ๐ , ๐' ] โ DCPO[ ๐ , ๐' ] DCPO-โ ๐ ๐ ๐' (f , cf) (g , cg) = (g โ f) , (โ-is-continuous ๐ ๐ ๐' f g cf cg) DCPO-โโ : {๐ฆโ ๐ฃโ ๐ฆโ ๐ฃโ ๐ฆโ ๐ฃโ ๐ฆโ ๐ฃโ : Universe} (๐โ : DCPO {๐ฆโ} {๐ฃโ}) (๐โ : DCPO {๐ฆโ} {๐ฃโ}) (๐โ : DCPO {๐ฆโ} {๐ฃโ}) (๐โ : DCPO {๐ฆโ} {๐ฃโ}) (f : DCPO[ ๐โ , ๐โ ]) (g : DCPO[ ๐โ , ๐โ ]) (h : DCPO[ ๐โ , ๐โ ]) โ DCPO[ ๐โ , ๐โ ] DCPO-โโ ๐โ ๐โ ๐โ ๐โ f g h = DCPO-โ ๐โ ๐โ ๐โ f (DCPO-โ ๐โ ๐โ ๐โ g h) \end{code} Defining isomorphisms of (pointed) dcpos. \begin{code} _โแตแถแตแต_ : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) โ ๐ฅ โบ โ ๐ค โ ๐ฃ โ ๐ค' โ ๐ฃ' ฬ ๐ โแตแถแตแต ๐ = ฮฃ f ๊ (โจ ๐ โฉ โ โจ ๐ โฉ) , ฮฃ g ๊ (โจ ๐ โฉ โ โจ ๐ โฉ) , ((d : โจ ๐ โฉ) โ g (f d) ๏ผ d) ร ((e : โจ ๐ โฉ) โ f (g e) ๏ผ e) ร is-continuous ๐ ๐ f ร is-continuous ๐ ๐ g โแตแถแตแต-inv : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) โ ๐ โแตแถแตแต ๐ โ ๐ โแตแถแตแต ๐ โแตแถแตแต-inv ๐ ๐ (f , g , s , r , cf , cg) = (g , f , r , s , cg , cf) is-deflation : (๐ : DCPO {๐ค} {๐ฃ}) โ DCPO[ ๐ , ๐ ] โ ๐ค โ ๐ฃ ฬ is-deflation ๐ f = (x : โจ ๐ โฉ) โ [ ๐ , ๐ ]โจ f โฉ x โโจ ๐ โฉ x is-continuous-retract : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) โ DCPO[ ๐ , ๐ ] โ DCPO[ ๐ , ๐ ] โ ๐ค ฬ is-continuous-retract ๐ ๐ (ฯ , _) (ฯ , _) = (x : โจ ๐ โฉ) โ ฯ (ฯ x) ๏ผ x is-embedding-projection-pair : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) โ DCPO[ ๐ , ๐ ] โ DCPO[ ๐ , ๐ ] โ ๐ค โ ๐ค' โ ๐ฃ' ฬ is-embedding-projection-pair ๐ ๐ ๐ค@(s , cs) ๐ฃ@(r , cr) = is-continuous-retract ๐ ๐ ๐ค ๐ฃ ร is-deflation ๐ (s โ r , โ-is-continuous ๐ ๐ ๐ r s cr cs) record _continuous-retract-of_ (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) : ๐ฅ โบ โ ๐ค โ ๐ฃ โ ๐ค' โ ๐ฃ' ฬ where field s : โจ ๐ โฉ โ โจ ๐ โฉ r : โจ ๐ โฉ โ โจ ๐ โฉ s-section-of-r : r โ s โผ id s-is-continuous : is-continuous ๐ ๐ s r-is-continuous : is-continuous ๐ ๐ r ๐ค : DCPO[ ๐ , ๐ ] ๐ค = s , s-is-continuous ๐ฃ : DCPO[ ๐ , ๐ ] ๐ฃ = r , r-is-continuous โแตแถแตแต-to-continuous-retract : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) โ ๐ โแตแถแตแต ๐ โ ๐ continuous-retract-of ๐ โแตแถแตแต-to-continuous-retract ๐ ๐ (f , g , s , r , cf , cg) = record { s = f ; r = g ; s-section-of-r = s ; s-is-continuous = cf ; r-is-continuous = cg } is-embedding-projection : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) โ DCPO[ ๐ , ๐ ] โ DCPO[ ๐ , ๐ ] โ ๐ค โ ๐ค' โ ๐ฃ' ฬ is-embedding-projection ๐ ๐ ฮต ฯ = is-continuous-retract ๐ ๐ ฮต ฯ ร is-deflation ๐ (DCPO-โ ๐ ๐ ๐ ฯ ฮต) record embedding-projection-pair-between (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) : ๐ฅ โบ โ ๐ค โ ๐ฃ โ ๐ค' โ ๐ฃ' ฬ where field e : โจ ๐ โฉ โ โจ ๐ โฉ p : โจ ๐ โฉ โ โจ ๐ โฉ e-section-of-p : p โ e โผ id e-p-deflation : (y : โจ ๐ โฉ) โ e (p y) โโจ ๐ โฉ y e-is-continuous : is-continuous ๐ ๐ e p-is-continuous : is-continuous ๐ ๐ p ๐ : DCPO[ ๐ , ๐ ] ๐ = e , e-is-continuous ๐ก : DCPO[ ๐ , ๐ ] ๐ก = p , p-is-continuous โแตแถแตแต-to-embedding-projection-pair : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) โ ๐ โแตแถแตแต ๐ โ embedding-projection-pair-between ๐ ๐ โแตแถแตแต-to-embedding-projection-pair ๐ ๐ (f , g , s , r , cf , cg) = record { e = f ; p = g ; e-section-of-p = s ; e-p-deflation = ฮป y โ ๏ผ-to-โ ๐ (r y) ; e-is-continuous = cf ; p-is-continuous = cg } \end{code} Many examples of dcpos conveniently happen to be locally small. We present and prove the equivalence of three definitions: - our main one, is-locally-small, which uses a record so that we have convenient helper functions; - a second one, is-locally-small-ฮฃ, which is like the above but uses a ฮฃ-type rather than a record; - a third one, is-locally-small', which arguably looks more like the familiar categorical notion of a locally small category. To prove their equivalence, we prove a general lemma on small-valued binary relations. \begin{code} is-small : (X : ๐ค ฬ ) โ ๐ฅ โบ โ ๐ค ฬ is-small X = X is ๐ฅ small small-binary-relation-equivalence : {X : ๐ค ฬ } {Y : ๐ฆ ฬ } {R : X โ Y โ ๐ฃ ฬ } โ ((x : X) (y : Y) โ is-small (R x y)) โ (ฮฃ Rโ ๊ (X โ Y โ ๐ฅ ฬ ) , ((x : X) (y : Y) โ Rโ x y โ R x y)) small-binary-relation-equivalence {๐ค} {๐ฆ} {๐ฃ} {X} {Y} {R} = ((x : X) (y : Y) โ is-small (R x y)) โโจ I โฉ ((((x , y) : X ร Y) โ is-small (R x y))) โโจ II โฉ (ฮฃ R' ๊ (X ร Y โ ๐ฅ ฬ ) , (((x , y) : X ร Y) โ R' (x , y) โ R x y)) โโจ III โฉ (ฮฃ R' ๊ (X ร Y โ ๐ฅ ฬ ) , ((x : X) (y : Y) โ R' (x , y) โ R x y)) โโจ IV โฉ (ฮฃ Rโ ๊ (X โ Y โ ๐ฅ ฬ ) , ((x : X) (y : Y) โ Rโ x y โ R x y)) โ where ฯ : {๐ค ๐ฅ ๐ฆ : Universe} {X : ๐ค ฬ } {Y : X โ ๐ฅ ฬ } {Z : (ฮฃ x ๊ X , Y x) โ ๐ฆ ฬ } โ ฮ Z โ (ฮ x ๊ X , ฮ y ๊ Y x , Z (x , y)) ฯ = curry-uncurry fe' I = โ-sym ฯ II = ฮ ฮฃ-distr-โ III = ฮฃ-cong (ฮป R โ ฯ) IV = ฮฃ-change-of-variable (ฮป R' โ (x : X) (y : Y) โ R' x y โ R x y) โ ฯ โ (โโ-is-equiv ฯ) module _ (๐ : DCPO {๐ค} {๐ฃ}) where record is-locally-small : ๐ฅ โบ โ ๐ค โ ๐ฃ ฬ where field _โโ_ : โจ ๐ โฉ โ โจ ๐ โฉ โ ๐ฅ ฬ โโ-โ-โ : {x y : โจ ๐ โฉ} โ x โโ y โ x โโจ ๐ โฉ y โโ-to-โ : {x y : โจ ๐ โฉ} โ x โโ y โ x โโจ ๐ โฉ y โโ-to-โ = โ โโ-โ-โ โ โ-to-โโ : {x y : โจ ๐ โฉ} โ x โโจ ๐ โฉ y โ x โโ y โ-to-โโ = โ โโ-โ-โ โโปยน โโ-is-prop-valued : (x y : โจ ๐ โฉ) โ is-prop (x โโ y) โโ-is-prop-valued x y = equiv-to-prop โโ-โ-โ (prop-valuedness ๐ x y) transitivityโ : (x : โจ ๐ โฉ) {y z : โจ ๐ โฉ} โ x โโ y โ y โโ z โ x โโ z transitivityโ x {y} {z} u v = โ โโ-โ-โ โโปยน (transitivity ๐ x y z (โ โโ-โ-โ โ u) (โ โโ-โ-โ โ v)) syntax transitivityโ x u v = x โโ[ u ] v infixr 0 transitivityโ reflexivityโ : (x : โจ ๐ โฉ) โ x โโ x reflexivityโ x = โ โโ-โ-โ โโปยน (reflexivity ๐ x) syntax reflexivityโ x = x โโ infix 1 reflexivityโ \end{code} This ends our helper function for the record and we proceed by giving the alternative definitions of local smallness and proving their equivalence. \begin{code} is-locally-small-ฮฃ : ๐ฅ โบ โ ๐ค โ ๐ฃ ฬ is-locally-small-ฮฃ = ฮฃ _โโ_ ๊ (โจ ๐ โฉ โ โจ ๐ โฉ โ ๐ฅ ฬ ) , ((x y : โจ ๐ โฉ) โ (x โโ y) โ (x โโจ ๐ โฉ y)) is-locally-small-record-equivalence : is-locally-small โ is-locally-small-ฮฃ is-locally-small-record-equivalence = qinveq f (g , (ฮป _ โ refl) , (ฮป _ โ refl)) where f : is-locally-small โ is-locally-small-ฮฃ f ls = _โโ_ , (ฮป x y โ โโ-โ-โ) where open is-locally-small ls g : is-locally-small-ฮฃ โ is-locally-small g ls = record { _โโ_ = prโ ls ; โโ-โ-โ = (ฮป {x} {y} โ prโ ls x y) } is-locally-small' : ๐ฅ โบ โ ๐ค โ ๐ฃ ฬ is-locally-small' = (x y : โจ ๐ โฉ) โ is-small (x โโจ ๐ โฉ y) local-smallness-equivalent-definitions : is-locally-small โ is-locally-small' local-smallness-equivalent-definitions = is-locally-small-record-equivalence โ โ-sym (small-binary-relation-equivalence) being-locally-small'-is-prop : PropExt โ is-prop is-locally-small' being-locally-small'-is-prop pe = ฮ โ-is-prop fe (ฮป x y โ prop-being-small-is-prop pe fe' (x โโจ ๐ โฉ y) (prop-valuedness ๐ x y)) being-locally-small-is-prop : PropExt โ is-prop is-locally-small being-locally-small-is-prop pe = equiv-to-prop local-smallness-equivalent-definitions (being-locally-small'-is-prop pe) \end{code} Being locally small is preserved by continuous retracts. \begin{code} local-smallness-preserved-by-continuous-retract : (๐ : DCPO {๐ค} {๐ฃ}) (๐ : DCPO {๐ค'} {๐ฃ'}) โ ๐ continuous-retract-of ๐ โ is-locally-small ๐ โ is-locally-small ๐ local-smallness-preserved-by-continuous-retract ๐ ๐ ฯ ls = โ local-smallness-equivalent-definitions ๐ โโปยน ฮณ where open _continuous-retract-of_ ฯ open is-locally-small ls ฮณ : is-locally-small' ๐ ฮณ x y = (s x โโ s y , g) where g : (s x โโ s y) โ (x โโจ ๐ โฉ y) g = logically-equivalent-props-are-equivalent (equiv-to-prop โโ-โ-โ (prop-valuedness ๐ (s x) (s y))) (prop-valuedness ๐ x y) โฆ โโฆ โฆ โโฆ where โฆ โโฆ : (s x โโ s y) โ (x โโจ ๐ โฉ y) โฆ โโฆ l = x โโจ ๐ โฉ[ โฆ 1โฆ ] r (s x) โโจ ๐ โฉ[ โฆ 2โฆ ] r (s y) โโจ ๐ โฉ[ โฆ 3โฆ ] y โโจ ๐ โฉ where โฆ 1โฆ = ๏ผ-to-โ ๐ (s-section-of-r x) โฆ 2โฆ = monotone-if-continuous ๐ ๐ ๐ฃ (s x) (s y) (โโ-to-โ l) โฆ 3โฆ = ๏ผ-to-โ ๐ (s-section-of-r y) โฆ โโฆ : (x โโจ ๐ โฉ y) โ (s x โโ s y) โฆ โโฆ l = โ-to-โโ (monotone-if-continuous ๐ ๐ ๐ค x y l) \end{code} Moving on from local smallness, we present a few useful lemmas on cofinality and (joins of) directed families. \begin{code} semidirected-if-bicofinal : (๐ : DCPO {๐ค} {๐ฃ}) {I J : ๐ฆ ฬ } (ฮฑ : I โ โจ ๐ โฉ) (ฮฒ : J โ โจ ๐ โฉ) โ ((i : I) โ โ j ๊ J , ฮฑ i โโจ ๐ โฉ ฮฒ j) โ ((j : J) โ โ i ๊ I , ฮฒ j โโจ ๐ โฉ ฮฑ i) โ is-semidirected (underlying-order ๐) ฮฑ โ is-semidirected (underlying-order ๐) ฮฒ semidirected-if-bicofinal ๐ {I} {J} ฮฑ ฮฒ ฮฑ-cofinal-in-ฮฒ ฮฒ-cofinal-in-ฮฑ ฯ jโ jโ = โฅโฅ-recโ โ-is-prop f (ฮฒ-cofinal-in-ฮฑ jโ) (ฮฒ-cofinal-in-ฮฑ jโ) where f : (ฮฃ iโ ๊ I , ฮฒ jโ โโจ ๐ โฉ ฮฑ iโ) โ (ฮฃ iโ ๊ I , ฮฒ jโ โโจ ๐ โฉ ฮฑ iโ) โ โ j ๊ J , (ฮฒ jโ โโจ ๐ โฉ ฮฒ j) ร (ฮฒ jโ โโจ ๐ โฉ ฮฒ j) f (iโ , uโ) (iโ , uโ) = โฅโฅ-rec โ-is-prop g (ฯ iโ iโ) where g : (ฮฃ i ๊ I , (ฮฑ iโ โโจ ๐ โฉ ฮฑ i) ร (ฮฑ iโ โโจ ๐ โฉ ฮฑ i)) โ (โ j ๊ J , (ฮฒ jโ โโจ ๐ โฉ ฮฒ j) ร (ฮฒ jโ โโจ ๐ โฉ ฮฒ j)) g (i , vโ , vโ) = โฅโฅ-functor h (ฮฑ-cofinal-in-ฮฒ i) where h : (ฮฃ j ๊ J , ฮฑ i โโจ ๐ โฉ ฮฒ j) โ (ฮฃ j ๊ J , (ฮฒ jโ โโจ ๐ โฉ ฮฒ j) ร (ฮฒ jโ โโจ ๐ โฉ ฮฒ j)) h (j , w) = (j , (ฮฒ jโ โโจ ๐ โฉ[ uโ ] ฮฑ iโ โโจ ๐ โฉ[ vโ ] ฮฑ i โโจ ๐ โฉ[ w ] ฮฒ j โโจ ๐ โฉ) , (ฮฒ jโ โโจ ๐ โฉ[ uโ ] ฮฑ iโ โโจ ๐ โฉ[ vโ ] ฮฑ i โโจ ๐ โฉ[ w ] ฮฒ j โโจ ๐ โฉ)) directed-if-bicofinal : (๐ : DCPO {๐ค} {๐ฃ}) {I J : ๐ฆ ฬ } {ฮฑ : I โ โจ ๐ โฉ} {ฮฒ : J โ โจ ๐ โฉ} โ ((i : I) โ โ j ๊ J , ฮฑ i โโจ ๐ โฉ ฮฒ j) โ ((j : J) โ โ i ๊ I , ฮฒ j โโจ ๐ โฉ ฮฑ i) โ is-Directed ๐ ฮฑ โ is-Directed ๐ ฮฒ directed-if-bicofinal ๐ {I} {J} {ฮฑ} {ฮฒ} ฮบโ ฮบโ ฮด = (ฮณ , semidirected-if-bicofinal ๐ ฮฑ ฮฒ ฮบโ ฮบโ (semidirected-if-Directed ๐ ฮฑ ฮด)) where ฮณ : โฅ J โฅ ฮณ = โฅโฅ-rec โฅโฅ-is-prop ฯ (inhabited-if-Directed ๐ ฮฑ ฮด) where ฯ : I โ โฅ J โฅ ฯ i = โฅโฅ-functor prโ (ฮบโ i) โ-โ-if-cofinal : (๐ : DCPO {๐ค} {๐ฃ}) {I J : ๐ฅ ฬ } {ฮฑ : I โ โจ ๐ โฉ} {ฮฒ : J โ โจ ๐ โฉ} โ ((i : I) โ โ j ๊ J , ฮฑ i โโจ ๐ โฉ ฮฒ j) โ (ฮด : is-Directed ๐ ฮฑ) โ (ฮต : is-Directed ๐ ฮฒ) โ โ ๐ ฮด โโจ ๐ โฉ โ ๐ ฮต โ-โ-if-cofinal ๐ {I} {J} {ฮฑ} {ฮฒ} ฮฑ-cofinal-in-ฮฒ ฮด ฮต = โ-is-lowerbound-of-upperbounds ๐ ฮด (โ ๐ ฮต) ฮณ where ฮณ : (i : I) โ ฮฑ i โโจ ๐ โฉ โ ๐ ฮต ฮณ i = โฅโฅ-rec (prop-valuedness ๐ (ฮฑ i) (โ ๐ ฮต)) ฯ (ฮฑ-cofinal-in-ฮฒ i) where ฯ : (ฮฃ j ๊ J , ฮฑ i โโจ ๐ โฉ ฮฒ j) โ ฮฑ i โโจ ๐ โฉ โ ๐ ฮต ฯ (j , u) = ฮฑ i โโจ ๐ โฉ[ u ] ฮฒ j โโจ ๐ โฉ[ โ-is-upperbound ๐ ฮต j ] โ ๐ ฮต โโจ ๐ โฉ โ-๏ผ-if-bicofinal : (๐ : DCPO {๐ค} {๐ฃ}) {I J : ๐ฅ ฬ } {ฮฑ : I โ โจ ๐ โฉ} {ฮฒ : J โ โจ ๐ โฉ} โ ((i : I) โ โ j ๊ J , ฮฑ i โโจ ๐ โฉ ฮฒ j) โ ((j : J) โ โ i ๊ I , ฮฒ j โโจ ๐ โฉ ฮฑ i) โ (ฮด : is-Directed ๐ ฮฑ) โ (ฮต : is-Directed ๐ ฮฒ) โ โ ๐ ฮด ๏ผ โ ๐ ฮต โ-๏ผ-if-bicofinal ๐ ฮบโ ฮบโ ฮด ฮต = antisymmetry ๐ (โ ๐ ฮด) (โ ๐ ฮต) (โ-โ-if-cofinal ๐ ฮบโ ฮด ฮต) (โ-โ-if-cofinal ๐ ฮบโ ฮต ฮด) \end{code} Finally, we sometimes wish to reindex a directed family by another equivalent type. The resulting family is of course directed again and has the same supremum, which is what we prove here. \begin{code} module _ (๐ : DCPO {๐ค} {๐ฃ}) {I : ๐ฆ ฬ } {J : ๐ฆ' ฬ } (ฯ : I โ J) (ฮฑ : I โ โจ ๐ โฉ) where reindexed-family : J โ โจ ๐ โฉ reindexed-family = ฮฑ โ โ ฯ โโปยน reindexed-family-is-directed : is-Directed ๐ ฮฑ โ is-Directed ๐ reindexed-family reindexed-family-is-directed ฮด = J-inh , ฮฒ-semidirected where J-inh : โฅ J โฅ J-inh = โฅโฅ-functor โ ฯ โ (inhabited-if-Directed ๐ ฮฑ ฮด) ฮฒ : J โ โจ ๐ โฉ ฮฒ = reindexed-family ฮฒ-semidirected : is-semidirected (underlying-order ๐) ฮฒ ฮฒ-semidirected jโ jโ = โฅโฅ-functor r (semidirected-if-Directed ๐ ฮฑ ฮด (โ ฯ โโปยน jโ) (โ ฯ โโปยน jโ)) where r : (ฮฃ i ๊ I , (ฮฒ jโ โโจ ๐ โฉ ฮฑ i) ร (ฮฒ jโ โโจ ๐ โฉ ฮฑ i)) โ (ฮฃ j ๊ J , (ฮฒ jโ โโจ ๐ โฉ ฮฒ j) ร (ฮฒ jโ โโจ ๐ โฉ ฮฒ j)) r (i , lโ , lโ) = (โ ฯ โ i , (ฮฒ jโ โโจ ๐ โฉ[ lโ ] ฮฑ i โโจ ๐ โฉ[ k ] (ฮฑ โ โ ฯ โโปยน โ โ ฯ โ) i โโจ ๐ โฉ) , (ฮฒ jโ โโจ ๐ โฉ[ lโ ] ฮฑ i โโจ ๐ โฉ[ k ] (ฮฑ โ โ ฯ โโปยน โ โ ฯ โ) i โโจ ๐ โฉ)) where k = ๏ผ-to-โ ๐ (ap ฮฑ (inverses-are-retractions โ ฯ โ (โโ-is-equiv ฯ) i)) reindexed-family-sup : (x : โจ ๐ โฉ) โ is-sup (underlying-order ๐) x ฮฑ โ is-sup (underlying-order ๐) x (reindexed-family) reindexed-family-sup x x-is-sup = ub , lb-of-ubs where ฮฒ : J โ โจ ๐ โฉ ฮฒ = reindexed-family ub : is-upperbound (underlying-order ๐) x ฮฒ ub i = sup-is-upperbound (underlying-order ๐) x-is-sup (โ ฯ โโปยน i) lb-of-ubs : is-lowerbound-of-upperbounds (underlying-order ๐) x ฮฒ lb-of-ubs y y-is-ub = sup-is-lowerbound-of-upperbounds (underlying-order ๐) x-is-sup y lemma where lemma : is-upperbound (underlying-order ๐) y ฮฑ lemma i = ฮฑ i โโจ ๐ โฉ[ โฆ 1โฆ ] ฮฒ (โ ฯ โ i) โโจ ๐ โฉ[ โฆ 2โฆ ] y โโจ ๐ โฉ where โฆ 1โฆ = ๏ผ-to-โ ๐ (ap ฮฑ (inverses-are-retractions โ ฯ โ (โโ-is-equiv ฯ) i)) โฆ 2โฆ = y-is-ub (โ ฯ โ i) module _ (๐ : DCPO {๐ค} {๐ฃ}) {I : ๐ฆ ฬ } {J : ๐ฆ' ฬ } (ฯ : I โ J) (ฮฑ : I โ โจ ๐ โฉ) where sup-reindexed-family : (x : โจ ๐ โฉ) โ is-sup (underlying-order ๐) x (reindexed-family ๐ ฯ ฮฑ) โ is-sup (underlying-order ๐) x ฮฑ sup-reindexed-family x x-is-sup = transport (is-sup (underlying-order ๐) x) (dfunext fe h) (reindexed-family-sup ๐ (โ-sym ฯ) ฮฒ x x-is-sup) where ฮฒ = reindexed-family ๐ ฯ ฮฑ h : reindexed-family ๐ (โ-sym ฯ) ฮฒ โผ ฮฑ h i = (ฮฑ โ โ ฯ โโปยน โ โ โ-sym ฯ โโปยน) i ๏ผโจ eโ โฉ (ฮฑ โ โ ฯ โโปยน โ โ ฯ โ) i ๏ผโจ eโ โฉ ฮฑ i โ where eโ = ap (ฮป - โ (ฮฑ โ โ ฯ โโปยน โ -) i) (inversion-involutive โ ฯ โ (โโ-is-equiv ฯ)) eโ = ap ฮฑ (inverses-are-retractions' ฯ i) \end{code} Added 23 June 2024. All dcpos (regardless of the universe level for index families) are ฯ-complete. \begin{code} dcpos-are-ฯ-complete : (๐ : DCPO {๐ค} {๐ฃ}) โ is-ฯ-complete (underlying-order ๐) dcpos-are-ฯ-complete ๐ ฮฑ ฮฑ-is-ฯ-chain = s , s-is-sup where โ' : ๐ฅ ฬ โ' = Lift ๐ฅ โ ฯ : โ โ Lift ๐ฅ โ ฯ = โ-Lift ๐ฅ โ ฮด : is-Directed ๐ (reindexed-family ๐ (โ-Lift ๐ฅ โ) ฮฑ) ฮด = reindexed-family-is-directed ๐ ฯ ฮฑ (ฯ-chains-are-Directed ๐ ฮฑ ฮฑ-is-ฯ-chain) s : โจ ๐ โฉ s = โ ๐ ฮด s-is-sup : is-sup (underlying-order ๐) s ฮฑ s-is-sup = sup-reindexed-family ๐ ฯ ฮฑ s (โ-is-sup ๐ ฮด) \end{code} Added 18th Feb 2024 by Martin Escardo. Subdcpo induced by a subset / property. \begin{code} is-closed-under-directed-sups : (๐ : DCPO {๐ค} {๐ฃ}) โ (โจ ๐ โฉ โ ๐ฆ ฬ) โ ๐ฅ โบ โ ๐ค โ ๐ฃ โ ๐ฆ ฬ is-closed-under-directed-sups {๐ค} {๐ฃ} ๐ P = {I : ๐ฅ ฬ } (ฮฑ : I โ โจ ๐ โฉ) (ฮด : is-Directed ๐ ฮฑ) โ ((i : I) โ P (ฮฑ i)) โ P (โ ๐ ฮด) open import UF.Sets-Properties module _ (๐ : DCPO {๐ค} {๐ฃ}) (P : โจ ๐ โฉ โ ๐ฆ ฬ) (P-is-prop-valued : (x : โจ ๐ โฉ) โ is-prop (P x)) (P-is-closed-under-directed-sups : is-closed-under-directed-sups ๐ P) where subdcpo : DCPO {๐ค โ ๐ฆ} {๐ฃ} subdcpo = (ฮฃ x ๊ โจ ๐ โฉ , P x) , (ฮป (x , _) (y , _) โ x โโจ ๐ โฉ y) , (subsets-of-sets-are-sets โจ ๐ โฉ P (sethood ๐) (P-is-prop-valued _) , (ฮป _ _ โ prop-valuedness ๐ _ _) , (ฮป _ โ reflexivity ๐ _) , (ฮป (x , _) (y , _) (z , _) โ transitivity ๐ x y z) , (ฮป (x , _) (y , _) l m โ to-subtype-๏ผ P-is-prop-valued (antisymmetry ๐ x y l m))) , (ฮป I ฮฑ ฮด โ (โ ๐ {I} {prโ โ ฮฑ} ฮด , P-is-closed-under-directed-sups (prโ โ ฮฑ) ฮด (prโ โ ฮฑ)) , โ-is-upperbound ๐ ฮด , (ฮป (x , _) โ โ-is-lowerbound-of-upperbounds ๐ ฮด x)) subdcpo-inclusion : โจ subdcpo โฉ โ โจ ๐ โฉ subdcpo-inclusion = prโ subdcpo-satisfies-property : (ฯ : โจ subdcpo โฉ) โ P (subdcpo-inclusion ฯ) subdcpo-satisfies-property = prโ open import UF.SubtypeClassifier is-closed-under-directed-supsโ : (๐ : DCPO {๐ค} {๐ฃ}) โ (โจ ๐ โฉ โ ฮฉ ๐ฆ) โ ฮฉ (๐ฅ โบ โ ๐ค โ ๐ฃ โ ๐ฆ) is-closed-under-directed-supsโ {๐ค} {๐ฃ} ๐ P = is-closed-under-directed-sups ๐ (ฮป x โ P x holds) , ฮ -is-prop' fe (ฮป I โ ฮ โ-is-prop fe (ฮป ฮฑ ฮด c โ holds-is-prop (P (โ ๐ ฮด)))) module _ (๐ : DCPO {๐ค} {๐ฃ}) (P : โจ ๐ โฉ โ ฮฉ ๐ฆ) (P-is-closed-under-directed-supsโ : is-closed-under-directed-supsโ ๐ P holds) where subdcpoโ : DCPO {๐ค โ ๐ฆ} {๐ฃ} subdcpoโ = subdcpo ๐ (ฮป x โ P x holds) (ฮป x โ holds-is-prop (P x)) P-is-closed-under-directed-supsโ \end{code}