Documentation

LeanPool.AFormalizationOfBorelDeterminacyInLean.Game.Games

LeanPool.AFormalizationOfBorelDeterminacyInLean.Game.Games #

Auxiliary declarations for the Borel determinacy formalization.

structure GaleStewartGame.Game (A : Type u_2) :
Type u_2

a Gale-Stewart game is given by a tree of valid plays (usually pruned) and a payoff set specifying the winner of an infinite play a : player 0 wins if and only if a ∈ G.payoff

Instances For
    theorem GaleStewartGame.Game.ext_iff {A : Type u_2} {x y : Game A} :
    theorem GaleStewartGame.Game.ext {A : Type u_2} {x y : Game A} (tree : x.tree = y.tree) (payoff : x.payoff y.payoff) :
    x = y
    theorem GaleStewartGame.subtype_payoff {A : Type u_1} {G G' : Game A} (h : G = G') :
    theorem GaleStewartGame.Game.ext' {A : Type u_1} {G G' : Game A} (ht : G.tree = G'.tree) (hp : Subtype.val '' G.payoff = Subtype.val '' G'.payoff) :
    G = G'
    def GaleStewartGame.Game.residual {A : Type u_1} (G : Game A) (x : List A) :

    The residual game starting in position x

    Equations
    Instances For
      @[simp]
      @[simp]
      theorem GaleStewartGame.Game.residual_nil {A : Type u_1} (G : Game A) :
      @[simp]
      theorem GaleStewartGame.Game.residual_append {A : Type u_1} (G : Game A) (x y : List A) :
      (G.residual x).residual y = G.residual (x ++ y)
      theorem GaleStewartGame.Game.empty_of_tree {A : Type u_1} (G : Game A) (h : G.tree = ) :
      G = { tree := , payoff := }
      theorem GaleStewartGame.Game.residual_notMem {A : Type u_1} (G : Game A) (x : List A) (h : xG.tree) :
      G.residual x = { tree := , payoff := }
      @[reducible, inline]
      abbrev GaleStewartGame.PreStrategy.subgame {A : Type u_1} {p : Player} {G : Game A} (S : PreStrategy G.tree p) :

      Auxiliary declaration for the Borel determinacy formalization.

      Equations
      Instances For

        player p wins if and only if the resulting play lies in p.payoff G

        Equations
        Instances For
          @[simp]
          @[simp]
          @[simp]
          theorem GaleStewartGame.Player.payoff_swap {A : Type u_1} {p : Player} {G : Game A} :
          @[simp]
          theorem GaleStewartGame.Player.payoff_swap_residual {A : Type u_1} {p : Player} {G : Game A} {x : List A} :
          theorem GaleStewartGame.subtype_val_player_payoff {A : Type u_1} {p : Player} {G G' : Game A} {p' : Player} (h : G = G') (hp : p = p') :
          @[reducible, inline]
          abbrev GaleStewartGame.PreStrategy.IsWinning {A : Type u_1} {p : Player} {G : Game A} (s : PreStrategy G.tree p) :

          a PreStrategy is winning if all compatible plays are won

          Equations
          Instances For
            theorem GaleStewartGame.PreStrategy.sub_winning {A : Type u_1} {p : Player} {G : Game A} {s t : PreStrategy G.tree p} (h : s t) (h' : t.IsWinning) :
            theorem GaleStewartGame.PreStrategy.IsWinning.residual {A : Type u_1} {p : Player} {G : Game A} {s : PreStrategy G.tree p} (h : s.IsWinning) (x : s.subtree) :
            theorem GaleStewartGame.Game.exists_isWinning {A : Type u_1} (S T : Game A) (p q : Player) (hS : S = T) (hp : p = q) :
            (∃ (s : Strategy S.tree p), s.pre.IsWinning) ∃ (s : Strategy T.tree q), s.pre.IsWinning

            whether a winning strategy exists for player p

            Equations
            Instances For
              def GaleStewartGame.Game.AllWinning {A : Type u_1} (G : Game A) (p : Player) :

              Auxiliary declaration for the Borel determinacy formalization.

              Equations
              Instances For
                theorem GaleStewartGame.Game.AllWinning.residual {A : Type u_1} {p : Player} {G : Game A} (hW : G.AllWinning p) (x : List A) :

                a game is determined if some player has a winning strategy

                Equations
                Instances For