Documentation

LeanPool.MisereGames.Misere.DeadEnding

Misere combinatorial games.

@[irreducible]
def MisereGames.Form.IsDeadEnd {G : Type (u + 1)} [Form G] (p : Player) (g : G) :

A p-dead end is a p-end whose options are again p-dead ends.

Equations
Instances For
    theorem MisereGames.Form.isDeadEnd_def {G : Type (u + 1)} [Form G] (p : Player) (g : G) :
    IsDeadEnd p g IsEnd p g gpmoves (-p) g, IsDeadEnd p gp
    theorem MisereGames.Form.isEnd_of_isDeadEnd {G : Type (u + 1)} [Form G] {g : G} {p : Player} (h1 : IsDeadEnd p g) :
    IsEnd p g
    theorem MisereGames.Form.IsDeadEnd.hereditary_def {G : Type (u + 1)} [Form G] {g : G} {p : Player} (h1 : IsDeadEnd p g) (gp : G) :
    gp moves (-p) gIsDeadEnd p gp
    @[simp]
    theorem MisereGames.Form.not_mem_moves_of_isDeadEnd {G : Type (u + 1)} [Form G] {g gp : G} {p : Player} (h1 : IsDeadEnd p g) :
    gpmoves p g
    theorem MisereGames.Form.player_eq_neg_of_isDeadEnd_mem_moves {G : Type (u + 1)} [Form G] {g gp : G} {p1 p2 : Player} (h1 : IsDeadEnd p1 g) (h2 : gp moves p2 g) :
    p2 = -p1
    theorem MisereGames.Form.isDeadEnd_of_mem_moves {G : Type (u + 1)} [Form G] {g gp : G} {p1 p2 : Player} (h1 : IsDeadEnd p1 g) (h2 : gp moves p2 g) :
    IsDeadEnd p1 gp
    theorem MisereGames.Form.isDeadEnd_isOption {G : Type (u + 1)} [Form G] {p : Player} {g gp : G} (h1 : IsDeadEnd p g) (h2 : IsOption gp g) :
    gp moves (-p) g
    theorem MisereGames.Form.isDeadEnd_of_isOption {G : Type (u + 1)} [Form G] {g gp : G} {p : Player} (h1 : IsDeadEnd p g) (h2 : IsOption gp g) :
    theorem MisereGames.Form.IsDeadEnd.add {G : Type (u + 1)} [Form G] {g h : G} {p : Player} (h1 : IsDeadEnd p g) (h2 : IsDeadEnd p h) :
    IsDeadEnd p (g + h)
    @[simp]
    theorem MisereGames.Form.IsDeadEnd.neg_iff {G : Type (u + 1)} [Form G] {g : G} {p : Player} :
    theorem MisereGames.Form.isDeadEnd_zero {G : Type (u + 1)} [Form G] {p : Player} :
    theorem MisereGames.Form.isPFree_of_isDeadEnd {G : Type (u + 1)} [Form G] {g : G} {p : Player} (h1 : IsDeadEnd p g) :
    @[irreducible]
    def MisereGames.Form.IsDeadEnding {G : Type (u + 1)} [Form G] (g : G) :

    A form is dead-ending when all of its end options are dead ends, hereditarily.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[simp]
      theorem MisereGames.Form.isDeadEnd_of_isDeadEnding {G : Type (u + 1)} [Form G] {g : G} {p : Player} (h1 : IsDeadEnding g) (h2 : IsEnd p g) :
      theorem MisereGames.Form.isDeadEnding_of_mem_moves {G : Type (u + 1)} [Form G] {g h : G} {p : Player} (h1 : IsDeadEnding g) (h2 : h moves p g) :
      theorem MisereGames.Form.isDeadEnding_of_isOption {G : Type (u + 1)} [Form G] {g g' : G} (h1 : IsDeadEnding g) (h2 : IsOption g' g) :
      class MisereGames.Form.DeadEnding {G : Type (u + 1)} [Form G] (A : GProp) :

      A predicate whose members are dead-ending forms.

      Instances
        @[simp]
        theorem MisereGames.Form.DeadEnding.IsDeadEnding.add {G : Type (u + 1)} [Form G] {g h : G} (h1 : IsDeadEnding g) (h2 : IsDeadEnding h) :
        structure MisereGames.Form.DeadEnding.ShortDeadEnding {G : Type (u + 1)} [Form G] (g : G) :

        Forms that are both short and dead-ending.

        Instances For

          This is [Milley, Renault (Lemma 3 on p. 5)][milley:DeadEndsMisere:2013].

          This is [Milley, Renault (Lemma 3 on p. 5)][milley:DeadEndsMisere:2013].

          theorem MisereGames.Form.misereGE_iff_strong_of_isDeadEnd_left {G : Type (u + 1)} [Form G] {A IsAmbient : GProp} (h_promain : Promain IsAmbient A) {g h : G} (h_g_dead : IsDeadEnd Player.left g) (h_h_dead : IsDeadEnd Player.left h) (h_g : IsAmbient g) (h_h : IsAmbient h) :
          g ≥m A h (IsEndLike Player.right gStrong A h Player.right) grmoves Player.right g, hrmoves Player.right h, gr ≥m A hr

          For Left dead ends g and h (with A promain), comparison g ≥m A h reduces to the Right proviso plus maintenance of Right's moves.

          theorem MisereGames.Form.misereGE_iff_isEndLike_of_isDeadEnd_left {G : Type (u + 1)} [Form G] {A IsAmbient : GProp} (h_promain : Promain IsAmbient A) (hA_end : ∃ (x : G), A x IsEnd Player.left x IsEnd Player.right x) {g h : G} (h_g_dead : IsDeadEnd Player.left g) (h_h_dead : IsDeadEnd Player.left h) (h_g : IsAmbient g) (h_h : IsAmbient h) :
          g ≥m A h (IsEndLike Player.right gIsEndLike Player.right h) grmoves Player.right g, hrmoves Player.right h, gr ≥m A hr

          For Left dead ends, if A has a form that is an end for both players (such as 0), the Right proviso simplifies to Right end-like positions being preserved.

          This is one direction specialized to dead-ending of [Davies, Milley (Theorem 3.1 on p. 7)][davies:OrderInversesMonoid:2026]

          This is mirror of one direction specialized to dead-ending of [Davies, Milley (Theorem 3.1 on p. 7)][davies:OrderInversesMonoid:2026]