Documentation

CombinatorialGames.Game.Player

Type of players #

This file implements the two-element type of players (Left, Right), alongside other basic notational machinery to be used within game theory.

Players #

inductive Player :

Either the Left or Right player.

  • left : Player

    The Left player.

  • right : Player

    The Right player.

Instances For
    Equations
    @[reducible, inline]
    abbrev Player.cases {α : Sort u_1} (l r : α) :
    Playerα

    Specify a function Player → α from its two outputs.

    Equations
    Instances For
      theorem Player.apply_cases {α : Sort u_1} {β : Sort u_2} (f : αβ) (l r : α) (p : Player) :
      f (cases l r p) = cases (f l) (f r) p
      @[simp]
      theorem Player.cases_inj {α : Sort u_1} {l₁ r₁ l₂ r₂ : α} :
      cases l₁ r₁ = cases l₂ r₂ l₁ = l₂ r₁ = r₂
      theorem Player.const_of_left_eq_right {α : Sort u_1} {f : Playerα} (hf : f left = f right) (p q : Player) :
      f p = f q
      theorem Player.const_of_left_eq_right' {f : PlayerProp} (hf : f left f right) (p q : Player) :
      f p f q
      @[simp]
      theorem Player.forall {p : PlayerProp} :
      (∀ (x : Player), p x) p left p right
      @[simp]
      theorem Player.exists {p : PlayerProp} :
      (∃ (x : Player), p x) p left p right

      The multiplication of Players is used to state the lemmas about the multiplication of combinatorial games, such as IGame.mulOption_mem_moves_mul.

      Equations
      @[simp]
      theorem Player.left_mul (p : Player) :
      left * p = p
      @[simp]
      theorem Player.right_mul (p : Player) :
      right * p = -p
      @[simp]
      theorem Player.mul_left (p : Player) :
      p * left = p
      @[simp]
      theorem Player.mul_right (p : Player) :
      p * right = -p
      @[simp]
      theorem Player.mul_self (p : Player) :
      p * p = left
      Equations
      • One or more equations did not get rendered due to their size.
      @[simp]
      @[simp]
      theorem Player.inv_eq_self (p : Player) :
      p⁻¹ = p

      OfSets #

      class OfSets (α : Type (u + 1)) (Valid : outParam ((PlayerSet α)Prop)) :
      Type (u + 1)

      Type class for the ofSets operation. Used to implement the !{st} and !{s | t} syntax.

      • ofSets (st : PlayerSet α) (h : Valid st) [Small.{u, u + 1} (st Player.left)] [Small.{u, u + 1} (st Player.right)] : α

        Construct a combinatorial game from its left and right sets.

        Conventions for notations in identifiers:

        • The recommended spelling of !{st}'h in identifiers is ofSets.

        • The recommended spelling of !{s | t}'h in identifiers is ofSets.

        • The recommended spelling of !{st} in identifiers is ofSets.

        • The recommended spelling of !{s | t} in identifiers is ofSets.

      Instances

        Construct a combinatorial game from its left and right sets.

        Conventions for notations in identifiers:

        • The recommended spelling of !{st}'h in identifiers is ofSets.
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For

          Construct a combinatorial game from its left and right sets.

          Conventions for notations in identifiers:

          • The recommended spelling of !{s | t}'h in identifiers is ofSets.
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For

            Construct a combinatorial game from its left and right sets.

            Conventions for notations in identifiers:

            • The recommended spelling of !{st} in identifiers is ofSets.
            Equations
            • One or more equations did not get rendered due to their size.
            Instances For

              Construct a combinatorial game from its left and right sets.

              Conventions for notations in identifiers:

              • The recommended spelling of !{s | t} in identifiers is ofSets.
              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  theorem ofSets_eq_ofSets_cases {α : Type (u_1 + 1)} {Valid : (PlayerSet α)Prop} [OfSets α Valid] (st : PlayerSet α) (h : Valid st) [Small.{u_1, u_1 + 1} (st Player.left)] [Small.{u_1, u_1 + 1} (st Player.right)] :
                  !{st} = !{st Player.left | st Player.right}