Misere combinatorial games.
The games in A taken up to misère equality modulo A.
Equations
Instances For
@[implicit_reducible]
noncomputable def
MisereGames.Form.MisereQuotient.out
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
(x : MisereQuotient A)
:
A chosen representative of a misère-quotient class.
Equations
Instances For
@[simp]
theorem
MisereGames.Form.MisereQuotient.mk_out
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
(x : MisereQuotient A)
:
theorem
MisereGames.Form.MisereQuotient.add_misereEQ_add
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
[ClosedUnderAdd A]
{g g' h h' : G}
(hh : A h)
(hg' : A g')
(hg : g =m A g')
(hh' : h =m A h')
:
theorem
MisereGames.Form.MisereQuotient.add_misereGE_add_right
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
[ClosedUnderAdd A]
{k : G}
(hk : A k)
{g h : G}
(hgh : g ≥m A h)
:
@[implicit_reducible]
instance
MisereGames.Form.MisereQuotient.instAdd
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
[ClosedUnderAdd A]
:
Add (MisereQuotient A)
Equations
- One or more equations did not get rendered due to their size.
@[implicit_reducible]
instance
MisereGames.Form.MisereQuotient.instAddCommSemigroup
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
[ClosedUnderAdd A]
:
Equations
- MisereGames.Form.MisereQuotient.instAddCommSemigroup = { toAdd := MisereGames.Form.MisereQuotient.instAdd, add_assoc := ⋯, add_comm := ⋯ }
@[implicit_reducible]
instance
MisereGames.Form.MisereQuotient.instZero
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
[HasZero A]
:
Zero (MisereQuotient A)
Equations
@[implicit_reducible]
instance
MisereGames.Form.MisereQuotient.instAddCommMonoid
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
[HasZero A]
[ClosedUnderAdd A]
:
Equations
- One or more equations did not get rendered due to their size.
@[implicit_reducible]
instance
MisereGames.Form.MisereQuotient.instLE
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
:
LE (MisereQuotient A)
The order on the quotient: mk g ≤ mk h exactly when h ≥m A g.
Equations
- MisereGames.Form.MisereQuotient.instLE = { le := fun (x y : MisereGames.MisereQuotient A) => Quotient.liftOn₂ x y (fun (g h : { g : G // A g }) => ↑h ≥m A↑g) ⋯ }
@[implicit_reducible]
instance
MisereGames.Form.MisereQuotient.instPartialOrder
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
:
Equations
- MisereGames.Form.MisereQuotient.instPartialOrder = { le := fun (x1 x2 : MisereGames.MisereQuotient A) => x1 ≤ x2, le_refl := ⋯, le_trans := ⋯, lt_iff_le_not_ge := ⋯, le_antisymm := ⋯ }
theorem
MisereGames.Form.MisereQuotient.out_le_out
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
{a b : MisereQuotient A}
:
instance
MisereGames.Form.MisereQuotient.instIsOrderedAddMonoid
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
[HasZero A]
[ClosedUnderAdd A]
: