Documentation

LeanPool.AFormalizationOfBorelDeterminacyInLean.Proof.Zero.TreeLift

LeanPool.AFormalizationOfBorelDeterminacyInLean.Proof.Zero.TreeLift #

Auxiliary declarations for the Borel determinacy formalization.

noncomputable def GaleStewartGame.BorelDet.Zero.stratMap {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (lvl : ℕ) (R : ResStrategy (gameAsTrees hyp) Player.zero lvl) :

Auxiliary declaration for the Borel determinacy formalization.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    noncomputable def GaleStewartGame.BorelDet.Zero.stratMap' {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (R : Strategy (gameTree hyp) Player.zero) :

    Auxiliary declaration for the Borel determinacy formalization.

    Equations
    Instances For
      theorem GaleStewartGame.BorelDet.Zero.stratMap'_short {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (R : Strategy (gameTree hyp) Player.zero) (x : ↥G.tree) (hp : IsPosition (↑x) Player.zero) (hx : (↑x).length ≤ 2 * k) :
      stratMap' R x hp = ResStrategy.fromMap (treeHom hyp) ⋯ ((strategyEquivSystem R).str (↑x).length) x hp ⋯
      structure GaleStewartGame.BorelDet.Zero.TreeLift {A : Type u_1} {G : Game A} {k : ℕ} (hyp : Hyp G k) :
      Type u_1

      Auxiliary declaration for the Borel determinacy formalization.

      Instances For
        theorem GaleStewartGame.BorelDet.Zero.TreeLift.ext {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} {x y : TreeLift hyp} (R : x.R = y.R) :
        x.x ≍ y.x → x = y
        theorem GaleStewartGame.BorelDet.Zero.TreeLift.ext_iff {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} {x y : TreeLift hyp} :
        x = y ↔ x.R = y.R ∧ x.x ≍ y.x
        theorem GaleStewartGame.BorelDet.Zero.TreeLift.ext' {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} {H H' : TreeLift hyp} (hR : H.R = H'.R) (hx : ↑H.x = ↑H'.x) :
        H = H'
        theorem GaleStewartGame.BorelDet.Zero.TreeLift.ext'_iff {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} {H H' : TreeLift hyp} :
        H = H' ↔ H.R = H'.R ∧ ↑H.x = ↑H'.x
        theorem GaleStewartGame.BorelDet.Zero.TreeLift.hlvl_le {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) :
        2 * k + 1 ≤ (↑H.x).length

        Auxiliary declaration for the Borel determinacy formalization.

        @[simp]
        theorem GaleStewartGame.BorelDet.Zero.TreeLift.hlvl' {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) :
        2 * k ≤ (↑H.x).length
        def GaleStewartGame.BorelDet.Zero.TreeLift.preLift {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) :

        Auxiliary declaration for the Borel determinacy formalization.

        Equations
        Instances For
          @[simp]
          theorem GaleStewartGame.BorelDet.Zero.TreeLift.preLift_R {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) :
          @[simp]
          theorem GaleStewartGame.BorelDet.Zero.TreeLift.preLift_x_coe {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) :
          ↑H.preLift.x = ↑H.x
          theorem GaleStewartGame.BorelDet.Zero.TreeLift.pInv_fixing {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} {n : ℕ} (H : TreeLift hyp) (h : n ≤ 2 * k) :
          theorem GaleStewartGame.BorelDet.Zero.TreeLift.pInv_isPosition {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} {n : ℕ} (H : TreeLift hyp) (h : n ≤ 2 * k) {p : Player} (hp : IsPosition (List.take n ↑H.x) p) :
          def GaleStewartGame.BorelDet.Zero.TreeLift.take {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) (n : ℕ) (hk : 2 * k < n) :

          Auxiliary declaration for the Borel determinacy formalization.

          Equations
          Instances For
            @[simp]
            theorem GaleStewartGame.BorelDet.Zero.TreeLift.take_x {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) (n : ℕ) (hk : 2 * k < n) :
            @[simp]
            theorem GaleStewartGame.BorelDet.Zero.TreeLift.take_R {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) (n : ℕ) (hk : 2 * k < n) :
            (H.take n hk).R = H.R
            theorem GaleStewartGame.BorelDet.Zero.TreeLift.take_of_length_le {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} {n : ℕ} (H : TreeLift hyp) {h : 2 * k < n} (h' : (↑H.x).length ≤ n) :
            H.take n h = H
            @[simp]
            theorem GaleStewartGame.BorelDet.Zero.TreeLift.take_rfl {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) :
            H.take (↑H.x).length ⋯ = H
            @[simp]
            theorem GaleStewartGame.BorelDet.Zero.TreeLift.take_trans {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} {m n : ℕ} (H : TreeLift hyp) (hm : 2 * k < m) (hn : 2 * k < n) :
            (H.take m hm).take n hn = H.take (min m n) ⋯
            @[simp]
            theorem GaleStewartGame.BorelDet.Zero.TreeLift.preLift_take {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} {n : ℕ} (H : TreeLift hyp) (hk : 2 * k < n) :
            (H.take n hk).preLift = H.preLift.take n hk
            theorem GaleStewartGame.BorelDet.Zero.TreeLift.conShort {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) :
            def GaleStewartGame.BorelDet.Zero.TreeLift.lift {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) (h : 2 * k + 2 ≤ (↑H.x).length) :
            Lift hyp

            Auxiliary declaration for the Borel determinacy formalization.

            Equations
            Instances For
              @[simp]
              theorem GaleStewartGame.BorelDet.Zero.TreeLift.lift_toPreLift {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) (h : 2 * k + 2 ≤ (↑H.x).length) :
              noncomputable def GaleStewartGame.BorelDet.Zero.TreeLift.extension {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) (hp : IsPosition (↑H.x) Player.zero) :

              Auxiliary declaration for the Borel determinacy formalization.

              Equations
              Instances For
                theorem GaleStewartGame.BorelDet.Zero.TreeLift.extension_val_congr {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} {H H' : TreeLift hyp} (h : H = H') {hp : IsPosition (↑H.x) Player.zero} :
                ↑(H.extension hp) = ↑(H'.extension ⋯)
                @[simp]
                theorem GaleStewartGame.BorelDet.Zero.TreeLift.lift_take {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} {n : ℕ} (H : TreeLift hyp) (hk : 2 * k < n) (h' : 2 * k + 2 ≤ (↑(H.take n hk).x).length) :
                (H.take n hk).lift h' = (H.lift ⋯).take n ⋯
                def GaleStewartGame.BorelDet.Zero.TreeLift.dropLast {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) (h : 2 * k + 2 ≤ (↑H.x).length) :

                Auxiliary declaration for the Borel determinacy formalization.

                Equations
                Instances For
                  @[simp]
                  theorem GaleStewartGame.BorelDet.Zero.TreeLift.dropLast_R {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) (h : 2 * k + 2 ≤ (↑H.x).length) :
                  (H.dropLast h).R = H.R
                  @[simp]
                  theorem GaleStewartGame.BorelDet.Zero.TreeLift.dropLast_x_coe {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) (h : 2 * k + 2 ≤ (↑H.x).length) :
                  ↑(H.dropLast h).x = List.take ((↑H.x).length - 1) ↑H.x
                  theorem GaleStewartGame.BorelDet.Zero.TreeLift.x_mem_tree {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) (h : 2 * k + 2 ≤ (↑H.x).length) (hp : IsPosition (↑H.x) Player.one) :
                  (↑H.x)[(↑H.x).length - 1] = ↑((H.dropLast h).extension ⋯)
                  theorem GaleStewartGame.BorelDet.Zero.TreeLift.x_mem_tree' {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) (h : 2 * k + 2 ≤ (↑H.x).length) (hp : IsPosition (↑H.x) Player.one) :
                  theorem GaleStewartGame.BorelDet.Zero.TreeLift.conLong_or_lost {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) :
                  H.preLift.ConLong ∨ ∃ (h : 2 * k + 2 ≤ (↑H.x).length), (H.lift h).Lost
                  theorem GaleStewartGame.BorelDet.Zero.TreeLift.lost_of_lost' {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} {H : TreeLift hyp} {h : 2 * k + 2 ≤ (↑H.x).length} (hL : (H.lift h).Lost') :
                  (H.lift h).Lost
                  theorem GaleStewartGame.BorelDet.Zero.TreeLift.x_mem_tree_short' {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} {n : ℕ} (H : TreeLift hyp) (h' : 2 * k + 2 ≤ (↑H.x).length) (h : n ≤ 2 * k) (hp : IsPosition (List.take n ↑H.x) Player.zero) :
                  theorem GaleStewartGame.BorelDet.Zero.TreeLift.x_mem_tree_short {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} {n : ℕ} (H : TreeLift hyp) (h' : 2 * k + 2 ≤ (↑H.x).length) (h : n ≤ 2 * k) (hp : IsPosition (List.take n ↑H.x) Player.zero) :
                  def GaleStewartGame.BorelDet.Zero.TreeLift.WinnableOrLost {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) :

                  Auxiliary declaration for the Borel determinacy formalization.

                  Equations
                  Instances For
                    noncomputable def GaleStewartGame.BorelDet.Zero.TreeLift.wLLift' {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) (hWL : H.WinnableOrLost) :

                    Auxiliary declaration for the Borel determinacy formalization.

                    Equations
                    Instances For
                      @[simp]
                      theorem GaleStewartGame.BorelDet.Zero.TreeLift.wLLift'_to_lift {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) (hWL : H.WinnableOrLost) :
                      (H.wLLift' hWL).toLift = H.lift ⋯
                      theorem GaleStewartGame.BorelDet.Zero.TreeLift.wLift'_eq_wLLift' {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) {h : 2 * k + 2 ≤ (↑H.x).length} (hW : (H.lift h).Winnable) :
                      hW.toWLift' = H.wLLift' ⋯
                      theorem GaleStewartGame.BorelDet.Zero.TreeLift.lLift'_eq_wLLift' {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) {h : 2 * k + 2 ≤ (↑H.x).length} (hL : (H.lift h).Lost) :
                      hL.toLLift' = H.wLLift' ⋯
                      theorem GaleStewartGame.BorelDet.Zero.TreeLift.lift_mem_tree_short {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) (hWL : H.WinnableOrLost) (n : ℕ) (hn : n < 2 * k + 1) (hp : IsPosition (↑(Descriptive.Tree.take n (H.wLLift' hWL).lift)) Player.zero) :
                      (H.wLLift' hWL).liftVal[n] = ↑(H.R (Descriptive.Tree.take n (H.wLLift' hWL).lift) hp)
                      theorem GaleStewartGame.BorelDet.Zero.TreeLift.wLift'_eq_wLLift'_long {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} {n : ℕ} (H : TreeLift hyp) {h : 2 * k + 2 ≤ (↑H.x).length} (hW : (H.lift h).Winnable) (hp : IsPosition (↑(Descriptive.Tree.take n hW.toWLift'.lift)) Player.zero) :
                      ↑(H.R (Descriptive.Tree.take n hW.toWLift'.lift) hp) = ↑(H.R (Descriptive.Tree.take n (H.wLLift' ⋯).lift) ⋯)
                      theorem GaleStewartGame.BorelDet.Zero.TreeLift.lLift'_eq_wLLift'_long {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} {n : ℕ} (H : TreeLift hyp) {h : 2 * k + 2 ≤ (↑H.x).length} (hL : (H.lift h).Lost) (hp : IsPosition (↑(Descriptive.Tree.take n hL.toLLift'.lift)) Player.zero) :
                      ↑(H.R (Descriptive.Tree.take n hL.toLLift'.lift) hp) = ↑(H.R (Descriptive.Tree.take n (H.wLLift' ⋯).lift) ⋯)
                      theorem GaleStewartGame.BorelDet.Zero.TreeLift.get_eq_get_take {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} {n : ℕ} (H : TreeLift hyp) (hn : n < (↑H.x).length) (hk : 2 * k ≤ n) :
                      (↑H.x)[n] = (↑(H.take (n + 1) ⋯).x)[(↑(H.take (n + 1) ⋯).x).length - 1]
                      theorem GaleStewartGame.BorelDet.Zero.TreeLift.wLift_mem_tree {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) (h : 2 * k + 2 ≤ (↑H.x).length) (hW : (H.lift h).Winnable) :
                      theorem GaleStewartGame.BorelDet.Zero.TreeLift.lLift_mem_tree {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) (h : 2 * k + 2 ≤ (↑H.x).length) (hL : (H.lift h).Lost) :
                      theorem GaleStewartGame.BorelDet.Zero.TreeLift.losable_subtree {A : Type u_1} {G : Game A} {k : ℕ} {hyp : Hyp G k} (H : TreeLift hyp) {h : 2 * k + 2 ≤ (↑H.x).length} (hL : (H.lift h).Losable) (hnL : ¬∃ (h' : 2 * k + 2 ≤ (↑(H.dropLast h).x).length), ((H.dropLast h).lift h').Lost) :
                      List.drop (2 * k + 1 + ⋯.num) ↑H.x ∈ ⋯.strat.pre.subtree