Documentation

CombinatorialGames.Surreal.Pow

Surreal exponentiation #

We define here the ω-map on games and on surreal numbers, representing exponentials with base ω.

Todo #

theorem Set.image2_eq_range {α : Type u_1} {β : Type u_2} {γ : Type u_3} (f : αβγ) (s : Set α) (t : Set β) :
image2 f s t = range fun (x : s × t) => f x.1 x.2
class Wpow (α : Type u_1) :
Type u_1

A typeclass for the the ω^ notation.

  • wpow : αα
Instances
    theorem IGame.wpow_def (x : IGame) :
    ω^ x = {insert 0 (Set.image2 (fun (r : Dyadic) (y : IGame) => r * ω^ y) (Set.Ioi 0) x.leftMoves) | Set.image2 (fun (r : Dyadic) (y : IGame) => r * ω^ y) (Set.Ioi 0) x.rightMoves}ᴵ
    theorem IGame.leftMoves_wpow (x : IGame) :
    (ω^ x).leftMoves = insert 0 (Set.image2 (fun (r : Dyadic) (y : IGame) => r * ω^ y) (Set.Ioi 0) x.leftMoves)
    theorem IGame.rightMoves_wpow (x : IGame) :
    (ω^ x).rightMoves = Set.image2 (fun (r : Dyadic) (y : IGame) => r * ω^ y) (Set.Ioi 0) x.rightMoves
    @[simp]
    theorem IGame.forall_leftMoves_wpow {x : IGame} {P : IGameProp} :
    (∀ y(ω^ x).leftMoves, P y) P 0 ∀ (r : Dyadic), 0 < ryx.leftMoves, P (r * ω^ y)
    @[simp]
    theorem IGame.forall_rightMoves_wpow {x : IGame} {P : IGameProp} :
    (∀ y(ω^ x).rightMoves, P y) ∀ (r : Dyadic), 0 < ryx.rightMoves, P (r * ω^ y)
    @[simp]
    theorem IGame.exists_leftMoves_wpow {x : IGame} {P : IGameProp} :
    (∃ y(ω^ x).leftMoves, P y) P 0 ∃ (r : Dyadic), 0 < r yx.leftMoves, P (r * ω^ y)
    @[simp]
    theorem IGame.exists_rightMoves_wpow {x : IGame} {P : IGameProp} :
    (∃ y(ω^ x).rightMoves, P y) ∃ (r : Dyadic), 0 < r yx.rightMoves, P (r * ω^ y)
    theorem IGame.mul_wpow_mem_leftMoves_wpow {x y : IGame} {r : Dyadic} (hr : 0 r) (hy : y x.leftMoves) :
    r * ω^ y (ω^ x).leftMoves
    theorem IGame.mul_wpow_mem_rightMoves_wpow {x y : IGame} {r : Dyadic} (hr : 0 < r) (hy : y x.rightMoves) :
    r * ω^ y (ω^ x).rightMoves
    theorem IGame.natCast_mul_wpow_mem_rightMoves_wpow {x y : IGame} {n : } (hn : 0 < n) (hy : y x.rightMoves) :
    n * ω^ y (ω^ x).rightMoves
    @[simp]
    theorem IGame.wpow_zero :
    ω^ 0 = 1
    @[irreducible]
    instance IGame.Numeric.wpow (x : IGame) [x.Numeric] :
    @[simp]
    theorem IGame.Numeric.wpow_pos (x : IGame) [x.Numeric] :
    0 < ω^ x
    theorem IGame.Numeric.mul_wpow_lt_wpow {x y : IGame} [x.Numeric] [y.Numeric] (r : ) (h : x < y) :
    r * ω^ x < ω^ y
    theorem IGame.Numeric.mul_wpow_lt_wpow' {x y : IGame} [x.Numeric] [y.Numeric] (r : Dyadic) (h : x < y) :
    r * ω^ x < ω^ y

    A version of mul_wpow_lt_wpow stated using dyadic rationals.

    theorem IGame.Numeric.wpow_lt_mul_wpow {x y : IGame} [x.Numeric] [y.Numeric] {r : } (hr : 0 < r) (h : x < y) :
    ω^ x < r * ω^ y
    theorem IGame.Numeric.wpow_lt_mul_wpow' {x y : IGame} [x.Numeric] [y.Numeric] {r : Dyadic} (hr : 0 < r) (h : x < y) :
    ω^ x < r * ω^ y

    A version of wpow_lt_mul_wpow stated using dyadic rationals.

    theorem IGame.Numeric.mul_wpow_lt_mul_wpow {x y : IGame} [x.Numeric] [y.Numeric] (r : ) {s : } (hs : 0 < s) (h : x < y) :
    r * ω^ x < s * ω^ y
    theorem IGame.Numeric.mul_wpow_lt_mul_wpow' {x y : IGame} [x.Numeric] [y.Numeric] (r : Dyadic) {s : Dyadic} (hs : 0 < s) (h : x < y) :
    r * ω^ x < s * ω^ y

    A version of mul_wpow_lt_mul_wpow stated using dyadic rationals.

    theorem IGame.Numeric.mul_wpow_add_mul_wpow_lt_mul_wpow {x y z : IGame} [x.Numeric] [y.Numeric] [z.Numeric] (r s : ) {t : } (ht : 0 < t) (hx : x < z) (hy : y < z) :
    r * ω^ x + s * ω^ y < t * ω^ z
    theorem IGame.Numeric.mul_wpow_add_mul_wpow_lt_mul_wpow' {x y z : IGame} [x.Numeric] [y.Numeric] [z.Numeric] (r s : Dyadic) {t : Dyadic} (ht : 0 < t) (hx : x < z) (hy : y < z) :
    r * ω^ x + s * ω^ y < t * ω^ z

    A version of mul_wpow_add_mul_wpow_lt_mul_wpow stated using dyadic rationals.

    theorem IGame.Numeric.mul_wpow_lt_mul_wpow_add_mul_wpow {x y z : IGame} [x.Numeric] [y.Numeric] [z.Numeric] (r : ) {s t : } (hs : 0 < s) (ht : 0 < t) (hx : x < y) (hy : x < z) :
    r * ω^ x < s * ω^ y + t * ω^ z
    theorem IGame.Numeric.mul_wpow_lt_mul_wpow_add_mul_wpow' {x y z : IGame} [x.Numeric] [y.Numeric] [z.Numeric] (r : Dyadic) {s t : Dyadic} (hs : 0 < s) (ht : 0 < t) (hx : x < y) (hy : x < z) :
    r * ω^ x < s * ω^ y + t * ω^ z

    A version of mul_wpow_lt_mul_wpow_add_mul_wpow stated using dyadic rationals.

    @[simp]
    theorem IGame.Numeric.wpow_lt_wpow {x y : IGame} [x.Numeric] [y.Numeric] :
    ω^ x < ω^ y x < y
    @[simp]
    theorem IGame.Numeric.wpow_le_wpow {x y : IGame} [x.Numeric] [y.Numeric] :
    ω^ x ω^ y x y
    theorem IGame.Numeric.wpow_congr {x y : IGame} [x.Numeric] [y.Numeric] (h : xy) :
    ω^ xω^ y
    @[irreducible]
    theorem IGame.Numeric.wpow_add_equiv (x y : IGame) [x.Numeric] [y.Numeric] :
    ω^ (x + y) ≈ ω^ x * ω^ y
    theorem IGame.Numeric.wpow_sub_equiv (x y : IGame) [x.Numeric] [y.Numeric] :
    ω^ (x - y) ≈ ω^ x / ω^ y
    @[simp]
    theorem Surreal.mk_wpow (x : IGame) [x.Numeric] :
    mk (ω^ x) = ω^ mk x
    @[simp]
    theorem Surreal.wpow_zero :
    ω^ 0 = 1
    @[simp]
    theorem Surreal.wpow_pos (x : Surreal) :
    0 < ω^ x
    @[simp]
    theorem Surreal.wpow_lt_wpow {x y : Surreal} :
    ω^ x < ω^ y x < y
    @[simp]
    theorem Surreal.wpow_le_wpow {x y : Surreal} :
    ω^ x ω^ y x y
    @[simp]
    theorem Surreal.wpow_inj {x y : Surreal} :
    ω^ x = ω^ y x = y
    @[simp]
    theorem Surreal.wpow_add (x y : Surreal) :
    ω^ (x + y) = ω^ x * ω^ y
    @[simp]
    theorem Surreal.wpow_neg (x : Surreal) :
    @[simp]
    theorem Surreal.wpow_sub (x y : Surreal) :
    ω^ (x - y) = ω^ x / ω^ y