Documentation

LeanPool.AFormalizationOfBorelDeterminacyInLean.Tree.TreeBody

LeanPool.AFormalizationOfBorelDeterminacyInLean.Tree.TreeBody #

Auxiliary declarations for the Borel determinacy formalization.

def Descriptive.Tree.body {A : Type u_1} (T : (tree A)) :

The body of a tree T, also written [T] in the literature, is the set of infinite branches, implemented as Stream

Equations
Instances For
    theorem Descriptive.Tree.body_mono {A : Type u_1} {S T : (tree A)} (h : S T) :
    @[simp]
    theorem Descriptive.Tree.take_mem_body {A : Type u_1} {T : (tree A)} {x : Stream' A} (h : x body T) (n : ) :

    Auxiliary declaration for the Borel determinacy formalization.

    def Descriptive.Tree.body.take {A : Type u_1} {T : (tree A)} (n : ) (x : (body T)) :
    T

    Auxiliary declaration for the Borel determinacy formalization.

    Equations
    Instances For
      @[simp]
      theorem Descriptive.Tree.body.take_coe {A : Type u_1} {T : (tree A)} (n : ) (x : (body T)) :
      (take n x) = Stream'.take n x
      theorem Descriptive.Tree.mem_body_of_take {A : Type u_1} (m : ) (T : (tree A)) (x : Stream' A) (h : nm, Stream'.take n x T) :
      x body T
      def Descriptive.Tree.bodyInfHom {A : Type u_1} :
      sInfHom (↥(tree A)) (Set (Stream' A))

      Taking bodies preserves arbitrary intersections

      Equations
      Instances For
        @[simp]
        theorem Descriptive.Tree.body_inter {A : Type u_1} {S T : (tree A)} :
        body (ST) = body S body T
        @[simp]
        @[simp]
        theorem Descriptive.Tree.body_isClosed {A : Type u_1} (T : (tree A)) :
        @[simp]
        theorem Descriptive.Tree.subAt_body {A : Type u_1} (T : (tree A)) (x : List A) :
        body (subAt T x) = (fun (x_1 : Stream' A) => x ++ₛ x_1) ⁻¹' body T
        def Descriptive.Tree.body.append {A : Type u_1} {T : (tree A)} (x : List A) (y : (body (subAt T x))) :
        (body T)

        Appending lists to the front of a branch lifts as an operation on bodies

        Equations
        Instances For
          @[simp]
          theorem Descriptive.Tree.body.append_coe {A : Type u_1} {T : (tree A)} (x : List A) (y : (body (subAt T x))) :
          (append x y) = x ++ₛ y
          @[simp]
          theorem Descriptive.Tree.body_append_nil {A : Type u_1} (T : (tree A)) (y : (body T)) :
          theorem Descriptive.Tree.body.append_con {A : Type u_1} {T : (tree A)} (x : List A) :
          theorem Descriptive.Tree.range_body_append {A : Type u_1} (T : (tree A)) (x y : List A) (h : x = y) :
          def Descriptive.Tree.body.drop {A : Type u_1} {T : (tree A)} (n : ) (x : (body T)) :
          (body (subAt T (Stream'.take n x)))

          Dropping the first elements of a branch lifts as an operation on bodies

          Equations
          Instances For
            @[simp]
            theorem Descriptive.Tree.body.drop_coe {A : Type u_1} {T : (tree A)} (n : ) (x : (body T)) :
            (drop n x) = Stream'.drop n x
            @[simp]
            theorem Descriptive.Tree.subAt_body_image {A : Type u_1} {T : (tree A)} (X : Set (body T)) (x : List A) :
            theorem Descriptive.Tree.subAt_body_image_compl {A : Type u_1} {T : (tree A)} (X : Set (body T)) (x : List A) :
            Subtype.val '' (body.append x ⁻¹' X) = (fun (x_1 : Stream' A) => x ++ₛ x_1) ⁻¹' body T \ (fun (x_1 : Stream' A) => x ++ₛ x_1) ⁻¹' Subtype.val '' X
            theorem Descriptive.Tree.subAt_body_image_compl_preimage {A : Type u_1} {T : (tree A)} (X : Set (body T)) (x y : List A) :
            (fun (a : Stream' A) => y ++ₛ a) ⁻¹' Subtype.val '' (body.append x ⁻¹' X) = (fun (a : Stream' A) => x ++ₛ (y ++ₛ a)) ⁻¹' body T \ (fun (a : Stream' A) => x ++ₛ (y ++ₛ a)) ⁻¹' Subtype.val '' X
            theorem Descriptive.Tree.subAt_body_image_compl_compl_preimage {A : Type u_1} {T : (tree A)} (X : Set (body T)) (x y : List A) :
            (fun (a : Stream' A) => y ++ₛ a) ⁻¹' Subtype.val '' (body.append x ⁻¹' X) = (fun (a : Stream' A) => x ++ₛ (y ++ₛ a)) ⁻¹' Subtype.val '' X
            theorem Descriptive.Tree.mem_subAt_body {A : Type u_1} {T : (tree A)} (X : Set (body T)) (x : List A) (y : (body (subAt T x))) :
            @[simp]
            theorem Descriptive.Tree.pullSub_body {A : Type u_1} (T : (tree A)) (x : List A) :
            body (pullSub T x) = (fun (x_1 : Stream' A) => x ++ₛ x_1) '' body T