Finite nimber arithmetic #
This file defines the type alias NatNimber of the natural numbers, endowed with nimber arithmetic.
The goal is to define the field structure computably, and prove that it matches that on Nimber.
Equations
Equations
Equations
Equations
Equations
Equations
def
NatNimber.ind
{motive✝ : NatNimber → Sort u_1}
(mk : (a : ℕ) → motive✝ (of a))
(a✝ : NatNimber)
:
motive✝ a✝
A recursor for NatNimber. Use as induction x.
Equations
- NatNimber.ind mk a✝ = mk (NatNimber.val a✝)
Instances For
Equations
- NatNimber.instToExpr = { toExpr := fun (x : NatNimber) => (Lean.Expr.const `NatNimber.of []).app (Lean.toExpr (NatNimber.val x)), toTypeExpr := Lean.Expr.const `NatNimber [] }
Equations
- NatNimber.instToString = { toString := fun (x : NatNimber) => "∗" ++ (NatNimber.val x).repr }
The embedding NatNimber ↪o Nimber.
Equations
- NatNimber.toNimber = { toFun := fun (x : NatNimber) => Nimber.of ↑(NatNimber.val x), inj' := NatNimber.toNimber._proof_1, map_rel_iff' := NatNimber.toNimber._proof_2 }
Instances For
Equations
- NatNimber.instNeg = { neg := fun (n : NatNimber) => n }
Equations
- NatNimber.instAdd = { add := fun (m n : NatNimber) => NatNimber.of (NatNimber.val m ^^^ NatNimber.val n) }
Equations
- NatNimber.instMul = { mul := fun (x y : NatNimber) => NatNimber.mul✝ (max (NatNimber.val x).log2.log2 (NatNimber.val y).log2.log2 + 1) x y }