Martin Escardo, 1st September 2026.

The order notion of limit point, for contrast with the
topological notion of TypeTopology.LimitPoints. The two notions do not
agree, as the simple example below shows.

\begin{code}

{-# OPTIONS --safe --without-K #-}

open import MLTT.Spartan
open import UF.FunExt

module Ordinals.LimitPoints
        (fe : FunExt)
       where

open import CoNaturals.Type
open import Notation.CanonicalMap
open import Notation.Order
open import Ordinals.ToppedArithmetic fe
open import Ordinals.ToppedType fe
open import Ordinals.Type
open import Ordinals.Underlying
open import TypeTopology.LimitPoints
open import TypeTopology.SigmaDiscrete
open import UF.DiscreteAndSeparated

\end{code}

A point y of an ordinal α is the successor of x when x is below y and
nothing below y goes beyond x. An order limit point is a
point that is neither least nor a successor.

\begin{code}

is-successor-of : (α : Ordinal 𝓤)   α    α   𝓤 ̇
is-successor-of α x y = (y ≺⟨ α  x)
                      × ((z :  α )  z ≺⟨ α  x  z ≼⟨ α  y)

is-order-limit-point : (α : Ordinal 𝓤)   α   𝓤 ̇
is-order-limit-point α x = ¬ is-least α x
                         × ¬ (Σ y   α  , is-successor-of α x y)

\end{code}

The point (∞ , ι 1) of the compact ordinal ℕ∞ᵒ ×ᵒ ℕ∞ᵒ is a
topological limit point but not an order one.

\begin{code}

example-of-topological-limit-point-which-is-not-order-limit
 : Σ α  Ordinal 𝓤₀ ,
   Σ x   α  , is-limit-point x
               × ¬ is-order-limit-point α x
example-of-topological-limit-point-which-is-not-order-limit
 = α , x , I , III
 where
  α : Ordinal 𝓤₀
  α = [ ℕ∞ᵒ ×ᵒ ℕ∞ᵒ ]

  x y :  α 
  x = ( , ι 1)
  y = ( , ι 0)

  I : is-limit-point x
  I i = is-isolated-gives-is-isolated'  (×-isolated-left i)

  II : is-successor-of α x y
  II = II₀ , II₁
   where
    II₀ : y ≺⟨ [ ℕ∞ᵒ ×ᵒ ℕ∞ᵒ ]  x
    II₀  = inr (refl , ℕ-to-ℕ∞-≺-diagonal 0)

    II₁ : (w :  ℕ∞ᵒ ×ᵒ ℕ∞ᵒ )
        w ≺⟨ [ ℕ∞ᵒ ×ᵒ ℕ∞ᵒ ]  x
        w ≼⟨ [ ℕ∞ᵒ ×ᵒ ℕ∞ᵒ ]  y
    II₁ (c , d) (inl l)          (a , b) (inl m)
     = inl (≺-trans a c  m l)
    II₁ (c , d) (inl l)          (a , b) (inr (refl , _))
     = inl l
    II₁ (c , d) (inr (refl , l)) (a , b) (inl m)
     = inl m
    II₁ (c , d) (inr (refl , l)) (a , b) (inr (refl , n)) =
     𝟘-elim
      (nothing-is-below-0 b
        (transport (b ≺_) (anything-below-1-is-0 d l) n))

  III : ¬ is-order-limit-point α x
  III (nl , ns) = ns (y , II)

\end{code}