Natural operations on ω ^ x #
This file characterizes natural operations on powers of ω. In particular, we show:
- If
y < ω^ x, thenω^ x * n + y = of (ω ^ x.val * n + y.val). ω^ (x + y) = ω^ x * ω^ y.
These two results imply the validity of an algorithm to evaluate natural addition and
multiplication: write down the base ω Cantor Normal Forms of both ordinals, and add/multiply them
as polynomials.
Implementation notes #
Surreal exponentiation is not closed on the ordinals. Because of this, we opt against defining a
Pow instance on NatOrdinal. Instead, we implement our own custom typeclass Wpow, giving us
notation ω^ x for of (ω ^ x.val). This typeclass will get reused for IGame and Surreal in
CombinatorialGames.Surreal.Pow.
The ω-map, i.e. base ω exponentiation.
Conventions for notations in identifiers:
- The recommended spelling of
ω^in identifiers iswpow.
Equations
- «termω^_» = Lean.ParserDescr.node `«termω^_» 75 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "ω^ ") (Lean.ParserDescr.cat `term 75))
Instances For
Equations
- NatOrdinal.instWpow = { wpow := fun (x : NatOrdinal) => NatOrdinal.of (Ordinal.omega0 ^ NatOrdinal.val x) }
See wpow_mul_natCast_add_of_lt for a stronger version.
See wpow_add_of_lt for a stronger version.