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
@[deprecated "No deprecation message was provided." (since := "2024-09-20")]
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)
:
enumOrd s (Order.succ 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
.
noncomputable def
Ordinal.enumOrdOrderIso
(s : Set Ordinal.{u_1})
(hs : ¬BddAbove s)
:
Ordinal.{u_1} ≃o ↑s
An order isomorphism between an unbounded set of ordinals and the ordinals.
Equations
- Ordinal.enumOrdOrderIso s hs = StrictMono.orderIsoOfSurjective (fun (o : Ordinal.{?u.17}) => ⟨Ordinal.enumOrd s o, ⋯⟩) ⋯ ⋯