Trees in the sense of descriptive set theory #
This file defines trees of depth ω in the sense of descriptive set theory as sets of finite
sequences that are stable under taking prefixes.
Main declarations #
tree A: a (possibly infinite) tree of depth at mostωwith nodes inA
A tree is a set of finite sequences, implemented as List A, that is stable under
taking prefixes. For the definition we use the equivalent property x ++ [a] ∈ T → x ∈ T,
which is more convenient to check. We define tree A as a complete sublattice of
Set (List A), which coerces to the type of trees on A.
Instances For
@[implicit_reducible]
@[simp]
@[implicit_reducible]
instance
Descriptive.instPartialOrderSubtypeSetListMemCompleteSublatticeTree
(A : Type u_1)
:
PartialOrder ↥(tree A)
theorem
Descriptive.Tree.mem_of_append
{A : Type u_1}
{T : ↥(tree A)}
{x y : List A}
(h : x ++ y ∈ T)
:
x ∈ T
theorem
Descriptive.Tree.mem_of_prefix
{A : Type u_1}
{T : ↥(tree A)}
{x y : List A}
(h' : x <+: y)
(h : y ∈ T)
:
x ∈ T
@[implicit_reducible]
theorem
Descriptive.Tree.singleton_mem
{A : Type u_1}
(T : ↥(tree A))
{a : A}
{x : List A}
(h : a :: x ∈ T)
:
[a] ∈ T
@[simp]
theorem
Descriptive.Tree.take_mem
{A : Type u_1}
{T : ↥(tree A)}
{n : ℕ}
(x : ↥T)
:
List.take n ↑x ∈ T
A variant of List.take internally to a tree
Instances For
@[simp]
theorem
Descriptive.Tree.take_coe
{A : Type u_1}
{T : ↥(tree A)}
(n : ℕ)
(x : ↥T)
:
↑(take n x) = List.take n ↑x
@[simp]
@[simp]
The residual tree obtained by regarding the node x as new root
Instances For
@[simp]
theorem
Descriptive.Tree.mem_subAt
{A : Type u_1}
(T : ↥(tree A))
(x y : List A)
:
y ∈ subAt T x ↔ x ++ y ∈ T
@[simp]
@[simp]
@[simp]
theorem
Descriptive.Tree.drop_coe
{A : Type u_1}
(T : ↥(tree A))
(n : ℕ)
(x : ↥T)
:
↑(drop T n x) = List.drop n ↑x
Adjoint of subAt, given by pasting x before the root of T. Explicitly,
elements are prefixes of x or x with an element of T appended
Instances For
theorem
Descriptive.Tree.mem_pullSub_short
{A : Type u_1}
{T : ↥(tree A)}
{x y : List A}
(hl : y.length ≤ x.length)
:
y ∈ pullSub T x ↔ y <+: x ∧ [] ∈ T
theorem
Descriptive.Tree.mem_pullSub_long
{A : Type u_1}
{T : ↥(tree A)}
{x y : List A}
(hl : x.length ≤ y.length)
:
y ∈ pullSub T x ↔ ∃ z ∈ T, y = x ++ z
@[simp]
theorem
Descriptive.Tree.mem_pullSub_append
{A : Type u_1}
{T : ↥(tree A)}
{x y : List A}
:
x ++ y ∈ pullSub T x ↔ y ∈ T
@[simp]
theorem
Descriptive.Tree.mem_pullSub_self
{A : Type u_1}
{T : ↥(tree A)}
{x : List A}
:
x ∈ pullSub T x ↔ [] ∈ T
@[simp]
@[simp]
@[simp]