Documentation

CombinatorialGames.Misere.PFree

@[irreducible]
def IsPFree {G : Type (u + 1)} [Form G] (g : G) :
Equations
Instances For
    class PFree {G : Type (u + 1)} [Form G] (A : G → Prop) :
    • pfree {g : G} (h1 : A g) : IsPFree g
    Instances
      instance instPFreeIsPFree {G : Type (u + 1)} [Form G] :
      theorem isPFree_of_mem_moves {G : Type (u + 1)} [Form G] {g h : G} {p : Player} (h1 : IsPFree g) (h2 : h ∈ Moves.moves p g) :
      theorem isPFree_of_isOption {G : Type (u + 1)} [Form G] {g g' : G} (h1 : IsPFree g) (h2 : Moves.IsOption g' g) :
      @[simp]
      theorem isPFree_zero {G : Type (u + 1)} [Form G] :
      @[simp]
      theorem isPFree_natCast {G : Type (u + 1)} [Form G] (n : ℕ) :
      IsPFree ↑n
      @[simp]
      theorem isPFree_intCast {G : Type (u + 1)} [Form G] (k : ℤ) :
      IsPFree ↑k
      @[simp]
      theorem isPFree_one :
      @[irreducible]
      theorem isPFree_add_one {g : GameForm} (h1 : IsPFree g) :
      IsPFree (g + 1)
      theorem isPFree_add_natCast {g : GameForm} (h1 : IsPFree g) (n : ℕ) :
      IsPFree (g + ↑n)
      theorem isPFree_natCast_add {g : GameForm} (h1 : IsPFree g) (n : ℕ) :
      IsPFree (↑n + g)
      theorem isPFree_add_intCast {g : GameForm} (h1 : IsPFree g) (n : ℤ) :
      IsPFree (g + ↑n)
      def PFreeSubset {G : Type (u + 1)} [Form G] (A : G → Prop) (g : G) :
      Equations
      Instances For
        theorem PFreeSubset.mem {G : Type (u + 1)} [Form G] {A : G → Prop} {g : G} (h : PFreeSubset A g) :
        A g
        theorem PFreeSubset.isPFree {G : Type (u + 1)} [Form G] {A : G → Prop} {g : G} (h : PFreeSubset A g) :
        theorem PFreeSubset.mk {G : Type (u + 1)} [Form G] {A : G → Prop} {g : G} (h_mem : A g) (h_isPFree : IsPFree g) :
        theorem pfreeSubset_iff {G : Type (u + 1)} [Form G] {A : G → Prop} {g : G} :
        instance instPFreePFreeSubset {G : Type (u + 1)} [Form G] {A : G → Prop} :
        instance instHasNatPFreeSubset {G : Type (u + 1)} [Form G] {A : G → Prop} [Form.HasNat A] :
        instance instHasIntPFreeSubset {G : Type (u + 1)} [Form G] {A : G → Prop} [Form.HasInt A] :
        instance instShortPFreeSubset {G : Type (u + 1)} [Form G] {A : G → Prop} [Form.Short A] :
        theorem PFree.isPFree_ofMoves {A : GameForm → Prop} [PFree A] {g gp : GameForm} {p : Player} (h1 : A g) (h2 : gp ∈ Moves.moves p g) :
        theorem PFree.pfreeSubset_short_ofSets {L R : Set GameForm} [Small.{u, u + 1} ↑L] [Small.{u, u + 1} ↑R] {A : GameForm → Prop} [ClosedUnderDicotic Form.IsShort A] [Form.Short A] (h_L_mem : ∀ gl ∈ L, PFreeSubset A gl) (h_R_mem : ∀ gr ∈ R, PFreeSubset A gr) (h_L_nonempty : L.Nonempty) (h_L_finite : L.Finite) (h_R_nonempty : R.Nonempty) (h_R_finite : R.Finite) (h_outcome_ne_P : Form.Misere.Outcome.MisereOutcome !{L | R} ≠ Outcome.P) :
        PFreeSubset A !{L | R}

        If MisereOutcome H = L then 0 ≥m H fails, immediately from testing at x = 0 (MisereOutcome 0 = N is not ≥ L, since L is the top of the outcome order).

        theorem PFree.misereGE_iff_zero_of_isEnd_left_isEnd_right {U : GameForm → Prop} {g h : GameForm} (h_g_left : Form.IsEnd Player.left g) (h_g_right : Form.IsEnd Player.right g) :
        g ≥m (PFreeSubset U)h ↔ 0 ≥m (PFreeSubset U)h

        If g is both a Left and a Right end then g = 0 literally (both_ends_eq_zero), so comparing against g is just comparing against 0.

        If H is both a Left and a Right end then H = 0, so 0 ≥m H is 0 ≥m 0, true by reflexivity.