Enumerating sets of ordinals by ordinals #
The ordinals have the peculiar property that every subset bounded above is a small type, while
themselves not being small. As a consequence of this, every unbounded subset of Ordinal is order
isomorphic to Ordinal.
We define this correspondence as enumOrd, and use it to then define an order isomorphism
enumOrdOrderIso.
This can be thought of as an ordinal analog of Nat.nth.
@[irreducible]
Enumerator function for an unbounded set of ordinals.
Equations
- Ordinal.enumOrd s o = sInf (s ∩ {b : Ordinal.{?u.3} | ∀ c < o, Ordinal.enumOrd s c < b})
Instances For
theorem
Ordinal.enumOrd_le_of_forall_lt
{o a : Ordinal.{u}}
{s : Set Ordinal.{u}}
(ha : a ∈ s)
(H : ∀ b < o, enumOrd s b < a)
:
theorem
Ordinal.enumOrd_succ_le
{a b : Ordinal.{u}}
{s : Set Ordinal.{u}}
(hs : ¬BddAbove s)
(ha : a ∈ s)
(hb : enumOrd s b < a)
:
theorem
Ordinal.enumOrd_surjective
{s : Set Ordinal.{u}}
(hs : ¬BddAbove s)
{b : Ordinal.{u}}
(hb : b ∈ s)
:
∃ (a : Ordinal.{u}), enumOrd s a = b
@[irreducible]
theorem
Ordinal.eq_enumOrd
{s : Set Ordinal.{u}}
(f : Ordinal.{u} → Ordinal.{u})
(hs : ¬BddAbove s)
:
A characterization of enumOrd: it is the unique strict monotonic function with range s.
An order isomorphism between an unbounded set of ordinals and the ordinals.
Equations
- Ordinal.enumOrdOrderIso s hs = StrictMono.orderIsoOfSurjective (fun (o : Ordinal.{?u.12}) => ⟨Ordinal.enumOrd s o, ⋯⟩) ⋯ ⋯