Order properties of pregames #
Pregames have both a ≤
and a <
relation, satisfying the usual properties of a Preorder
. The
relation 0 < x
means that x
can always be won by Left, while 0 ≤ x
means that x
can be won
by Left as the second player.
It turns out to be quite convenient to define various relations on top of these. We define the "less
or fuzzy" relation x ⧏ y
as ¬ y ≤ x
, the equivalence relation x ≈ y
as x ≤ y ∧ y ≤ x
, and
the fuzzy relation x ‖ y
as x ⧏ y ∧ y ⧏ x
. If 0 ⧏ x
, then x
can be won by Left as the
first player. If x ≈ 0
, then x
can be won by the second player. If x ‖ 0
, then x
can be won
by the first player.
Statements like zero_le_lf
, zero_lf_le
, etc. unfold these definitions. The theorems le_def
and
lf_def
give a recursive characterisation of each relation in terms of themselves two moves later.
The theorems zero_le
, zero_lf
, etc. also take into account that 0
has no moves.
Later, games will be defined as the quotient by the ≈
relation; that is to say, the
Antisymmetrization
of SetTheory.PGame
.
The less or equal relation on pre-games.
If 0 ≤ x
, then Left can win x
as the second player. x ≤ y
means that 0 ≤ y - x
.
See PGame.le_iff_sub_nonneg
.
Equations
- One or more equations did not get rendered due to their size.
The less or fuzzy relation on pre-games. x ⧏ y
is defined as ¬ y ≤ x
.
If 0 ⧏ x
, then Left can win x
as the first player. x ⧏ y
means that 0 ⧏ y - x
.
See PGame.lf_iff_sub_zero_lf
.
Equations
- SetTheory.PGame.«term_⧏_» = Lean.ParserDescr.trailingNode `SetTheory.PGame.«term_⧏_» 50 50 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⧏ ") (Lean.ParserDescr.cat `term 51))
Instances For
Definition of x ≤ y
on pre-games, in terms of ⧏
.
The ordering here is chosen so that And.left
refer to moves by Left, and And.right
refer to
moves by Right.
Definition of x ⧏ y
on pre-games, in terms of ≤
.
The ordering here is chosen so that or.inl
refer to moves by Left, and or.inr
refer to
moves by Right.
Alias of SetTheory.PGame.moveLeft_lf_of_le
.
Alias of SetTheory.PGame.lf_moveRight_of_le
.
Alias of SetTheory.PGame.lf_of_lt
.
Alias of SetTheory.PGame.lf_of_le_of_lf
.
Alias of SetTheory.PGame.lf_of_lf_of_le
.
Alias of SetTheory.PGame.lf_of_lt_of_lf
.
Alias of SetTheory.PGame.lf_of_lf_of_lt
.
This special case of PGame.le_of_forall_lf
is useful when dealing with surreals, where <
is
preferred over ⧏
.
The definition of x ≤ y
on pre-games, in terms of ≤
two moves later.
Note that it's often more convenient to use le_iff_forall_lf
, which only unfolds the definition by
one step.
The definition of x ⧏ y
on pre-games, in terms of ⧏
two moves later.
Note that it's often more convenient to use lf_iff_exists_le
, which only unfolds the definition by
one step.
The definition of 0 ≤ x
on pre-games, in terms of 0 ⧏
.
The definition of x ⧏ 0
on pre-games, in terms of ≤ 0
.
Given a game won by the right player when they play second, provide a response to any move by left.
Equations
Instances For
Show that the response for right provided by rightResponse
preserves the right-player-wins
condition.
Given a game won by the left player when they play second, provide a response to any move by right.
Equations
Instances For
Show that the response for left provided by leftResponse
preserves the left-player-wins
condition.
A small family of pre-games is bounded above.
A small set of pre-games is bounded above.
A small family of pre-games is bounded below.
A small set of pre-games is bounded below.
Equations
- SetTheory.PGame.setoid = { r := SetTheory.PGame.Equiv, iseqv := SetTheory.PGame.setoid.proof_1 }
Alias of SetTheory.PGame.Equiv.of_equiv
.
The fuzzy, confused, or incomparable relation on pre-games.
If x ‖ 0
, then the first player can always win x
.
Equations
- SetTheory.PGame.«term_‖_» = Lean.ParserDescr.trailingNode `SetTheory.PGame.«term_‖_» 50 50 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ‖ ") (Lean.ParserDescr.cat `term 51))
Instances For
Alias of SetTheory.PGame.lf_of_fuzzy
.
Interaction of relabelling with order #
A relabelling lets us prove equivalence of games.
Equations
- SetTheory.PGame.instCoeRelabellingEquiv = { coe := ⋯ }
Interaction of option insertion with order #
A new left option cannot hurt Left.
A new right option cannot hurt Right.
Adding a gift horse left option does not change the value of x
. A gift horse left option is
a game x'
with x' ⧏ x
. It is called "gift horse" because it seems like Left has gotten the
"gift" of a new option, but actually the value of the game did not change.
Adding a gift horse right option does not change the value of x
. A gift horse right option is
a game x'
with x ⧏ x'
. It is called "gift horse" because it seems like Right has gotten the
"gift" of a new option, but actually the value of the game did not change.