Documentation

CombinatorialGames.Nimber.SimplestExtension.Algebraic

Nimbers are algebraically closed #

This file aims to prove the last part of the simplest extension theorem (see CombinatorialGames.Nimber.SimplestExtension.Basic), and to deduce, as a corollary, that the nimbers are algebraically closed.

n-th degree closed fields #

structure Nimber.IsNthDegreeClosed (n : ) (x : Nimber) extends x.IsRing :

A nimber x is n-th degree closed when IsRing x, and every non-constant polynomial in the nimbers with degree less or equal to n and coefficients less than x has a root that's less than x. Note that 0 and 1 are n-th degree closed under this definition.

We don't extend IsField x, as for 1 ≤ n, this predicate implies it.

For simplicity, the constructor takes a 0 < p.degree assumption. The theorem IsNthDegreeClosed.exists_root proves that this theorem applies (vacuously) when p = 0 as well.

Instances For
    theorem Nimber.isNthDegreeClosed_iff (n : ) (x : Nimber) :
    IsNthDegreeClosed n x x.IsRing ∀ ⦃p : Polynomial Nimber⦄, 0 < p.degreep.degree n(∀ (k : ), p.coeff k < x)r < x, p.IsRoot r
    theorem Nimber.IsNthDegreeClosed.exists_root {n : } {x : Nimber} (h : IsNthDegreeClosed n x) {p : Polynomial Nimber} (hp₀ : p.degree 0) (hpn : p.degree n) (hp : ∀ (k : ), p.coeff k < x) :
    r < x, p.IsRoot r
    theorem Nimber.IsNthDegreeClosed.le {m n : } {x : Nimber} (h : IsNthDegreeClosed n x) (hmn : m n) :
    theorem Nimber.IsNthDegreeClosed.iSup {n : } {ι : Sort u_1} {f : ιNimber} (H : ∀ (i : ι), IsNthDegreeClosed n (f i)) :
    IsNthDegreeClosed n (⨆ (i : ι), f i)
    theorem Nimber.IsNthDegreeClosed.ofMonic {n : } {x : Nimber} (h : x.IsField) (hp : ∀ (p : Polynomial Nimber), p.Monic0 < p.degreep.degree n(∀ (k : ), p.coeff k < x)r < x, p.IsRoot r) :

    If x is a field, to prove it n-th degree closed, it suffices to check monic polynomials of degree less or equal to n.

    theorem Nimber.IsField.sSup {s : Set Nimber} (H : xs, x.IsField) :
    theorem Nimber.IsField.iSup {ι : Sort u_1} {f : ιNimber} (H : ∀ (i : ι), (f i).IsField) :
    (⨆ (i : ι), f i).IsField

    Algebraically closed fields #

    structure Nimber.IsAlgClosed (x : Nimber) extends x.IsRing :

    A nimber x is algebraically closed when IsRing x, and every non-constant polynomial in the nimbers with coefficients less than x has a root that's less than x. Note that 0 and 1 are algebraically closed under this definition.

    For simplicity, the constructor takes a 0 < p.degree assumption. The theorem IsAlgClosed.exists_root proves that this theorem applies (vacuously) when p = 0 as well.

    Instances For
      theorem Nimber.isAlgClosed_iff (x : Nimber) :
      x.IsAlgClosed x.IsRing ∀ ⦃p : Polynomial Nimber⦄, 0 < p.degree(∀ (k : ), p.coeff k < x)r < x, p.IsRoot r
      theorem Nimber.IsAlgClosed.exists_root {x : Nimber} (h : x.IsAlgClosed) {p : Polynomial Nimber} (hp₀ : p.degree 0) (hp : ∀ (n : ), p.coeff n < x) :
      r < x, p.IsRoot r
      theorem Nimber.IsAlgClosed.sSup {s : Set Nimber} (H : xs, x.IsAlgClosed) :
      theorem Nimber.IsAlgClosed.iSup {ι : Sort u_1} {f : ιNimber} (H : ∀ (i : ι), (f i).IsAlgClosed) :
      (⨆ (i : ι), f i).IsAlgClosed
      theorem Nimber.IsAlgClosed.ofMonic {x : Nimber} (h : x.IsField) (hp : ∀ (p : Polynomial Nimber), p.Monic0 < p.degree(∀ (k : ), p.coeff k < x)r < x, p.IsRoot r) :

      If x is a field, to prove it algebraically closed, it suffices to check monic polynomials.