Ordinals as games #
We define the canonical map Ordinal → SetTheory.PGame
, where every ordinal is mapped to the
game whose left set consists of all previous ordinals.
The map to surreals is defined in Ordinal.toSurreal
.
Main declarations #
Ordinal.toPGame
: The canonical map between ordinals and pre-games.Ordinal.toPGameEmbedding
: The order embedding version of the previous map.
@[irreducible]
Converts an ordinal into the corresponding pre-game.
Equations
- o.toPGame = SetTheory.PGame.mk o.toType PEmpty.{?u.2 + 1} (fun (x : o.toType) => (↑(o.enumIsoToType.symm x)).toPGame) PEmpty.elim
Instances For
theorem
Ordinal.toPGame_def
(o : Ordinal.{u_1})
:
o.toPGame = SetTheory.PGame.mk o.toType PEmpty.{u_1 + 1} (fun (x : o.toType) => (↑(o.enumIsoToType.symm x)).toPGame) PEmpty.elim
@[simp]
Equations
Equations
- ⋯ = ⋯
Converts an ordinal less than o
into a move for the PGame
corresponding to o
, and vice
versa.
Equations
- Ordinal.toLeftMovesToPGame = o.enumIsoToType.trans (Equiv.cast ⋯)
Instances For
@[simp]
theorem
Ordinal.toLeftMovesToPGame_symm_lt
{o : Ordinal.{u_1}}
(i : o.toPGame.LeftMoves)
:
↑(Ordinal.toLeftMovesToPGame.symm i) < o
theorem
Ordinal.toPGame_moveLeft_hEq
{o : Ordinal.{u_1}}
:
HEq o.toPGame.moveLeft fun (x : o.toType) => (↑(o.enumIsoToType.symm x)).toPGame
@[simp]
theorem
Ordinal.toPGame_moveLeft'
{o : Ordinal.{u_1}}
(i : o.toPGame.LeftMoves)
:
o.toPGame.moveLeft i = (↑(Ordinal.toLeftMovesToPGame.symm i)).toPGame
theorem
Ordinal.toPGame_moveLeft
{o : Ordinal.{u_1}}
(i : ↑(Set.Iio o))
:
o.toPGame.moveLeft (Ordinal.toLeftMovesToPGame i) = (↑i).toPGame
0.toPGame
has the same moves as 0
.
Instances For
@[simp]
@[simp]
theorem
Ordinal.to_leftMoves_one_toPGame_symm
(i : (Ordinal.toPGame 1).LeftMoves)
:
Ordinal.toLeftMovesToPGame.symm i = ⟨0, ⋯⟩
theorem
Ordinal.one_toPGame_moveLeft
(x : (Ordinal.toPGame 1).LeftMoves)
:
(Ordinal.toPGame 1).moveLeft x = Ordinal.toPGame 0
1.toPGame
has the same moves as 1
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
Ordinal.toPGame_lf
{a : Ordinal.{u_1}}
{b : Ordinal.{u_1}}
(h : a < b)
:
a.toPGame.LF b.toPGame
theorem
Ordinal.toPGame_le
{a : Ordinal.{u_1}}
{b : Ordinal.{u_1}}
(h : a ≤ b)
:
a.toPGame ≤ b.toPGame
theorem
Ordinal.toPGame_lt
{a : Ordinal.{u_1}}
{b : Ordinal.{u_1}}
(h : a < b)
:
a.toPGame < b.toPGame
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
The order embedding version of toPGame
.
Equations
- Ordinal.toPGameEmbedding = { toFun := Ordinal.toPGame, inj' := Ordinal.toPGame_injective, map_rel_iff' := @Ordinal.toPGame_le_iff }
Instances For
@[simp]
@[reducible, inline]
Converts an ordinal into the corresponding game.
Equations
- o.toGame = ⟦o.toPGame⟧
Instances For
@[irreducible]
The natural addition of ordinals corresponds to their sum as games.
@[irreducible]
The natural multiplication of ordinals corresponds to their product as pre-games.