Equations
- Moves.IsOption' moves x y = (x ∈ ⋃ (p : Player), moves p y)
Instances For
class
Form
(G : Type (v + 1))
extends Moves G, OfSets G fun (x : Player → Set G) => True, InvolutiveNeg G, AddCommSemigroup G :
Type (v + 1)
- ofSets (st : Player → Set G) (h : True) [Small.{v, v + 1} ↑(st Player.left)] [Small.{v, v + 1} ↑(st Player.right)] : G
- neg : G → G
- add : G → G → G
- moves_ofSets' (p : Player) (st : Player → Set G) [Small.{v, v + 1} ↑(st Player.left)] [Small.{v, v + 1} ↑(st Player.right)] : moves p !{st} = st p
- ofSets_inj'' {st₁ st₂ : Player → Set G} [Small.{v, v + 1} ↑(st₁ Player.left)] [Small.{v, v + 1} ↑(st₁ Player.right)] [Small.{v, v + 1} ↑(st₂ Player.left)] [Small.{v, v + 1} ↑(st₂ Player.right)] : !{st₁} = !{st₂} ↔ st₁ = st₂
- ofSets_isEndLike_iff' (p : Player) (s t : Set G) [Small.{v, v + 1} ↑s] [Small.{v, v + 1} ↑t] : IsEndLike p !{s | t} ↔ moves p !{s | t} = ∅
- ofSets_add_ofSets'' (s₁ t₁ s₂ t₂ : Set G) [Small.{v, v + 1} ↑s₁] [Small.{v, v + 1} ↑t₁] [Small.{v, v + 1} ↑s₂] [Small.{v, v + 1} ↑t₂] : !{s₁ | t₁} + !{s₂ | t₂} = !{(fun (x : G) => x + !{s₂ | t₂}) '' s₁ ∪ (fun (x : G) => !{s₁ | t₁} + x) '' s₂ | (fun (x : G) => x + !{s₂ | t₂}) '' t₁ ∪ (fun (x : G) => !{s₁ | t₁} + x) '' t₂}
- ofSets_moves_of_not_isEndLike' (g : G) [Small.{v, v + 1} ↑(moves Player.left g)] [Small.{v, v + 1} ↑(moves Player.right g)] (h : ∀ (p : Player), ¬IsEndLike p g) : !{fun (p : Player) => moves p g} = g
Instances
IsOption x y means that x is either a Left or a Right option for y.
Equations
- Moves.IsOption x y = Moves.IsOption' Moves.moves x y
Instances For
A proper subposition is an element of the transitive closure of IsOption.
Note that this is not the reflexive-transitive closure! While it is common to
say that $G$ is a subposition of $G$ in the literature, here Subposition
refers to a proper subposition.
Instances For
theorem
Moves.Subposition.of_isOption
{G : Type (u + 1)}
[g_moves : Moves G]
{x y : G}
(h : IsOption x y)
:
Subposition x y
theorem
Moves.Subposition.of_mem_moves
{G : Type (u + 1)}
[g_moves : Moves G]
{p : Player}
{x y : G}
(h : x ∈ moves p y)
:
Subposition x y
theorem
Moves.Subposition.trans
{G : Type (u + 1)}
[g_moves : Moves G]
{x y z : G}
(h₁ : Subposition x y)
(h₂ : Subposition y z)
:
Subposition x z
instance
Moves.instSmallSubtypeSubposition
{G : Type (u + 1)}
[g_moves : Moves G]
(x : G)
:
Small.{u + 1, u + 1} { y : G // Subposition y x }
@[instance_reducible]
Equations
- Moves.instWellFoundedRelation = { rel := Moves.Subposition, wf := ⋯ }
Equations
- Moves.tacticForm_wf = Lean.ParserDescr.node `Moves.tacticForm_wf 1024 (Lean.ParserDescr.nonReservedSymbol "form_wf" false)
Instances For
Equations
- Form.IsEnd p g = (Moves.moves p g = ∅)
Instances For
instance
Form.instSmallElemMoves
{G : Type (u + 1)}
[g_form : Form G]
(p : Player)
(x : G)
:
Small.{u, u + 1} ↑(moves p x)
@[simp]
theorem
Form.moves_ofSets
{G : Type (u + 1)}
[g_form : Form G]
(p : Player)
(st : Player → Set G)
[Small.{u, u + 1} ↑(st Player.left)]
[Small.{u, u + 1} ↑(st Player.right)]
:
@[simp]
theorem
Form.leftMoves_ofSets
{G : Type (u + 1)}
[g_form : Form G]
(s t : Set G)
[Small.{u, u + 1} ↑s]
[Small.{u, u + 1} ↑t]
:
@[simp]
theorem
Form.rightMoves_ofSets
{G : Type (u + 1)}
[g_form : Form G]
(s t : Set G)
[Small.{u, u + 1} ↑s]
[Small.{u, u + 1} ↑t]
:
@[simp]
theorem
Form.ofSets_inj'
{G : Type (u + 1)}
[g_form : Form G]
{st₁ st₂ : Player → Set G}
[Small.{u, u + 1} ↑(st₁ Player.left)]
[Small.{u, u + 1} ↑(st₁ Player.right)]
[Small.{u, u + 1} ↑(st₂ Player.left)]
[Small.{u, u + 1} ↑(st₂ Player.right)]
:
theorem
Form.ofSets_inj
{G : Type (u + 1)}
[g_form : Form G]
{s₁ s₂ t₁ t₂ : Set G}
[Small.{u, u + 1} ↑s₁]
[Small.{u, u + 1} ↑s₂]
[Small.{u, u + 1} ↑t₁]
[Small.{u, u + 1} ↑t₂]
:
A form is zero-like if it is both a Left and a Right end, just like 0.
Equations
- Form.IsZeroLike g = ∀ (p : Player), Form.IsEnd p g
Instances For
@[simp]
theorem
Form.neg_ofSets
{G : Type (u + 1)}
[g_form : Form G]
(s t : Set G)
[Small.{u, u + 1} ↑s]
[Small.{u, u + 1} ↑t]
:
@[instance_reducible]
Equations
- Form.instNegZeroClass = { toZero := Form.instZero, toNeg := g_form.toNeg, neg_zero := ⋯ }
@[instance_reducible]
Equations
- Form.instInhabited = { default := 0 }
@[simp]
@[simp]
@[simp]
theorem
Form.moves_small
{G : Type (u + 1)}
[g_form : Form G]
(p : Player)
(x : G)
:
Small.{u, u + 1} ↑(moves p x)
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
Equations
- Form.instAddCommMonoidWithOne = { natCast := Nat.unaryCast, toAddMonoid := Form.instAddCommMonoid.toAddMonoid, toOne := Form.instOne, natCast_zero := ⋯, natCast_succ := ⋯, add_comm := ⋯ }
@[simp]
@[simp]
@[simp]
@[instance_reducible]
Equations
- Form.instIntCast = { intCast := fun (x : ℤ) => match x with | Int.ofNat n => ↑n | Int.negSucc n => -(↑n + 1) }
@[simp]
@[simp]
theorem
Form.leftMoves_intCast_zero_le_succ
{G : Type (u + 1)}
[g_form : Form G]
{a : ℤ}
(h1 : 0 ≤ a)
:
@[simp]
theorem
Form.leftMoves_intCast_le_one_ne_empty
{G : Type (u + 1)}
[g_form : Form G]
{a : ℤ}
(h1 : 1 ≤ a)
:
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
theorem
Form.ofSets_isEndLike_iff
{G : Type (u + 1)}
[g_form : Form G]
{p : Player}
{s t : Set G}
[Small.{u, u + 1} ↑s]
[Small.{u, u + 1} ↑t]
:
theorem
Form.ofSets_add_ofSets
{G : Type (u + 1)}
[g_form : Form G]
(s₁ t₁ s₂ t₂ : Set G)
[Small.{u, u + 1} ↑s₁]
[Small.{u, u + 1} ↑t₁]
[Small.{u, u + 1} ↑s₂]
[Small.{u, u + 1} ↑t₂]
:
theorem
Form.ofSets_add_ofSets'
{G : Type (u + 1)}
[g_form : Form G]
(st₁ st₂ : Player → Set G)
[Small.{u, u + 1} ↑(st₁ Player.left)]
[Small.{u, u + 1} ↑(st₂ Player.left)]
[Small.{u, u + 1} ↑(st₁ Player.right)]
[Small.{u, u + 1} ↑(st₂ Player.right)]
:
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
theorem
Form.eq_sub_one_of_mem_leftMoves_intCast
{G : Type (u + 1)}
[g_form : Form G]
{n : ℤ}
{x : G}
(hx : x ∈ moves Player.left ↑n)
:
theorem
Form.eq_add_one_of_mem_rightMoves_intCast
{G : Type (u + 1)}
[g_form : Form G]
{n : ℤ}
{x : G}
(hx : x ∈ moves Player.right ↑n)
:
theorem
Form.eq_intCast_of_mem_leftMoves_intCast
{G : Type (u + 1)}
[g_form : Form G]
{n : ℤ}
{x : G}
(hx : x ∈ moves Player.left ↑n)
:
∃ m < n, ↑m = x
Every Left option of an integer is equal to a smaller integer.
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.