@[irreducible]
Equations
- Form.Misere.Outcome.WinsGoingFirst p g = (Form.IsEndLike p g ∨ ∃ (g' : G) (_ : g' ∈ Moves.moves p g), ¬Form.Misere.Outcome.WinsGoingFirst (-p) g')
Instances For
@[simp]
theorem
Form.Misere.Outcome.winsGoingFirst_of_isEndLike
{G : Type (u + 1)}
[Form G]
{g : G}
{p : Player}
(h1 : IsEndLike p g)
:
WinsGoingFirst p g
@[simp]
theorem
Form.Misere.Outcome.winsGoingFirst_of_isEnd
{G : Type (u + 1)}
[Form G]
{g : G}
{p : Player}
(h1 : IsEnd p g)
:
WinsGoingFirst p g
theorem
Form.Misere.Outcome.winsGoingFirst_of_moves
{G : Type (u + 1)}
[Form G]
{g : G}
{p : Player}
(h1 : ∃ g' ∈ moves p g, ¬WinsGoingFirst (-p) g')
:
WinsGoingFirst p g
@[irreducible]
theorem
Form.Misere.Outcome.winsGoingFirst_neg_iff
{G : Type (u + 1)}
[Form G]
(g : G)
(p : Player)
:
theorem
Form.Misere.Outcome.not_winsGoingFirst_iff
{G : Type (u + 1)}
[Form G]
{g : G}
{p : Player}
:
theorem
Form.Misere.Outcome.winsGoingFirst_zero
{G : Type (u + 1)}
[Form G]
(p : Player)
:
WinsGoingFirst p 0
Equations
Instances For
Equations
Instances For
@[simp]
theorem
Form.Misere.Outcome.miserePlayerOutcome_eq_iff_winsGoingFirst
{G : Type (u + 1)}
[Form G]
{g : G}
{p : Player}
:
theorem
Form.Misere.Outcome.misereOutcome_L_iff_miserePlayerOutcome
{G : Type (u + 1)}
[Form G]
{g : G}
:
theorem
Form.Misere.Outcome.misereOutcome_N_iff_miserePlayerOutcome
{G : Type (u + 1)}
[Form G]
{g : G}
:
theorem
Form.Misere.Outcome.misereOutcome_P_iff_miserePlayerOutcome
{G : Type (u + 1)}
[Form G]
{g : G}
:
theorem
Form.Misere.Outcome.misereOutcome_R_iff_miserePlayerOutcome
{G : Type (u + 1)}
[Form G]
{g : G}
:
@[simp]
theorem
Form.Misere.Outcome.minsGoingFirst_left_of_misereOutcome_L
{G : Type (u + 1)}
[Form G]
{g : G}
(h1 : MisereOutcome g = Outcome.L)
:
@[simp]
theorem
Form.Misere.Outcome.winsGoingFirst_right_of_misereOutcome_R
{G : Type (u + 1)}
[Form G]
{g : G}
(h1 : MisereOutcome g = Outcome.R)
:
@[simp]
theorem
Form.Misere.Outcome.miserePlayerOutcome_neg_player_neg
{G : Type (u + 1)}
[Form G]
(g : G)
(p : Player)
:
@[simp]
theorem
Form.Misere.Outcome.misereOutcome_ge_P_of_not_winsGoingFirst_right
{G : Type (u + 1)}
[Form G]
{g : G}
(h1 : ¬WinsGoingFirst Player.right g)
:
theorem
Form.Misere.Outcome.misereOutcome_le_N_of_winsGoingFirst_right
{G : Type (u + 1)}
[Form G]
{g : G}
(h1 : WinsGoingFirst Player.right g)
:
theorem
Form.Misere.Outcome.not_winsGoingFirst_of_misereOutcome_P
{G : Type (u + 1)}
[Form G]
{g : G}
{p : Player}
(h1 : MisereOutcome g = Outcome.P)
:
¬WinsGoingFirst p g
theorem
Form.Misere.Outcome.misereOutcome_P_of_miserePlayerOutcome_neg
{G : Type (u + 1)}
[Form G]
{g : G}
(h1 : ∀ (p : Player), MiserePlayerOutcome g p = -p)
:
@[simp]
theorem
Form.Misere.Outcome.misereOutcome_eq_player_iff
{G : Type (u + 1)}
[Form G]
(g : G)
(p : Player)
:
theorem
Form.Misere.Outcome.misereOutcome_L_iff_winsGoingFirst
{G : Type (u + 1)}
[Form G]
{g : G}
:
theorem
Form.Misere.Outcome.misereOutcome_R_iff_winsGoingFirst
{G : Type (u + 1)}
[Form G]
{g : G}
:
theorem
Form.Misere.Outcome.misereOutcome_P_iff_winsGoingFirst'
{G : Type (u + 1)}
[Form G]
{g : G}
{p : Player}
:
theorem
Form.Misere.Outcome.misereOutcome_P_iff_winsGoingFirst
{G : Type (u + 1)}
[Form G]
{g : G}
:
theorem
Form.Misere.Outcome.misereOutcome_N_iff_winsGoingFirst
{G : Type (u + 1)}
[Form G]
{g : G}
:
theorem
Form.Misere.Outcome.misereOutcome_N_iff_winsGoingFirst'
{G : Type (u + 1)}
[Form G]
{g : G}
{p : Player}
:
theorem
Form.Misere.Outcome.misereOutcome_ne_P_iff_winsGoingFirst
{G : Type (u + 1)}
[Form G]
{g : G}
:
theorem
Form.Misere.Outcome.winsGoingFirst_left_of_ge_N
{G : Type (u + 1)}
[Form G]
{x : G}
(h : MisereOutcome x ≥ Outcome.N)
:
If o(x) ≥ N then Left wins going first on x.
@[simp]
@[simp]
@[simp]
theorem
Form.Misere.Outcome.misereOutcome_neg_R_iff_misereOutcome
{G : Type (u + 1)}
[Form G]
{g : G}
:
@[simp]
theorem
Form.Misere.Outcome.misereOutcome_neg_L_iff_misereOutcome
{G : Type (u + 1)}
[Form G]
{g : G}
:
@[simp]
theorem
Form.Misere.Outcome.misereOutcome_neg_N_iff_misereOutcome
{G : Type (u + 1)}
[Form G]
{g : G}
:
theorem
Form.Misere.Outcome.winsGoingFirst_left_of_move_misereOutcome_P
{G : Type (u + 1)}
[Form G]
{g gl : G}
(h1 : gl ∈ moves Player.left g)
(h2 : MisereOutcome gl = Outcome.P)
:
theorem
Form.Misere.Outcome.winsGoingFirst_add_of_isEndLike
{G : Type (u + 1)}
[Form G]
{g h : G}
{p : Player}
(h1 : IsEndLike p g)
(h2 : IsEndLike p h)
:
WinsGoingFirst p (g + h)
theorem
Form.Misere.Outcome.winsGoingFirst_add_of_isEnd
{G : Type (u + 1)}
[Form G]
{g h : G}
{p : Player}
(h1 : IsEnd p g)
(h2 : IsEnd p h)
:
WinsGoingFirst p (g + h)
theorem
Form.Misere.Outcome.miserePlayerOutcome_of_leftMoves
{G : Type (u + 1)}
[Form G]
{g gl : G}
(h1 : gl ∈ moves Player.left g)
(h2 : MiserePlayerOutcome gl Player.right = Player.left)
:
theorem
Form.Misere.Outcome.miserePlayerOutcome_of_rightMoves
{G : Type (u + 1)}
[Form G]
{g gr : G}
(h1 : gr ∈ moves Player.right g)
(h2 : MiserePlayerOutcome gr Player.left = Player.right)
:
theorem
Form.Misere.Outcome.misereOutcome_ge_iff_miserePlayerOutcome_ge
{G : Type (u + 1)}
[Form G]
{g h : G}
:
MisereOutcome g ≥ MisereOutcome h ↔ ∀ (p : Player), MiserePlayerOutcome g p ≥ MiserePlayerOutcome h p
Restricted misère equivalence, working modulo a set A.
Conventions for notations in identifiers:
- The recommended spelling of
=min identifiers ismisereEQ.
Equations
- g =m A h = ∀ (x : G), A x → Form.Misere.Outcome.MisereOutcome (g + x) = Form.Misere.Outcome.MisereOutcome (h + x)
Instances For
Restricted misère equivalence, working modulo a set A.
Conventions for notations in identifiers:
- The recommended spelling of
=min identifiers ismisereEQ.
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
Form.Misere.Outcome.MisereEQ.symm
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
{g h : G}
(h1 : g =m A h)
:
h =m A g
theorem
Form.Misere.Outcome.MisereEQ.trans
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
{g h k : G}
(h1 : g =m A h)
(h2 : h =m A k)
:
g =m A k
The restricted misère preorder, working modulo a set A.
Conventions for notations in identifiers:
- The recommended spelling of
≥min identifiers ismisereGE.
Equations
- g ≥m A h = ∀ (x : G), A x → Form.Misere.Outcome.MisereOutcome (g + x) ≥ Form.Misere.Outcome.MisereOutcome (h + x)
Instances For
The restricted misère preorder, working modulo a set A.
Conventions for notations in identifiers:
- The recommended spelling of
≥min identifiers ismisereGE.
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
Form.Misere.Outcome.MisereEq.of_antisymm
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
{g h : G}
(h1 : g ≥m A h)
(h2 : h ≥m A g)
:
g =m A h
theorem
Form.Misere.Outcome.MisereGE.trans
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
{g h k : G}
(h1 : g ≥m A h)
(h2 : h ≥m A k)
:
g ≥m A k
theorem
Form.Misere.Outcome.misereGE_of_misereEQ
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
{g h : G}
(h1 : g =m A h)
:
g ≥m A h
theorem
Form.Misere.Outcome.misereGE_add_right
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
[ClosedUnderAdd A]
{g h c : G}
(hc : A c)
(h1 : g ≥m A h)
:
Adding a fixed element c ∈ A on the right preserves the restricted misère
inequality.
theorem
Form.Misere.Outcome.misereEQ_add_right
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
[ClosedUnderAdd A]
{g h c : G}
(hc : A c)
(h1 : g =m A h)
:
Adding a fixed element c ∈ A on the right preserves the restricted misère
equivalence.
theorem
Form.Misere.Outcome.misereEQ_add_left
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
[ClosedUnderAdd A]
{g h c : G}
(hc : A c)
(h1 : g =m A h)
:
Adding a fixed element c ∈ A on the left preserves the restricted misère
equivalence.
@[simp]
theorem
Form.Misere.Outcome.MisereGE.refl
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
(g : G)
:
g ≥m A g
@[simp]
theorem
Form.Misere.Outcome.ClosedUnderNeg.neg_ge_neg_iff
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
[ClosedUnderNeg A]
(g h : G)
:
theorem
Form.Misere.Outcome.misereEQ_neg_iff
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
[ClosedUnderNeg A]
{g h : G}
:
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
theorem
Form.Misere.Outcome.misereOutcome_eq_winsGoingFirst_iff
{G : Type (u + 1)}
[Form G]
{p : Player}
{g h : G}
(h_eq : MisereOutcome g = MisereOutcome h)
:
theorem
Form.Misere.Outcome.winsGoingFirst_left_add_of_misereGE_zero
{G : Type (u + 1)}
[Form G]
{A : G → Prop}
{g h : G}
(h_h : A h)
(h_g_ge_zero : g ≥m A↑0)
(h_h_left_win : WinsGoingFirst Player.left h)
:
WinsGoingFirst Player.left (g + h)