Tom de Jong, 9 February 2022 We describe how to freely add a least element to a dcpo. This is done by lifting the underlying set, but when ordering the lifting, we have to take the order on the original dcpo into account. We also show that taking the free dcpo on a set X coincides with freely adding a least element to X when viewed as a discretely-ordered dcpo. \begin{code} {-# OPTIONS --safe --without-K #-} open import MLTT.Spartan hiding (J) open import UF.FunExt open import UF.PropTrunc open import UF.Subsingletons module DomainTheory.Lifting.LiftingDcpo (pt : propositional-truncations-exist) (fe : Fun-Ext) (π₯ : Universe) (pe : propext π₯) where open PropositionalTruncation pt open import UF.Equiv open import UF.EquivalenceExamples open import UF.Sets open import UF.Subsingletons-FunExt open import Lifting.Construction π₯ hiding (β₯) open import Lifting.IdentityViaSIP π₯ open import Lifting.Miscelanea π₯ open import Lifting.Miscelanea-PropExt-FunExt π₯ pe fe renaming ( β'-to-β to β'-to-β'' ; β-to-β' to β''-to-β') open import OrderedTypes.Poset fe open import DomainTheory.Basics.Dcpo pt fe π₯ open import DomainTheory.Basics.Miscelanea pt fe π₯ open import DomainTheory.Basics.Pointed pt fe π₯ open import DomainTheory.Lifting.LiftingSet pt fe π₯ pe renaming ( π-DCPO to π-DCPO-on-set ; π-DCPOβ₯ to π-DCPOβ₯-on-set) \end{code} We first construct the pointed dcpo. \begin{code} module freely-add-β₯ (π : DCPO {π€} {π£}) where πD : π₯ βΊ β π€ Μ πD = π β¨ π β© _β_ : πD β πD β π₯ β π£ Μ (P , Ο , _) β (Q , Ο , _) = Ξ£ f κ (P β Q) , ((p : P) β Ο p ββ¨ π β© Ο (f p)) β-is-prop-valued : (k l : πD) β is-prop (k β l) β-is-prop-valued k l = Ξ£-is-prop (Ξ -is-prop fe (Ξ» p β being-defined-is-prop l)) (Ξ» f β Ξ -is-prop fe (Ξ» p β prop-valuedness π (value k p) (value l (f p)))) β-is-reflexive : (l : πD) β l β l β-is-reflexive l = (id , (Ξ» p β reflexivity π (value l p))) β-is-transitive : (k l m : πD) β k β l β l β m β k β m β-is-transitive k l m (f , s) (g , t) = (g β f , Ξ³) where Ξ³ : (p : is-defined k) β value k p ββ¨ π β© value m (g (f p)) Ξ³ p = value k p ββ¨ π β©[ s p ] value l (f p) ββ¨ π β©[ t (f p) ] value m (g (f p)) ββ¨ π β© β-is-antisymmetric : (k l : πD) β k β l β l β k β k οΌ l β-is-antisymmetric k l (f , s) (g , t) = β-to-οΌ Ξ³ where Ξ³ : k β l Ξ³ = (e , dfunext fe (Ξ» p β antisymmetry π (value k p) (value l (β e β p)) (s p) (h p))) where e : is-defined k β is-defined l e = logically-equivalent-props-are-equivalent (being-defined-is-prop k) (being-defined-is-prop l) f g h : (p : is-defined k) β value l (β e β p) ββ¨ π β© value k p h p = value l (β e β p) ββ¨ π β©[ t (β e β p) ] value k (g (β e β p)) ββ¨ π β©[ lemma ] value k p ββ¨ π β© where lemma = οΌ-to-β π (value-is-constant k (g (β e β p)) p) family-in-dcpo : {I : π₯ Μ } (Ξ± : I β πD) β (Ξ£ i κ I , is-defined (Ξ± i)) β β¨ π β© family-in-dcpo {I} Ξ± (i , p) = value (Ξ± i) p family-in-dcpo-is-semidirected : {I : π₯ Μ } (Ξ± : I β πD) β is-semidirected _β_ Ξ± β is-semidirected (underlying-order π) (family-in-dcpo Ξ±) family-in-dcpo-is-semidirected {I} Ξ± Ξ±-semidir (i , pα΅’) (j , pβ±Ό) = β₯β₯-functor Ξ³ (Ξ±-semidir i j) where Ξ³ : (Ξ£ k κ I , (Ξ± i β Ξ± k) Γ (Ξ± j β Ξ± k)) β (Ξ£ q κ domain (family-in-dcpo Ξ±) , value (Ξ± i) pα΅’ ββ¨ π β© value (Ξ± (prβ q)) (prβ q) Γ value (Ξ± j) pβ±Ό ββ¨ π β© value (Ξ± (prβ q)) (prβ q)) Ξ³ (k , (f , s) , (g , t)) = ((k , f pα΅’) , (s pα΅’) , Ο) where Ο = value (Ξ± j) pβ±Ό ββ¨ π β©[ t pβ±Ό ] value (Ξ± k) (g pβ±Ό) ββ¨ π β©[ lemma ] value (Ξ± k) (f pα΅’) ββ¨ π β© where lemma = οΌ-to-β π (value-is-constant (Ξ± k) (g pβ±Ό) (f pα΅’)) family-in-dcpo-is-directed : {I : π₯ Μ } (Ξ± : I β πD) β is-directed _β_ Ξ± β β i κ I , is-defined (Ξ± i) β is-Directed π (family-in-dcpo Ξ±) family-in-dcpo-is-directed Ξ± Ξ΄ q = (q , family-in-dcpo-is-semidirected Ξ± (semidirected-if-directed _β_ Ξ± Ξ΄)) π-DCPO : DCPO {π₯ βΊ β π€} {π₯ β π£} π-DCPO = (πD , _β_ , (lifting-of-set-is-set (sethood π) , β-is-prop-valued , β-is-reflexive , β-is-transitive , β-is-antisymmetric) , Ξ³) where Ξ³ : is-directed-complete _β_ Ξ³ I Ξ± Ξ΄ = (s , s-is-ub , s-is-lb-of-ubs) where J : π₯ Μ J = Ξ£ i κ I , is-defined (Ξ± i) Ξ² : J β β¨ π β© Ξ² = family-in-dcpo Ξ± Ξ΅ : β₯ J β₯ β is-Directed π Ξ² Ξ΅ = family-in-dcpo-is-directed Ξ± Ξ΄ s : πD s = β₯ J β₯ , t where t : (β₯ J β₯ β β¨ π β©) Γ is-prop β₯ J β₯ t = (Ξ» q β β π (Ξ΅ q)) , β₯β₯-is-prop s-is-ub : (i : I) β Ξ± i β s s-is-ub i = (f , (Ξ» qα΅’ β β-is-upperbound π (Ξ΅ (f qα΅’)) (i , qα΅’))) where f : is-defined (Ξ± i) β β₯ J β₯ f qα΅’ = β£ i , qα΅’ β£ s-is-lb-of-ubs : is-lowerbound-of-upperbounds _β_ s Ξ± s-is-lb-of-ubs l l-is-ub = (f , r) where f : β₯ J β₯ β is-defined l f = β₯β₯-rec (being-defined-is-prop l) (Ξ» (i , qα΅’) β prβ (l-is-ub i) qα΅’) r : (q : β₯ J β₯) β β π (Ξ΅ q) ββ¨ π β© value l (f q) r q = β-is-lowerbound-of-upperbounds π (Ξ΅ q) (value l (f q)) ub where ub : (j : J) β Ξ² j ββ¨ π β© value l (f q) ub (i , qα΅’) = value (Ξ± i) qα΅’ ββ¨ π β©[ prβ (l-is-ub i) qα΅’ ] value l (prβ (l-is-ub i) qα΅’) ββ¨ π β©[ lemma ] value l (f q) ββ¨ π β© where lemma = οΌ-to-β π (value-is-constant l (prβ (l-is-ub i) qα΅’) (f q)) π-DCPOβ₯ : DCPOβ₯ {π₯ βΊ β π€} {π₯ β π£} π-DCPOβ₯ = (π-DCPO , (π , π-elim , π-is-prop) , (Ξ» l β π-elim , π-induction)) \end{code} Added 3 July 2024 (but known much earlier of course). \begin{code} π-DCPO-is-locally-small : is-locally-small π β is-locally-small π-DCPO π-DCPO-is-locally-small ls = record { _ββ_ = _βΌ_ ; ββ-β-β = Ξ£-cong (Ξ» f β Ξ -cong fe fe (Ξ» p β ββ-β-β)) } where open is-locally-small ls _βΌ_ : πD β πD β π₯ Μ (P , Ο , _) βΌ (Q , Ο , _) = Ξ£ f κ (P β Q) , ((p : P) β Ο p ββ Ο (f p)) \end{code} Of course, the map Ξ· from the dcpo to the lifted dcpo should be Scott continuous. \begin{code} Ξ·-is-continuous : is-continuous π π-DCPO Ξ· Ξ·-is-continuous I Ξ± Ξ΄ = (ub , lb-of-ubs) where ub : (i : I) β Ξ· (Ξ± i) β Ξ· (β π Ξ΄) ub i = ((Ξ» β β β) , (Ξ» β β β-is-upperbound π Ξ΄ i)) lb-of-ubs : is-lowerbound-of-upperbounds (underlying-order π-DCPO) (Ξ· (β π Ξ΄)) (Ξ· β Ξ±) lb-of-ubs l l-is-ub = β₯β₯-rec (prop-valuedness π-DCPO (Ξ· (β π Ξ΄)) l) Ξ³ (inhabited-if-Directed π Ξ± Ξ΄) where q : (i : I) β is-defined l q i = prβ (l-is-ub i) β ub' : (i j : I) β Ξ± j ββ¨ π β© value l (q i) ub' i j = Ξ± j ββ¨ π β©[ prβ (l-is-ub j) β ] value l (q j) ββ¨ π β©[ οΌ-to-β π (value-is-constant l (q j) (q i)) ] value l (q i) ββ¨ π β© Ξ³ : I β Ξ· (β π Ξ΄) β l Ξ³ i = ((Ξ» β β q i) , (Ξ» β β β-is-lowerbound-of-upperbounds π Ξ΄ (value l (q i)) (ub' i))) π-order-lemma : {k l : πD} β k β' l β k β l π-order-lemma {k} {l} k-below-l = (prβ claim , (Ξ» p β οΌ-to-β π (prβ claim p))) where open import Lifting.UnivalentPrecategory π₯ β¨ π β© renaming (_β_ to _β''_) claim : k β'' l claim = β'-to-β'' k-below-l \end{code} We now prove that the construction above freely adds a least element to the dcpo. \begin{code} module _ (π : DCPOβ₯ {π€'} {π£'}) (f : β¨ π β© β βͺ π β«) (f-is-continuous : is-continuous π (π β») f) where open lifting-is-free-pointed-dcpo-on-set (sethood π) π f fΜ-is-monotone : is-monotone π-DCPO (π β») fΜ fΜ-is-monotone k l k-below-l = βΛ’Λ’-is-lowerbound-of-upperbounds π (f β value k) (being-defined-is-prop k) (fΜ l) lem where lem : (p : is-defined k) β f (value k p) ββͺ π β« fΜ l lem p = f (value k p) ββͺ π β«[ β¦ 1β¦ ] f (value l q) ββͺ π β«[ β¦ 2β¦ ] fΜ l ββͺ π β« where q : is-defined l q = prβ k-below-l p β¦ 1β¦ = monotone-if-continuous π (π β») (f , f-is-continuous) (value k p) (value l q) (prβ k-below-l p) β¦ 2β¦ = βΛ’Λ’-is-upperbound π (f β value l) (being-defined-is-prop l) q fΜ-is-continuous' : is-continuous π-DCPO (π β») fΜ fΜ-is-continuous' = continuity-criterion π-DCPO (π β») fΜ fΜ-is-monotone Ξ³ where Ξ³ : (I : π₯ Μ )(Ξ± : I β β¨ π-DCPO β©) (Ξ΄ : is-Directed π-DCPO Ξ±) β fΜ (β π-DCPO {I} {Ξ±} Ξ΄) ββͺ π β« β (π β») (image-is-directed π-DCPO (π β») fΜ-is-monotone {I} {Ξ±} Ξ΄) Ξ³ I Ξ± Ξ΄ = βΛ’Λ’-is-lowerbound-of-upperbounds π (f β value s) (being-defined-is-prop s) (β (π β») Ξ΅) lem where s : β¨ π-DCPO β© s = β π-DCPO {I} {Ξ±} Ξ΄ Ξ΅ : is-Directed (π β») (fΜ β Ξ±) Ξ΅ = image-is-directed π-DCPO (π β») fΜ-is-monotone {I} {Ξ±} Ξ΄ lem : (q : is-defined s) β f (value s q) ββͺ π β« β (π β») Ξ΅ lem q = f (value s q) ββͺ π β«[ β¦ 1β¦ ] f (β π Ξ΄') ββͺ π β«[ β¦ 2β¦ ] β (π β») Ξ΅' ββͺ π β«[ β¦ 3β¦ ] β (π β») Ξ΅ ββͺ π β« where Ξ΄' : is-Directed π (family-in-dcpo Ξ±) Ξ΄' = family-in-dcpo-is-directed Ξ± Ξ΄ q Ξ΅' : is-Directed (π β») (f β family-in-dcpo Ξ±) Ξ΅' = image-is-directed' π (π β») (f , f-is-continuous) Ξ΄' β¦ 1β¦ = reflexivity (π β») (f (β π Ξ΄')) β¦ 2β¦ = continuous-β-β π (π β») (f , f-is-continuous) Ξ΄' β¦ 3β¦ = β-is-lowerbound-of-upperbounds (π β») Ξ΅' (β (π β») Ξ΅) claim where claim : ((i , p) : (Ξ£ i κ I , is-defined (Ξ± i))) β (f (value (Ξ± i) p)) ββͺ π β« β (π β») Ξ΅ claim (i , p) = (f (value (Ξ± i) p)) ββͺ π β«[ β¦ β β¦ ] fΜ (Ξ± i) ββͺ π β«[ β¦ β‘β¦ ] β (π β») Ξ΅ ββͺ π β« where β¦ β β¦ = βΛ’Λ’-is-upperbound π (f β value (Ξ± i)) (being-defined-is-prop (Ξ± i)) p β¦ β‘β¦ = β-is-upperbound (π β») Ξ΅ i fΜ-is-strict' : is-strict π-DCPOβ₯ π fΜ fΜ-is-strict' = fΜ-is-strict fΜ-after-Ξ·-is-f' : fΜ β Ξ· βΌ f fΜ-after-Ξ·-is-f' = fΜ-after-Ξ·-is-f π-DCPOβ : DCPO π-DCPOβ = π-DCPO-on-set (sethood π) π-monotone-lemma : (g : πD β βͺ π β«) β is-monotone π-DCPO (π β») g β is-monotone π-DCPOβ (π β») g π-monotone-lemma g g-mon k l k-below-l = g-mon k l (π-order-lemma k-below-l) π-directed-lemma : {I : π₯ Μ } {Ξ± : I β πD} β is-Directed π-DCPOβ Ξ± β is-Directed π-DCPO Ξ± π-directed-lemma {I} {Ξ±} Ξ΄ = (inhabited-if-Directed π-DCPOβ Ξ± Ξ΄ , Ο) where Ο : is-semidirected _β_ Ξ± Ο i j = β₯β₯-functor Ξ³ (semidirected-if-Directed π-DCPOβ Ξ± Ξ΄ i j) where Ξ³ : (Ξ£ k κ I , (Ξ± i β' Ξ± k) Γ (Ξ± j β' Ξ± k)) β (Ξ£ k κ I , (Ξ± i β Ξ± k) Γ (Ξ± j β Ξ± k)) Ξ³ (k , u , v) = (k , π-order-lemma u , π-order-lemma v) π-sup-lemma : {I : π₯ Μ } {Ξ± : I β πD} (Ξ΄ : is-Directed π-DCPOβ Ξ±) β β π-DCPOβ Ξ΄ οΌ β π-DCPO {I} {Ξ±} (π-directed-lemma Ξ΄) π-sup-lemma {I} {Ξ±} Ξ΄ = β-to-οΌ (e , dfunext fe Ξ³) where Ξ΅ : is-Directed π-DCPO Ξ± Ξ΅ = π-directed-lemma Ξ΄ e : is-defined (β π-DCPOβ Ξ΄) β is-defined (β π-DCPO {I} {Ξ±} Ξ΅) e = β-refl (β i κ I , is-defined (Ξ± i)) Ξ³ : (q : is-defined (β π-DCPO {I} {Ξ±} Ξ΅)) β value (β π-DCPOβ Ξ΄) q οΌ value (β π-DCPO {I} {Ξ±} Ξ΅) (β e β q) Ξ³ q = β₯β₯-rec (sethood π) goal q where goal : (Ξ£ i κ I , is-defined (Ξ± i)) β value (β π-DCPOβ Ξ΄) q οΌ value (β π-DCPO {I} {Ξ±} Ξ΅) (β e β q) goal (i , qα΅’) = value (β π-DCPOβ Ξ΄) q οΌβ¨ β¦ 1β¦ β© value (Ξ± i) qα΅’ οΌβ¨ β¦ 2β¦ β© β π Ξ΅' οΌβ¨ refl β© value (β π-DCPO {I} {Ξ±} Ξ΅) (β e β q) β where Ξ΅' : is-Directed π (family-in-dcpo Ξ±) Ξ΅' = family-in-dcpo-is-directed Ξ± Ξ΅ q β¦ 1β¦ = (οΌ-of-values-from-οΌ (family-defined-somewhere-sup-οΌ (sethood π) Ξ΄ i qα΅’)) β»ΒΉ β¦ 2β¦ = antisymmetry π (value (Ξ± i) qα΅’) (β π Ξ΅') β¦ β β¦ β¦ β‘β¦ where β¦ β β¦ : value (Ξ± i) qα΅’ ββ¨ π β© β π Ξ΅' β¦ β β¦ = β-is-upperbound π Ξ΅' (i , qα΅’) β¦ β‘β¦ : β π Ξ΅' ββ¨ π β© value (Ξ± i) qα΅’ β¦ β‘β¦ = β-is-lowerbound-of-upperbounds π Ξ΅' (value (Ξ± i) qα΅’) ub where ub : ((j , qβ±Ό) : Ξ£ i' κ I , is-defined (Ξ± i')) β value (Ξ± j) qβ±Ό ββ¨ π β© value (Ξ± i) qα΅’ ub (j , qβ±Ό) = οΌ-to-β π (οΌ-of-values-from-οΌ (lemma j qβ±Ό)) where lemma : (j : I) (qβ±Ό : is-defined (Ξ± j)) β Ξ± j οΌ Ξ± i lemma j qβ±Ό = β₯β₯-rec (lifting-of-set-is-set (sethood π)) claim (semidirected-if-Directed π-DCPOβ Ξ± Ξ΄ i j) where claim : (Ξ£ k κ I , (Ξ± i β' Ξ± k) Γ (Ξ± j β' Ξ± k)) β Ξ± j οΌ Ξ± i claim (k , u , v) = v qβ±Ό β (u qα΅’) β»ΒΉ π-continuity-lemma : (g : πD β βͺ π β«) β is-continuous π-DCPO (π β») g β is-continuous π-DCPOβ (π β») g π-continuity-lemma g g-cont = continuity-criterion' π-DCPOβ (π β») g g-mon lemma where g-mon : is-monotone π-DCPOβ (π β») g g-mon = π-monotone-lemma g (monotone-if-continuous π-DCPO (π β») (g , g-cont)) lemma : (I : π₯ Μ )(Ξ± : I β πD) (Ξ΄ : is-Directed π-DCPOβ Ξ±) β is-lowerbound-of-upperbounds (underlying-order (π β»)) (g (β π-DCPOβ Ξ΄)) (g β Ξ±) lemma I Ξ± Ξ΄ = transport T claim (sup-is-lowerbound-of-upperbounds (underlying-order (π β»)) (g-cont I Ξ± Ξ΅)) where T : πD β π₯ β π€' β π£' Μ T - = is-lowerbound-of-upperbounds (underlying-order (π β»)) (g -) (g β Ξ±) Ξ΅ : is-Directed π-DCPO Ξ± Ξ΅ = π-directed-lemma Ξ΄ claim : β π-DCPO {I} {Ξ±} Ξ΅ οΌ β π-DCPOβ {I} {Ξ±} Ξ΄ claim = (π-sup-lemma Ξ΄) β»ΒΉ fΜ-is-unique' : (g : πD β βͺ π β«) β is-continuous π-DCPO (π β») g β is-strict π-DCPOβ₯ π g β g β Ξ· οΌ f β g βΌ fΜ fΜ-is-unique' g g-cont = fΜ-is-unique g g-cont' where g-cont' : is-continuous (π-DCPO-on-set (sethood π)) (π β») g g-cont' = π-continuity-lemma g g-cont π-gives-the-free-pointed-dcpo-on-a-dcpo : β! h κ (βͺ π-DCPOβ₯ β« β βͺ π β«) , is-continuous (π-DCPOβ₯ β») (π β») h Γ is-strict π-DCPOβ₯ π h Γ (h β Ξ· οΌ f) π-gives-the-free-pointed-dcpo-on-a-dcpo = (fΜ , fΜ-is-continuous' , fΜ-is-strict' , (dfunext fe fΜ-after-Ξ·-is-f')) , Ξ³ where Ξ³ : is-central (Ξ£ h κ (βͺ π-DCPOβ₯ β« β βͺ π β«) , is-continuous (π-DCPOβ₯ β») (π β») h Γ is-strict π-DCPOβ₯ π h Γ (h β Ξ· οΌ f)) (fΜ , fΜ-is-continuous' , fΜ-is-strict' , dfunext fe fΜ-after-Ξ·-is-f') Ξ³ (g , cont , str , eq) = to-subtype-οΌ (Ξ» h β Γβ-is-prop (being-continuous-is-prop (π-DCPOβ₯ β») (π β») h) (being-strict-is-prop π-DCPOβ₯ π h) (equiv-to-prop (β-funext fe (h β Ξ·) f) (Ξ -is-prop fe (Ξ» _ β sethood (π β»))))) ((dfunext fe (fΜ-is-unique' g cont str eq)) β»ΒΉ) \end{code} Finally, we show that taking the free dcpo on a set X coincides with freely adding a least element to X when viewed as a discretely-ordered dcpo. This also follows abstractly from the fact that we can compose adjunctions, but we give a direct proof. \begin{code} module _ {X : π€ Μ } (X-is-set : is-set X) where XΜ : DCPO {π€} {π€} XΜ = (X , _οΌ_ , pa , Ξ³) where open PosetAxioms {π€} {π€} {X} _οΌ_ pa : poset-axioms pa = (X-is-set , (Ξ» x y β X-is-set) , (Ξ» x β refl) , (Ξ» x y z β _β_) , (Ξ» x y u v β u)) Ξ³ : is-directed-complete _οΌ_ Ξ³ I Ξ± Ξ΄ = β₯β₯-rec (having-sup-is-prop _οΌ_ pa Ξ±) lemma (inhabited-if-directed _οΌ_ Ξ± Ξ΄) where Ξ±-constant : (i j : I) β Ξ± i οΌ Ξ± j Ξ±-constant i j = β₯β₯-rec X-is-set h (semidirected-if-directed _οΌ_ Ξ± Ξ΄ i j) where h : (Ξ£ k κ I , (Ξ± i οΌ Ξ± k) Γ (Ξ± j οΌ Ξ± k)) β Ξ± i οΌ Ξ± j h (k , p , q) = p β q β»ΒΉ lemma : I β has-sup _οΌ_ Ξ± lemma i = (Ξ± i , ub , lb-of-ubs) where ub : (j : I) β Ξ± j οΌ Ξ± i ub j = Ξ±-constant j i lb-of-ubs : is-lowerbound-of-upperbounds _οΌ_ (Ξ± i) Ξ± lb-of-ubs y y-is-ub = y-is-ub i module _ where open freely-add-β₯ XΜ π-order-lemma-converse : {k l : π X} β k β l β k β' l π-order-lemma-converse {k} {l} k-below-l = β''-to-β' k-below-l open freely-add-β₯ liftings-coincide : π-DCPOβ₯ XΜ βα΅αΆα΅α΅β₯ π-DCPOβ₯-on-set X-is-set liftings-coincide = βα΅αΆα΅α΅-to-βα΅αΆα΅α΅β₯ (π-DCPOβ₯ XΜ) π-DCPOβ₯-X (id , id , (Ξ» _ β refl) , (Ξ» _ β refl) , contβ , contβ) where π-DCPOβ₯-X : DCPOβ₯ π-DCPOβ₯-X = π-DCPOβ₯-on-set X-is-set contβ : is-continuous (π-DCPOβ₯ XΜ β») (π-DCPOβ₯-X β») id contβ I Ξ± Ξ΄ = (ub , lb-of-ubs) where ub : (i : I) β Ξ± i β' β (π-DCPOβ₯ XΜ β») {I} {Ξ±} Ξ΄ ub i = (π-order-lemma-converse (β-is-upperbound (π-DCPOβ₯ XΜ β») {I} {Ξ±} Ξ΄ i)) lb-of-ubs : is-lowerbound-of-upperbounds _β'_ (β (π-DCPOβ₯ XΜ β») {I} {Ξ±} Ξ΄) Ξ± lb-of-ubs l l-is-ub = π-order-lemma-converse (β-is-lowerbound-of-upperbounds (π-DCPOβ₯ XΜ β») {I} {Ξ±} Ξ΄ l (Ξ» i β π-order-lemma XΜ (l-is-ub i))) contβ : is-continuous (π-DCPOβ₯-X β») (π-DCPOβ₯ XΜ β») id contβ = π-continuity-lemma XΜ (π-DCPOβ₯ XΜ) Ξ· (Ξ·-is-continuous XΜ) id (id-is-continuous (π-DCPOβ₯ XΜ β»)) \end{code}