Documentation

LeanPool.MisereGames.Form.Short

Misere combinatorial games.

Short games #

A combinatorial game is Short if it is finite and loopfree: it has only finite many distinct subpositions, and every run has finite length. See [Siegel, Definition 4.1 on p. 34][siegel:CombinatorialGameTheory:2013].

@[irreducible]
def MisereGames.Form.IsShort {G : Type (u + 1)} [Form G] (x : G) :

Short forms have finitely many options, all of which are short.

Equations
Instances For
    theorem MisereGames.Form.short_def {G : Type (u + 1)} [Form G] {x : G} :
    IsShort x ∀ (p : Player), (moves p x).Finite ymoves p x, IsShort y
    theorem MisereGames.Form.Short.mk {G : Type (u + 1)} [Form G] {x : G} :
    (∀ (p : Player), (moves p x).Finite ymoves p x, IsShort y)IsShort x

    Alias of the reverse direction of MisereGames.Form.short_def.

    theorem MisereGames.Form.Short.finite_moves {G : Type (u + 1)} [Form G] (p : Player) {x : G} (hx : IsShort x) :
    theorem MisereGames.Form.Short.finite_moves' {G : Type (u + 1)} [Form G] (p : Player) {x : G} (hx : IsShort x) :
    Finite (moves p x)
    theorem MisereGames.Form.Short.finite_setOf_isOption {G : Type (u + 1)} [Form G] {x : G} (hx : IsShort x) :
    theorem MisereGames.Form.Short.of_mem_moves {G : Type (u + 1)} [Form G] {x y : G} (hx : IsShort x) {p : Player} (hy : y moves p x) :
    theorem MisereGames.Form.Short.isOption {G : Type (u + 1)} [Form G] {x y : G} (hx : IsShort x) (h : IsOption y x) :
    theorem MisereGames.Form.Short.subposition {G : Type (u + 1)} [Form G] {x y : G} (hx : IsShort x) (h : Subposition y x) :
    theorem MisereGames.Form.Short.add {G : Type (u + 1)} [Form G] {x y : G} (hx : IsShort x) (hy : IsShort y) :
    IsShort (x + y)
    theorem MisereGames.Form.Short.neg {G : Type (u + 1)} [Form G] {x : G} (hx : IsShort x) :
    theorem MisereGames.Form.Short.neg_iff {G : Type (u + 1)} [Form G] {x : G} :
    @[simp]
    theorem MisereGames.Form.Short.zero {G : Type (u + 1)} [Form G] :
    theorem MisereGames.Form.Short.ofSets {G : Type (u + 1)} [Form G] {s t : Set G} [Small.{u, u + 1} s] [Small.{u, u + 1} t] (hs_fin : s.Finite) (hs_short : gs, IsShort g) (ht_fin : t.Finite) (ht_short : gt, IsShort g) :
    IsShort !{s | t}
    @[simp]
    theorem MisereGames.Form.Short.star {G : Type (u + 1)} [Form G] :
    IsShort !{{0} | {0}}
    @[simp]
    theorem MisereGames.Form.Short.one {G : Type (u + 1)} [Form G] :
    theorem MisereGames.Form.Short.sub {x y : GameForm} (hx : IsShort x) (hy : IsShort y) :
    IsShort (x - y)
    @[simp]
    theorem MisereGames.Form.Short.natCast {G : Type (u + 1)} [Form G] (n : ) :
    IsShort n
    @[simp]
    theorem MisereGames.Form.Short.ofNat {G : Type (u + 1)} [Form G] (n : ) [n.AtLeastTwo] :
    @[simp]
    theorem MisereGames.Form.Short.intCast {G : Type (u + 1)} [Form G] (n : ) :
    IsShort n