Ayberk Tosun, 12 September 2023 Split out from the `CompactRegular` module. \begin{code} {-# OPTIONS --safe --without-K --lossy-unification #-} open import MLTT.Spartan hiding (𝟚) open import UF.PropTrunc open import UF.FunExt open import UF.Size module Locales.ScottContinuity (pt : propositional-truncations-exist) (fe : Fun-Ext) (sr : Set-Replacement pt) where open import Locales.Frame pt fe open import Slice.Family open import UF.SubtypeClassifier open import UF.Logic open AllCombinators pt fe open PropositionalTruncation pt \end{code} \begin{code} ∨-is-scott-continuous : (F : Frame 𝓤 𝓥 𝓦) → (U : ⟨ F ⟩) → is-scott-continuous F F (λ - → U ∨[ F ] -) holds ∨-is-scott-continuous F U S dir = β , γ where open PosetNotation (poset-of F) using (_≤_) open PosetReasoning (poset-of F) open Joins _≤_ β : ((U ∨[ F ] (⋁[ F ] S)) is-an-upper-bound-of ⁅ U ∨[ F ] Sᵢ ∣ Sᵢ ε S ⁆) holds β i = ∨[ F ]-right-monotone (⋁[ F ]-upper S i) γ : (Ɐ (U′ , _) ꞉ upper-bound ⁅ U ∨[ F ] Sᵢ ∣ Sᵢ ε S ⁆ , ((U ∨[ F ] (⋁[ F ] S)) ≤ U′)) holds γ (u′ , p) = ∨[ F ]-least γ₁ γ₂ where δ₁ : index S → (U ≤ u′) holds δ₁ i = U ≤⟨ ∨[ F ]-upper₁ U (S [ i ]) ⟩ U ∨[ F ] (S [ i ]) ≤⟨ p i ⟩ u′ ■ γ₁ : (U ≤[ poset-of F ] u′) holds γ₁ = ∥∥-rec (holds-is-prop (U ≤[ poset-of F ] u′)) δ₁ (pr₁ dir) γ₂ : ((⋁[ F ] S) ≤[ poset-of F ] u′) holds γ₂ = ⋁[ F ]-least S (u′ , δ₂) where δ₂ : (u′ is-an-upper-bound-of S) holds δ₂ i = S [ i ] ≤⟨ ∨[ F ]-upper₂ U (S [ i ]) ⟩ U ∨[ F ] (S [ i ]) ≤⟨ p i ⟩ u′ ■ \end{code} \begin{code} ∨-is-scott-continuous-eq : (F : Frame 𝓤 𝓥 𝓦) → (U : ⟨ F ⟩) → (S : Fam 𝓦 ⟨ F ⟩) → is-directed F S holds → U ∨[ F ] (⋁[ F ] S) = ⋁[ F ] ⁅ U ∨[ F ] Sᵢ ∣ Sᵢ ε S ⁆ ∨-is-scott-continuous-eq F U S dir = ⋁[ F ]-unique ⁅ U ∨[ F ] Sᵢ ∣ Sᵢ ε S ⁆ (U ∨[ F ] (⋁[ F ] S)) (γ , δ) where γ = pr₁ ((∨-is-scott-continuous F U) S dir) δ = pr₂ ((∨-is-scott-continuous F U) S dir) \end{code}