Combinatorial games from a type of states #
A "concrete" game is a type of states endowed with well-founded move relations for the
left and right players. This is often a more convenient representation for a game, which can then be
used to define a IGame
.
A "concrete" game is a type of states endowed with well-founded move relations for the left and right players.
- relLeft : α → α → Prop
The move relation for the left player.
- relRight : α → α → Prop
The move relation for the right player.
- isWellFounded_rel : IsWellFounded α fun (a b : α) => relLeft a b ∨ relRight a b
The move relation is well-founded.
Instances
Equations
- ConcreteGame.«term_≺ₗ_» = Lean.ParserDescr.trailingNode `ConcreteGame.«term_≺ₗ_» 50 51 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≺ₗ ") (Lean.ParserDescr.cat `term 51))
Instances For
Equations
- ConcreteGame.«term_≺ᵣ_» = Lean.ParserDescr.trailingNode `ConcreteGame.«term_≺ᵣ_» 50 51 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≺ᵣ ") (Lean.ParserDescr.cat `term 51))
Instances For
theorem
ConcreteGame.subrelation_relLeft
{α : Type u_1}
[ConcreteGame α]
:
Subrelation relLeft fun (a b : α) => relLeft a b ∨ relRight a b
theorem
ConcreteGame.subrelation_relRight
{α : Type u_1}
[ConcreteGame α]
:
Subrelation relRight fun (a b : α) => relLeft a b ∨ relRight a b
Defines a concrete game from a single relation, to be used for both players.
Equations
- ConcreteGame.ofImpartial r = { relLeft := r, relRight := r, isWellFounded_rel := ⋯ }
Instances For
@[irreducible]
Turns a state of a ConcreteGame
into an IGame
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
ConcreteGame.mem_leftMoves_toIGame_of_relLeft
{α : Type u_1}
[ConcreteGame α]
{a b : α}
(hab : relLeft b a)
:
theorem
ConcreteGame.mem_rightMoves_toIGame_of_relRight
{α : Type u_1}
[ConcreteGame α]
{a b : α}
(hab : relRight b a)
:
@[irreducible]
theorem
ConcreteGame.impartial_toIGame
{α : Type u_1}
[ConcreteGame α]
(h : relLeft = relRight)
(a : α)
:
A type alias to turn a concrete game impartial, by allowing both players to perform each other's moves.
Equations
- ToImpartial α = α
Instances For
Equations
Instances For
Equations
Instances For
@[simp]
@[simp]
Equations
- One or more equations did not get rendered due to their size.
instance
instImpartialToIGameToImpartialCoeEquivToImpartial
{α : Type u_1}
[ConcreteGame α]
(x : α)
:
theorem
ToImpartial.relLeft_iff
{α : Type u_1}
{x y : ToImpartial α}
[ConcreteGame α]
:
ConcreteGame.relLeft x y ↔ ConcreteGame.relLeft (ofImpartial x) (ofImpartial y) ∨ ConcreteGame.relRight (ofImpartial x) (ofImpartial y)
theorem
ToImpartial.relRight_iff
{α : Type u_1}
{x y : ToImpartial α}
[ConcreteGame α]
:
ConcreteGame.relRight x y ↔ ConcreteGame.relLeft (ofImpartial x) (ofImpartial y) ∨ ConcreteGame.relRight (ofImpartial x) (ofImpartial y)