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
    @[instance_reducible]
    Equations
    @[simp]
    theorem Simplicity.of_val (x : Simplicity) :
    of (val x) = x
    @[simp]
    theorem Simplicity.val_of (x : SignExpansion) :
    val (of x) = x
    @[instance_reducible]
    Equations
    @[simp]
    @[simp]
    @[instance_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 : Simplicity → Sort 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 : Simplicity → Sort u_2} {of : (a : SignExpansion) → motive (of a)} (a : SignExpansion) :

      Order instances #

      @[instance_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 ≠ 0 → x 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
      @[instance_reducible]
      Equations

      Infimum #

      @[instance_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} = x ⊓ y
      @[instance_reducible]
      Equations
      • One or more equations did not get rendered due to their size.

      Supremum #

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

      Ordinals #