Documentation

CombinatorialGames.SignExpansion.Simplicity

Simplicity relation #

We define the simplicity relation on sign sequences, i.e. the relation where x ≤ y iff x is an initial segment of y. In the literature, this is variously denoted as x ≤ₛ y or x ⊑ y. We also define supremum and infimum operators.

Implementation notes #

Sign sequences already have a linear ordering given by the lexicographic ordering. Since we can't define two separate PartialOrder instances on the same type, we instead create a type alias Simpllicity, and declare the simplicity ordering on that.

For Mathlib #

Type alias #

def Simplicity :
Type (u_1 + 1)

A type alias for SignExpansion, endowed with the simplicity ordering.

Equations
Instances For
    @[implicit_reducible]
    Equations
    @[simp]
    theorem Simplicity.of_val (x : Simplicity) :
    of (val x) = x
    @[simp]
    theorem Simplicity.val_of (x : SignExpansion) :
    val (of x) = x
    @[implicit_reducible]
    Equations
    @[simp]
    @[simp]
    @[implicit_reducible]
    Equations
    @[simp]
    theorem Simplicity.val_apply (x : Simplicity) (o : NatOrdinal) :
    (val x) o = x o
    @[simp]
    theorem Simplicity.of_apply (x : SignExpansion) (o : NatOrdinal) :
    (of x) o = x o
    @[simp]
    theorem Simplicity.coe_bot :
    = 0
    theorem Simplicity.ext {x y : Simplicity} (hxy : ∀ (o : NatOrdinal), x o = y o) :
    x = y
    theorem Simplicity.ext_iff {x y : Simplicity} :
    x = y ∀ (o : NatOrdinal), x o = y o
    def Simplicity.ind {motive : SimplicitySort u_1} (of : (a : SignExpansion) → motive (of a)) (a : Simplicity) :
    motive a

    A recursor for Simplicity. Use as cases x.

    Equations
    Instances For
      @[simp]
      theorem Simplicity.ind_of {motive : SimplicitySort u_2} {of : (a : SignExpansion) → motive (of a)} (a : SignExpansion) :

      Order instances #

      @[implicit_reducible]
      Equations
      • One or more equations did not get rendered due to their size.
      theorem Simplicity.apply_eq_of_le {x y : Simplicity} {o : NatOrdinal} (h : x y) (hx : x o 0) :
      x o = y o
      theorem Simplicity.le_iff_forall {x y : Simplicity} :
      x y ∀ (o : NatOrdinal), x o 0x o = y o
      theorem Simplicity.le_of_le_of_length_le {x y z : Simplicity} (hx : x z) (hy : y z) (h : (val x).length (val y).length) :
      x y
      theorem Simplicity.le_or_ge_of_le {x y z : Simplicity} (hx : x z) (hy : y z) :
      x y y x
      @[implicit_reducible]
      Equations

      Infimum #

      @[implicit_reducible]
      noncomputable instance Simplicity.instInfSet :
      Equations
      • One or more equations did not get rendered due to their size.
      theorem Simplicity.sInf_pair (x y : Simplicity) :
      sInf {x, y} = xy
      @[implicit_reducible]
      Equations
      • One or more equations did not get rendered due to their size.

      Supremum #

      @[implicit_reducible]
      noncomputable instance Simplicity.instSupSet :
      Equations
      • One or more equations did not get rendered due to their size.
      @[implicit_reducible]
      noncomputable instance Simplicity.instMax :
      Equations
      theorem Simplicity.sSup_pair (x y : Simplicity) :
      sSup {x, y} = xy
      theorem Simplicity.sup_comm (x y : Simplicity) :
      xy = yx
      theorem Simplicity.sup_of_le_right {x y : Simplicity} (h : x y) :
      xy = y
      theorem Simplicity.sup_of_le_left {x y : Simplicity} (h : y x) :
      xy = x
      @[implicit_reducible]
      Equations
      • One or more equations did not get rendered due to their size.
      @[implicit_reducible]
      Equations
      • One or more equations did not get rendered due to their size.

      Ordinals #