Documentation

CombinatorialGames.Game.Specific.Domineering

Domineering as a combinatorial game. #

We define the game of Domineering, played on a chessboard of arbitrary shape (possibly even disconnected). Left moves by placing a domino vertically, while Right moves by placing a domino horizontally.

This is only a fragment of a full development; in order to successfully analyse positions we would need some more theorems. Most importantly, we need a general statement that allows us to discard irrelevant moves. Specifically to domineering, we need the fact that disjoint parts of the chessboard give sums of games.

Todo #

Refactor this file to adhere to the design notes specified in CombinatorialGames.Game.Graph.

A Domineering board is an arbitrary finite subset of ℤ × ℤ.

Equations
Instances For
    @[match_pattern]

    Cast a finset to a domineering position.

    Equations
    Instances For
      @[match_pattern]

      Cast a domineering position to a finset.

      Equations
      Instances For

        Left can play anywhere that a square and the square below it are open.

        Equations
        Instances For

          Right can play anywhere that a square and the square to the left are open.

          Equations
          Instances For

            After Left moves, two vertically adjacent squares are removed from the Domineering.

            Equations
            Instances For

              After Left moves, two horizontally adjacent squares are removed from the Domineering.

              Equations
              Instances For

                Left can move from b to a when there exists some m ∈ left b with a = b.moveLeft m.

                Equations
                Instances For

                  Right can move from b to a when there exists some m ∈ right b with a = b.moveRight m.

                  Equations
                  Instances For
                    @[implicit_reducible]
                    Equations
                    @[implicit_reducible]
                    Equations