Canonical deepest paths in finite decision trees -- proof internals #
theorem
Complexity.DecisionTree.On.nodup_deepPathVars_internal
{N : ℕ}
(tree : On N)
(readOnce : tree.PathReadOnce)
:
tree.deepPathVars.Nodup
theorem
Complexity.DecisionTree.On.depth_le_card_vars_of_pathReadOnce_internal
{N : ℕ}
(tree : On N)
(readOnce : tree.PathReadOnce)
:
noncomputable def
Complexity.DecisionTree.On.deepPrefixEmbeddingInternal
{N : ℕ}
(tree : On N)
(queryCount : ℕ)
(hdepth : queryCount ≤ tree.depth)
(readOnce : tree.PathReadOnce)
:
The first queryCount query indices on a deep path, packaged as an
embedding when the whole tree is path-read-once.
Equations
- tree.deepPrefixEmbeddingInternal queryCount hdepth readOnce = { toFun := fun (position : Fin queryCount) => tree.deepPathVars.get (Fin.castLE ⋯ position), inj' := ⋯ }
Instances For
noncomputable def
Complexity.DecisionTree.On.deepPrefixValuesInternal
{N : ℕ}
(tree : On N)
(queryCount : ℕ)
(hdepth : queryCount ≤ tree.depth)
:
Branch bit at each of the first queryCount positions of the chosen deep
path.
Equations
- tree.deepPrefixValuesInternal queryCount hdepth position = (tree.deepPath.get (Fin.castLE ⋯ position)).2
Instances For
theorem
Complexity.DecisionTree.On.deepPrefixEmbedding_mem_vars_internal
{N : ℕ}
(tree : On N)
(queryCount : ℕ)
(hdepth : queryCount ≤ tree.depth)
(readOnce : tree.PathReadOnce)
(position : Fin queryCount)
: