Poset games #
Let α
be a partially ordered type (in fact, a preorder suffices). One can define the following
impartial game: two players alternate turns choosing an element a : α
, and "removing" the entire
interval Ici a
from the poset. As usual, whoever runs out of moves loses.
In a general poset, this game need not terminate. Adding the condition that α
is well
quasi-ordered (well-founded with no infinite antichains) is both sufficient and necessary to
guarantee a finite game.
This setup generalizes other well-known games within CGT, most notably Chomp, which is simply the
poset game on (Fin m × Fin n) \ {⊥}
.
Main results #
ConcreteGame.Poset.impartial_toIGame
: poset games are impartialConcreteGame.Poset.univ_fuzzy_zero
: any poset game with a top element is won by the second player, shown via a strategy stealing argument
Poset relation #
Poset game #
The poset game, played on a poset α
.
Equations
- ConcreteGame.poset α = ConcreteGame.ofImpartial fun (x : Set α) => {y : Set α | ConcreteGame.Poset.Rel y x}
Instances For
A state of the poset game on α
.
Equations
Instances For
Any poset game on a toIGame with a top element is won by the first player. This is proven by
a strategy stealing argument with {⊤}ᶜ
.