Cantor Normal Form #
The Cantor normal form of an ordinal is generally defined as its base ω
expansion, with its
non-zero exponents in decreasing order. Here, we more generally define a base b
expansion
Ordinal.CNF
in this manner, which is well-behaved for any b ≥ 2
.
Implementation notes #
We implement Ordinal.CNF
as an association list, where keys are exponents and values are
coefficients. This is because this structure intrinsically reflects two key properties of the Cantor
normal form:
- It is ordered.
- It has finitely many entries.
Todo #
- Add API for the coefficients of the Cantor normal form.
- Prove the basic results relating the CNF to the arithmetic operations on ordinals.
Inducts on the base b
expansion of an ordinal.
Equations
- b.CNFRec H0 H o = if h : o = 0 then ⋯.mpr H0 else H o h (b.CNFRec H0 H (o % b ^ Ordinal.log b o))
Instances For
The Cantor normal form of an ordinal o
is the list of coefficients and exponents in the
base-b
expansion of o
.
We special-case CNF 0 o = CNF 1 o = [(0, o)]
for o ≠ 0
.
CNF b (b ^ u₁ * v₁ + b ^ u₂ * v₂) = [(u₁, v₁), (u₂, v₂)]
Equations
- Ordinal.CNF b o = b.CNFRec [] (fun (o : Ordinal.{u_1}) (_ho : o ≠ 0) (IH : List (Ordinal.{u_1} × Ordinal.{u_1})) => (Ordinal.log b o, o / b ^ Ordinal.log b o) :: IH) o
Instances For
Recursive definition for the Cantor normal form.
Evaluating the Cantor normal form of an ordinal returns the ordinal.
Every exponent in the Cantor normal form CNF b o
is less or equal to log b o
.
Every exponent in the Cantor normal form CNF b o
is less or equal to o
.
Every coefficient in a Cantor normal form is positive.
Every coefficient in the Cantor normal form CNF b o
is less than b
.
The exponents of the Cantor normal form are decreasing.