Dyadic numbers #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4. Dyadic numbers are obtained by localizing ℤ away from 2. They are the initial object in the category of rings with no 2-torsion.
Dyadic surreal numbers #
We construct dyadic surreal numbers using the canonical map from ℤ[2 ^ {-1}] to surreals.
As we currently do not have a ring structure on surreal
we construct this map explicitly. Once we
have the ring structure, this map can be constructed directly by sending 2 ^ {-1}
to half
.
Embeddings #
The above construction gives us an abelian group embedding of ℤ into surreal
. The goal is to
extend this to an embedding of dyadic rationals into surreal
and use Cauchy sequences of dyadic
rational numbers to construct an ordered field embedding of ℝ into surreal
.
For a natural number n
, the pre-game pow_half (n + 1)
is recursively defined as
{0 | pow_half n}
. These are the explicit expressions of powers of 1 / 2
. By definition, we have
pow_half 0 = 1
and pow_half 1 ≈ 1 / 2
and we prove later on that
pow_half (n + 1) + pow_half (n + 1) ≈ pow_half n
.
Equations
- pgame.pow_half (n + 1) = pgame.mk punit punit 0 (λ (_x : punit), pgame.pow_half n)
- pgame.pow_half 0 = 1
Equations
- pgame.unique_pow_half_left_moves n = n.cases_on punit.unique (λ (n : ℕ), punit.unique)
Equations
For all natural numbers n
, the pre-games pow_half n
are numeric.
Powers of the surreal number half
.
Equations
- surreal.pow_half n = ⟦⟨pgame.pow_half n, _⟩⟧
The additive monoid morphism dyadic_map
sends ⟦⟨m, 2^n⟩⟧ to m • half ^ n.
Equations
- surreal.dyadic_map = {to_fun := λ (x : localization.away 2), localization.lift_on x (λ (x : ℤ) (y : ↥(submonoid.powers 2)), x • surreal.pow_half (submonoid.log y)) surreal.dyadic_map._proof_1, map_zero' := surreal.dyadic_map._proof_2, map_add' := surreal.dyadic_map._proof_3}
We define dyadic surreals as the range of the map dyadic_map
.