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.