Dyadic games #
A combinatorial game that is both Short
and Numeric
is called dyadic. We show that the dyadic
games are in correspondence with the Dyadic
rationals, in the sense that there exists a map
Dyadic.toIGame
such that:
Dyadic.toIGame x
is always a dyadic game.- For any dyadic game
y
, there existsx
withDyadic.toIGame x ≈ y
. - The game
Dyadic.toGame x
is equivalent to theRatCast
ofx
.
Future projects #
Since dyadic rationals are easy to do computations with, there are some projects we could pursue in the future:
- Define the birthday of a dyadic number computably, prove that
x.birthday = x.toIGame.birthday
. - Define the simplest dyadic number between two others computably, use that to define
IGame.toDyadic
.
Upper and lower dyadic fractions #
For a dyadic number m / n
, returns (m - 1) / n
.
Equations
- x.lower = Dyadic.mkRat (x.num - 1) ⋯
Instances For
For a dyadic number m / n
, returns (m + 1) / n
.
Equations
- x.upper = Dyadic.mkRat (x.num + 1) ⋯
Instances For
An auxiliary tactic for inducting on the denominator of a Dyadic
.
Equations
- Dyadic.tacticDyadic_wf = Lean.ParserDescr.node `Dyadic.tacticDyadic_wf 1024 (Lean.ParserDescr.nonReservedSymbol "dyadic_wf" false)
Instances For
Dyadic numbers to games #
Equations
- Dyadic.instCoeIGame = { coe := Dyadic.toIGame }
theorem
Dyadic.eq_upper_of_mem_rightMoves_toIGame
{x : Dyadic}
{y : IGame}
(h : y ∈ (↑x).rightMoves)
: