Documentation

Complexitylib.Circuits.DecisionTree.Restriction

Restricting decision trees #

A fixed query can be eliminated by selecting the corresponding branch. A free query remains and recursively restricts both children. This is the structural simplification used when switching-lemma arguments measure decision-tree depth.

Main results #

Simplify a decision tree under a restriction.

Equations
Instances For
    @[simp]

    The empty restriction is the identity on decision trees.

    theorem Complexity.DecisionTree.eval_restrict (ρ : Restriction) (α : Bool) (tree : DecisionTree) :
    eval α (restrict ρ tree) = eval (ρ.applyTo α) tree

    Evaluating a restricted tree agrees with applying the restriction to its assignment before evaluating the original tree.

    Restricting a decision tree cannot increase its query depth.

    Every variable queried after restriction was queried originally and remains free. Selecting a fixed branch may remove additional variables.

    theorem Complexity.DecisionTree.restrict_comp (ρ₁ ρ₂ : Restriction) (tree : DecisionTree) :
    restrict ρ₂ (restrict ρ₁ tree) = restrict (ρ₁.comp ρ₂) tree

    Sequentially restricting a tree agrees with applying the left-biased composition of the two restrictions once.