Misere combinatorial games.
The polynomial functor describing Left and Right option sets.
Equations
- MisereGames.GameFunctor α = { s : MisereGames.Player → Set α // ∀ (p : MisereGames.Player), Small.{?u.1, ?u.1 + 1} ↑(s p) }
Instances For
Equations
- MisereGames.GameFunctor.instFunctor = { map := fun {α β : Type (?u.1 + 1)} (f : α → β) (s : MisereGames.GameFunctor α) => ⟨fun (x : MisereGames.Player) => f '' ↑s x, ⋯⟩ }
Equations
- One or more equations did not get rendered due to their size.
The canonical type of combinatorial game forms.
Instances For
Equations
- MisereGames.GameForm.instMoves = { moves := MisereGames.GameForm.moves'✝, isOption'_wf := MisereGames.GameForm.instMoves._proof_1✝ }
The set of Left options of the game.
Equations
- MisereGames.GameForm.«term_ᴸ» = Lean.ParserDescr.trailingNode `MisereGames.GameForm.«term_ᴸ» 1024 1024 (Lean.ParserDescr.symbol "ᴸ")
Instances For
The set of Right options of the game.
Equations
- MisereGames.GameForm.«term_ᴿ» = Lean.ParserDescr.trailingNode `MisereGames.GameForm.«term_ᴿ» 1024 1024 (Lean.ParserDescr.symbol "ᴿ")
Instances For
Two GameForms are equal when their option sets are.
Conway induction: build data for a game by recursively building it on its Left and Right sets. This rarely needs to be used explicitly, as the termination checker will handle it.
See ofSetsRecOn for an alternate form.
Equations
- MisereGames.GameForm.moveRecOn x mk = mk x fun (p : MisereGames.Player) (y : MisereGames.GameForm) (x : y ∈ MisereGames.Moves.moves p x) => MisereGames.GameForm.moveRecOn y mk
Instances For
Conway induction: build data for a game by recursively building it on its Left and Right sets. This rarely needs to be used explicitly, as the termination checker will handle it.
See moveRecOn for an alternate form.
Equations
- One or more equations did not get rendered due to their size.
Instances For
$\def\form<#1>[#2]{\left\{#1 \mid #2\right\}}$
The conjugate of a game is defined by -!{s | t} = !{-t | -s}. In the
literature, one would see
$$ \overline{G}=\form<\overline{G^\mathcal{R}}>[\overline{G^\mathcal{L}}]. $$
In this repository, the conjugate is often referred to as the 'negative', even
though it is not necessarily an additive inverse.
Equations
Equations
- MisereGames.GameForm.instInvolutiveNeg = { toNeg := MisereGames.GameForm.instNeg, neg_neg := ⋯ }
Addition and subtraction #
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.