Tom de Jong, 31 May 2024. (Following a suggestion by Martín Escardó.) We consider the large ordinal of small ordinals as a locally small algebraic dcpo which does not have a small basis (even impredicatively). \begin{code} {-# OPTIONS --safe --without-K #-} open import MLTT.Spartan open import UF.PropTrunc open import UF.Size open import UF.Univalence module DomainTheory.Examples.Ordinals (pt : propositional-truncations-exist) (ua : Univalence) (sr : Set-Replacement pt) (𝓤 : Universe) where open PropositionalTruncation pt open import MLTT.List open import UF.FunExt open import UF.Subsingletons open import UF.UA-FunExt private fe' : FunExt fe' = Univalence-gives-FunExt ua fe : Fun-Ext fe {𝓤} {𝓥} = fe' 𝓤 𝓥 pe' : PropExt pe' = Univalence-gives-PropExt ua pe : Prop-Ext pe {𝓤} = pe' 𝓤 open import DomainTheory.Basics.Dcpo pt fe 𝓤 hiding (⟨_⟩) open import DomainTheory.Basics.SupComplete pt fe 𝓤 open import DomainTheory.Basics.WayBelow pt fe 𝓤 open import DomainTheory.BasesAndContinuity.Bases pt fe 𝓤 open import DomainTheory.BasesAndContinuity.Continuity pt fe 𝓤 open import Ordinals.Arithmetic fe' open import Ordinals.AdditionProperties ua open import Ordinals.OrdinalOfOrdinals ua open import Ordinals.OrdinalOfOrdinalsSuprema ua open import Ordinals.Type open import Ordinals.Underlying open suprema pt sr \end{code} The ordinals in a given universe 𝓤 form a dcpo whose carrier lives in the successor universe 𝓤 ⁺. The ordinal relation lives in 𝓤, and so the dcpo of ordinals is large, but locally small. It has suprema for all families of ordinals indexed by types in 𝓤. \begin{code} Ordinals-DCPO : DCPO {𝓤 ⁺} {𝓤} Ordinals-DCPO = Ordinal 𝓤 , _⊴_ , (underlying-type-is-set fe' (OO 𝓤) , ⊴-is-prop-valued , (⊴-refl , ⊴-trans , ⊴-antisym)) , (λ I α δ → (sup α) , sup-is-least-upper-bound α) Ordinals-DCPO-is-sup-complete : is-sup-complete Ordinals-DCPO Ordinals-DCPO-is-sup-complete = record { ⋁ = sup ; ⋁-is-sup = sup-is-least-upper-bound } open sup-complete-dcpo Ordinals-DCPO Ordinals-DCPO-is-sup-complete \end{code} The dcpo of ordinals is algebraic. This follows from three facts: (1) Every ordinal α is equal to the supremum of the successors of its initial segments, i.e. α = sup (λ a → (α ↓ a) +ₒ 𝟙ₒ) (2) Every successor ordinal, i.e. every ordinal of the form β +ₒ 𝟙ₒ is compact. (3) The family in (1) can be "directified" by taking finite joins which preserves compactness. \begin{code} successor-ordinals-are-compact : (α : Ordinal 𝓤) → is-compact Ordinals-DCPO (α +ₒ 𝟙ₒ) successor-ordinals-are-compact α I β δ l = ∥∥-functor (λ (i , b , eq₂) → ⦅3⦆ (i , b , (eq₁ ∙ eq₂))) ⦅2⦆ where ⦅1⦆ : Σ s ꞉ ⟨ sup β ⟩ , α = sup β ↓ s ⦅1⦆ = ⊴-gives-≼ (α +ₒ 𝟙ₒ) (sup β) l α (successor-increasing α) s : ⟨ sup β ⟩ s = pr₁ ⦅1⦆ eq₁ : α = sup β ↓ s eq₁ = pr₂ ⦅1⦆ ⦅2⦆ : ∥ Σ i ꞉ I , Σ b ꞉ ⟨ β i ⟩ , sup β ↓ s = β i ↓ b ∥ ⦅2⦆ = initial-segment-of-sup-is-initial-segment-of-some-component β s ⦅3⦆ : (Σ i ꞉ I , Σ b ꞉ ⟨ β i ⟩ , α = β i ↓ b) → Σ i ꞉ I , (α +ₒ 𝟙ₒ) ⊴ β i ⦅3⦆ (i , b , refl) = i , upper-bound-of-successors-of-initial-segments (β i) b private module _ (α : Ordinal 𝓤) where family : ⟨ α ⟩ → Ordinal 𝓤 family a = (α ↓ a) +ₒ 𝟙ₒ Ordinals-DCPO-is-algebraic' : structurally-algebraic Ordinals-DCPO Ordinals-DCPO-is-algebraic' = record { index-of-compact-family = λ α → List ⟨ α ⟩ ; compact-family = λ α → directify (family α) ; compact-family-is-directed = λ α → directify-is-directed (family α) ; compact-family-is-compact = λ α → directify-is-compact (family α) (λ a → successor-ordinals-are-compact (α ↓ a)) ; compact-family-∐-= = eq } where eq : (α : Ordinal 𝓤) → ∐ Ordinals-DCPO (directify-is-directed (family α)) = α eq α = ∐ Ordinals-DCPO (directify-is-directed (family α)) =⟨ I ⟩ sup (family α) =⟨ II ⟩ α ∎ where II = (supremum-of-successors-of-initial-segments pt sr α) ⁻¹ I = sups-are-unique _⊴_ (poset-axioms-of-dcpo Ordinals-DCPO) (family α) (directify-sup' (family α) (∐ Ordinals-DCPO δ) (∐-is-sup Ordinals-DCPO δ)) (sup-is-least-upper-bound (family α)) where δ : is-Directed Ordinals-DCPO (directify (family α)) δ = directify-is-directed (family α) Ordinals-DCPO-is-algebraic : is-algebraic-dcpo Ordinals-DCPO Ordinals-DCPO-is-algebraic = ∣ Ordinals-DCPO-is-algebraic' ∣ \end{code} Unlike many other examples, such as the dpcos in the Scott model of PCF, or Scott's D∞, the dpco of ordinals, while algebraic, does not have a small (compact) basis. If it did, we could take the join of all the basis elements to obtain a greatest ordinal, which does not exist. \begin{code} Ordinals-DCPO-has-no-small-basis : ¬ (has-unspecified-small-basis Ordinals-DCPO) Ordinals-DCPO-has-no-small-basis h = no-greatest-ordinal (greatest-element-if-sup-complete-with-small-basis Ordinals-DCPO Ordinals-DCPO-is-sup-complete h) Ordinals-DCPO-has-no-small-compact-basis : ¬ (has-unspecified-small-compact-basis Ordinals-DCPO) Ordinals-DCPO-has-no-small-compact-basis h = Ordinals-DCPO-has-no-small-basis (∥∥-functor (λ (B , β , scb) → B , β , compact-basis-is-basis _ β scb) h) \end{code}