Misere combinatorial games.
@[irreducible]
A blocked end for player p: g is a p-end, and for every opponent move
gr, either gr is again a p blocked end, or else p has a move from gr
to a p blocked end. This is weaker than IsDeadEnd: every p dead end is a
p blocked end (isBlockedEnd_of_isDeadEnd), but not the other way around.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
MisereGames.Form.isBlockedEnd_def
{G : Type (u + 1)}
[Form G]
(p : Player)
(g : G)
:
IsBlockedEnd p g ↔ IsEnd p g ∧ ∀ gr ∈ moves (-p) g, IsBlockedEnd p gr ∨ ∃ (grl : G) (_ : grl ∈ moves p gr), IsBlockedEnd p grl
theorem
MisereGames.Form.isEnd_of_isBlockedEnd
{G : Type (u + 1)}
[Form G]
{g : G}
{p : Player}
(h1 : IsBlockedEnd p g)
:
IsEnd p g
theorem
MisereGames.Form.IsBlockedEnd.hereditary_def
{G : Type (u + 1)}
[Form G]
{g : G}
{p : Player}
(h1 : IsBlockedEnd p g)
(gr : G)
:
gr ∈ moves (-p) g → IsBlockedEnd p gr ∨ ∃ (grl : G) (_ : grl ∈ moves p gr), IsBlockedEnd p grl
@[simp]
theorem
MisereGames.Form.not_mem_moves_of_isBlockedEnd
{G : Type (u + 1)}
[Form G]
{g gp : G}
{p : Player}
(h1 : IsBlockedEnd p g)
:
gp ∉ moves p g
theorem
MisereGames.Form.isBlockedEnd_of_isDeadEnd
{G : Type (u + 1)}
[Form G]
{g : G}
{p : Player}
(h1 : IsDeadEnd p g)
:
IsBlockedEnd p g
A dead end is a blocked end.
theorem
MisereGames.Form.IsBlockedEnd.add
{G : Type (u + 1)}
[Form G]
{g h : G}
{p : Player}
(h1 : IsBlockedEnd p g)
(h2 : IsBlockedEnd p h)
:
IsBlockedEnd p (g + h)
@[simp]
theorem
MisereGames.Form.isBlockedEnd_zero
{G : Type (u + 1)}
[Form G]
{p : Player}
:
IsBlockedEnd p 0
theorem
MisereGames.Form.isBlockedEnd_right_nonneg_intCast
{G : Type (u + 1)}
[Form G]
(k : ℤ)
(h1 : k ≥ 0)
:
theorem
MisereGames.Form.isBlockedEnd_left_nonpos_intCast
{G : Type (u + 1)}
[Form G]
(k : ℤ)
(h1 : k ≤ 0)
:
@[irreducible]
A game is blocking if every end is a blocked end, hereditarily.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
MisereGames.Form.isBlockedEnd_of_isBlocking
{G : Type (u + 1)}
[Form G]
{g : G}
{p : Player}
(h1 : IsBlocking g)
(h2 : IsEnd p g)
:
IsBlockedEnd p g
theorem
MisereGames.Form.isBlocking_of_mem_moves
{G : Type (u + 1)}
[Form G]
{g h : G}
{p : Player}
(h1 : IsBlocking g)
(h2 : h ∈ moves p g)
:
theorem
MisereGames.Form.isBlocking_of_isOption
{G : Type (u + 1)}
[Form G]
{g g' : G}
(h1 : IsBlocking g)
(h2 : IsOption g' g)
:
IsBlocking g'
theorem
MisereGames.Form.isBlocking_of_isDeadEnding
{G : Type (u + 1)}
[Form G]
{g : G}
(h1 : IsDeadEnding g)
:
Every dead-ending game is blocking.
@[simp]
theorem
MisereGames.Form.IsBlocking.add
{G : Type (u + 1)}
[Form G]
{g h : G}
(h1 : IsBlocking g)
(h2 : IsBlocking h)
:
IsBlocking (g + h)
@[simp]
@[simp]
This is [Davies, Miller, Milley (Lemma 4.5 on p. 26)][davies:SumsPFreeForms:2025]