Documentation

CombinatorialGames.Game.Specific.Poset

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 #

def posetRel {α : Type u_1} [Preorder α] (s t : Set α) :

A valid move in the poset game is to change set t to set s, whenever s = t \ Ici a for some a ∈ t.

In a WQO, this relation is well-founded.

Equations
Instances For
    theorem subrelation_posetRel {α : Type u_1} [Preorder α] :
    Subrelation (fun (x1 x2 : Set α) => posetRel x1 x2) fun (x1 x2 : Set α) => x1 x2
    theorem not_posetRel_empty {α : Type u_1} [Preorder α] (s : Set α) :
    theorem posetRel_irrefl {α : Type u_1} [Preorder α] (s : Set α) :
    instance instIsIrreflSetPosetRel {α : Type u_1} [Preorder α] :
    IsIrrefl (Set α) fun (x1 x2 : Set α) => posetRel x1 x2
    theorem wellFounded_posetRel {α : Type u_1} [Preorder α] [WellQuasiOrderedLE α] :
    WellFounded fun (x1 x2 : Set α) => posetRel x1 x2
    instance isWellFounded_posetRel {α : Type u_1} [Preorder α] [WellQuasiOrderedLE α] :
    IsWellFounded (Set α) fun (x1 x2 : Set α) => posetRel x1 x2
    def IGame.Poset (α : Type u_2) [Preorder α] [WellQuasiOrderedLE α] :
    Type u_2

    The set of states in a poset game. This is a type alias for Set α.

    Equations
    Instances For
      def IGame.toPoset {α : Type u_1} [Preorder α] [WellQuasiOrderedLE α] :
      Set α Poset α
      Equations
      Instances For
        def IGame.ofPoset {α : Type u_1} [Preorder α] [WellQuasiOrderedLE α] :
        Poset α Set α
        Equations
        Instances For
          @[simp]
          theorem IGame.toPoset_ofPoset {α : Type u_1} [Preorder α] [WellQuasiOrderedLE α] (a : Poset α) :
          @[simp]
          theorem IGame.ofPoset_toPoset {α : Type u_1} [Preorder α] [WellQuasiOrderedLE α] (a : Set α) :
          def IGame.Poset.rel {α : Type u_1} [Preorder α] [WellQuasiOrderedLE α] (a b : Poset α) :

          A valid move in the poset game is to change set t to set s, whenever s = t \ Ici a for some a ∈ t.

          Equations
          Instances For

            The starting position in a poset game.

            Equations
            Instances For

              Any poset game on a poset with a top element is won by the first player. This is proven by a strategy stealing argument with {⊤}ᶜ.