Documentation

CombinatorialGames.Game.Loopy.Outcome

Outcomes of loopy games #

We define when a loopy game is a win, a draw, or a loss with each player going first (under the normal play convention).

inductive LGame.IsLeftWin :

IsLeftWin x means that left wins x going first.

Instances For

    IsRightLoss x means that right loses x going first.

    Instances For
      inductive LGame.IsRightWin :

      IsRightWin x means that right wins x going first.

      Instances For
        inductive LGame.IsLeftLoss :

        IsLeftLoss x means that left loses x going first.

        Instances For

          A surviving strategy for Left, going second.

          This is a set of states, such that for every move Right makes, Left can bring it back to the set.

          You can think of this as a nonconstructive version of the more common definition of a strategy, which gives an explicit answer for every reachable state.

          Equations
          Instances For

            A surviving strategy for Right, going second.

            This is a set of states, such that for every move Left makes, Right can bring it back to the set.

            You can think of this as a nonconstructive version of the more common definition of a strategy, which gives an explicit answer for every reachable state.

            Equations
            Instances For
              theorem LGame.IsLeftStrategy.iUnion {ι : Sort u_1} {s : ιSet LGame} (h : ∀ (i : ι), IsLeftStrategy (s i)) :
              IsLeftStrategy (⋃ (i : ι), s i)
              theorem LGame.IsRightStrategy.iUnion {ι : Sort u_1} {s : ιSet LGame} (h : ∀ (i : ι), IsRightStrategy (s i)) :
              IsRightStrategy (⋃ (i : ι), s i)

              IsLeftDraw x means that left draws x going first.

              Equations
              Instances For

                IsRightDraw x means that right draws x going first.

                Equations
                Instances For
                  inductive LGame.Outcome :

                  The three possible outcomes of a game.

                  Instances For
                    noncomputable def LGame.leftOutcome (x : LGame) :

                    leftOutcome x is the outcome of x with left going first.

                    Equations
                    Instances For
                      noncomputable def LGame.rightOutcome (x : LGame) :

                      rightOutcome x is the outcome of x with right going first.

                      Equations
                      Instances For
                        theorem LGame.not_isLeftDraw_of_acc_comp {x : LGame} (h : Acc (fun (z x : LGame) => yx.leftMoves, z y.rightMoves) x) :

                        If there is no infinite play starting by from x with right going second, then x cannot end in a draw with right going second.

                        theorem LGame.not_isRightDraw_of_acc_comp {x : LGame} (h : Acc (fun (z x : LGame) => yx.rightMoves, z y.leftMoves) x) :

                        If there is no infinite play starting from x with right going first, then x cannot end in a draw with right going first.