Documentation

Mathlib.SetTheory.Game.Ordinal

Ordinals as games #

We define the canonical map OrdinalSetTheory.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 #

@[irreducible]

Converts an ordinal into the corresponding pre-game.

Equations
Instances For
    @[deprecated "No deprecation message was provided." (since := "2024-09-22")]
    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]
    theorem Ordinal.toPGame_leftMoves (o : Ordinal.{u_1}) :
    o.toPGame.LeftMoves = o.toType
    @[simp]
    theorem Ordinal.toPGame_rightMoves (o : Ordinal.{u_1}) :
    o.toPGame.RightMoves = PEmpty.{u_1 + 1}
    noncomputable def Ordinal.toLeftMovesToPGame {o : Ordinal.{u_1}} :
    (Set.Iio o) o.toPGame.LeftMoves

    Converts an ordinal less than o into a move for the PGame corresponding to o, and vice versa.

    Equations
    Instances For
      @[simp]
      theorem Ordinal.toLeftMovesToPGame_symm_lt {o : Ordinal.{u_1}} (i : o.toPGame.LeftMoves) :
      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
      noncomputable def Ordinal.zeroToPGameRelabelling :
      (Ordinal.toPGame 0).Relabelling 0

      0.toPGame has the same moves as 0.

      Equations
      Instances For
        @[simp]
        theorem Ordinal.one_toPGame_leftMoves_default_eq :
        default = Ordinal.toLeftMovesToPGame 0,
        @[simp]
        noncomputable def Ordinal.oneToPGameRelabelling :
        (Ordinal.toPGame 1).Relabelling 1

        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 b : Ordinal.{u_1}} (h : a < b) :
          a.toPGame.LF b.toPGame
          theorem Ordinal.toPGame_le {a b : Ordinal.{u_1}} (h : a b) :
          a.toPGame b.toPGame
          theorem Ordinal.toPGame_lt {a b : Ordinal.{u_1}} (h : a < b) :
          a.toPGame < b.toPGame
          @[simp]
          theorem Ordinal.toPGame_lf_iff {a b : Ordinal.{u_1}} :
          a.toPGame.LF b.toPGame a < b
          @[simp]
          theorem Ordinal.toPGame_le_iff {a b : Ordinal.{u_1}} :
          a.toPGame b.toPGame a b
          @[simp]
          theorem Ordinal.toPGame_lt_iff {a b : Ordinal.{u_1}} :
          a.toPGame < b.toPGame a < b
          @[simp]
          theorem Ordinal.toPGame_equiv_iff {a b : Ordinal.{u_1}} :
          a.toPGame b.toPGame a = b
          @[simp]
          theorem Ordinal.toPGame_inj {a b : Ordinal.{u_1}} :
          a.toPGame = b.toPGame a = b
          @[deprecated Ordinal.toPGame_inj (since := "2024-12-29")]
          theorem Ordinal.toPGame_eq_iff {a b : Ordinal.{u_1}} :
          a.toPGame = b.toPGame a = b

          Alias of Ordinal.toPGame_inj.

          The order embedding version of toPGame.

          Equations
          Instances For

            Converts an ordinal into the corresponding game.

            Equations
            Instances For
              @[simp]
              theorem Ordinal.mk_toPGame (o : Ordinal.{u_1}) :
              o.toPGame = Ordinal.toGame o
              @[deprecated Ordinal.toGame (since := "2024-11-23")]

              Alias of Ordinal.toGame.


              Converts an ordinal into the corresponding game.

              Equations
              Instances For
                @[deprecated Ordinal.toGame_inj (since := "2024-12-29")]

                Alias of Ordinal.toGame_inj.

                @[irreducible]
                theorem Ordinal.toPGame_nadd (a b : Ordinal.{u_1}) :
                (a.nadd b).toPGame a.toPGame + b.toPGame

                The natural addition of ordinals corresponds to their sum as games.

                @[irreducible]
                theorem Ordinal.toPGame_nmul (a b : Ordinal.{u_1}) :
                (a.nmul b).toPGame a.toPGame * b.toPGame

                The natural multiplication of ordinals corresponds to their product as pre-games.

                theorem Ordinal.toGame_nmul (a b : Ordinal.{u_1}) :
                Ordinal.toGame (a.nmul b) = a.toPGame * b.toPGame
                @[simp]
                theorem Ordinal.toGame_natCast (n : ) :
                Ordinal.toGame n = n
                theorem Ordinal.toPGame_natCast (n : ) :
                (↑n).toPGame n