@[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
- Form.IsBlockedEnd p g = (Form.IsEnd p g ∧ ∀ gr ∈ Moves.moves (-p) g, Form.IsBlockedEnd p gr ∨ ∃ (grl : G) (_ : grl ∈ Moves.moves p gr), Form.IsBlockedEnd p grl)
Instances For
theorem
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
Form.isEnd_of_isBlockedEnd
{G : Type (u + 1)}
[Form G]
{g : G}
{p : Player}
(h1 : IsBlockedEnd p g)
:
IsEnd p g
theorem
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
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
@[irreducible]
theorem
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.
@[irreducible]
theorem
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]
@[simp]
@[simp]
@[simp]
@[simp]
@[irreducible]
A game is blocking if every end is a blocked end, hereditarily.
Equations
- Form.IsBlocking g = ((∀ (p : Player), Form.IsEnd p g → Form.IsBlockedEnd p g) ∧ ∀ (p : Player), ∀ gp ∈ Moves.moves p g, Form.IsBlocking gp)
Instances For
@[simp]
theorem
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
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
Form.isBlocking_of_isOption
{G : Type (u + 1)}
[Form G]
{g g' : G}
(h1 : IsBlocking g)
(h2 : IsOption g' g)
:
IsBlocking g'
@[irreducible]
Every dead-ending game is blocking.
@[simp, irreducible]
theorem
Form.IsBlocking.add
{G : Type (u + 1)}
[Form G]
{g h : G}
(h1 : IsBlocking g)
(h2 : IsBlocking h)
:
IsBlocking (g + h)
Instances
instance
Form.instBlockingOfDeadEnding
{G : Type (u + 1)}
[Form G]
(A : G → Prop)
[DeadEnding A]
:
Blocking A
theorem
GameForm.IsBlocking.strong_of_isStrongTest
{A : GameForm → Prop}
[Form.Blocking A]
{p : Player}
{g : GameForm}
(h_test : Form.IsStrongTest p g)
:
Form.Strong A g p
This is one direction of Davies, Milley (Theorem 3.1 on p. 7)