Surreal exponentiation #
We define here the ω-map on games and on surreal numbers, representing exponentials with base ω.
Among other things, we prove that every non-zero surreal number is commensurate to some unique
ω^ x. We express this using ArchimedeanClass. There's two important things to note:
- The definition of
ArchimedeanClassinvolves absolute values, such that e.g.-ωis commensurate toω. - The order in
ArchimedeanClassis defined so that the equivalence class of0is the largest equivalence class, rather than the smallest.
Todo #
- Define the normal form of a surreal number.
For Mathlib #
@[irreducible]
theorem
IGame.toIGame_wpow_equiv
(x : NatOrdinal)
:
NatOrdinal.toIGame (ω^ x) ≈ ω^ NatOrdinal.toIGame x
Equations
- Surreal.instWpow = { wpow := Quotient.lift (fun (x : Subtype IGame.Numeric) => Surreal.mk (ω^ ↑x)) Surreal.instWpow._proof_2 }
Archimedean classes #
@[simp]
@[simp]
theorem
Surreal.instNumericValIGameMemSetInterMovesLeftIoiOfNat
(x : IGame)
[x.Numeric]
(y : ↑(IGame.moves Player.left x ∩ Set.Ioi 0))
:
(↑y).Numeric
theorem
Surreal.exists_mk_wpow_eq
{x : Surreal}
(h : x ≠ 0)
:
∃ (y : Surreal), ArchimedeanClass.mk (ω^ y) = ArchimedeanClass.mk x
Every non-zero surreal is commensurate to some ω^ x.
ω-logarithm #
Returns an arbitrary representative for Surreal.wlog.
Instances For
@[simp]
theorem
Surreal.wlog_eq_of_mk_eq_mk
{x y : Surreal}
(h : ArchimedeanClass.mk (ω^ y) = ArchimedeanClass.mk x)
:
@[simp]
theorem
Surreal.numeric_of_forall_mk_ne_mk
{x : IGame}
[x.Numeric]
(h : 0 < x)
(Hl :
∀ (y : IGame) (hy : y ∈ IGame.moves Player.left x), 0 < y → ArchimedeanClass.mk (mk y) ≠ ArchimedeanClass.mk (mk x))
(Hr : ∀ (y : IGame) (hy : y ∈ IGame.moves Player.right x), ArchimedeanClass.mk (mk y) ≠ ArchimedeanClass.mk (mk x))
:
!{IGame.wlog '' {y : IGame | y ∈ IGame.moves Player.left x ∧ 0 < y} | IGame.wlog '' IGame.moves Player.right x}.Numeric
theorem
Surreal.wpow_equiv_of_forall_mk_ne_mk
{x : IGame}
[x.Numeric]
(h : 0 < x)
(Hl :
∀ (y : IGame) (hy : y ∈ IGame.moves Player.left x), 0 < y → ArchimedeanClass.mk (mk y) ≠ ArchimedeanClass.mk (mk x))
(Hr : ∀ (y : IGame) (hy : y ∈ IGame.moves Player.right x), ArchimedeanClass.mk (mk y) ≠ ArchimedeanClass.mk (mk x))
:
ω^ !{IGame.wlog '' {y : IGame | y ∈ IGame.moves Player.left x ∧ 0 < y} | IGame.wlog '' IGame.moves Player.right x} ≈ x
theorem
Surreal.mem_range_wpow_of_forall_mk_ne_mk
{x : IGame}
[x.Numeric]
(h : 0 < x)
(Hl :
∀ (y : IGame) (hy : y ∈ IGame.moves Player.left x), 0 < y → ArchimedeanClass.mk (mk y) ≠ ArchimedeanClass.mk (mk x))
(Hr : ∀ (y : IGame) (hy : y ∈ IGame.moves Player.right x), ArchimedeanClass.mk (mk y) ≠ ArchimedeanClass.mk (mk x))
:
A game not commensurate with its positive options is a power of ω.
@[simp]