The step bound Savitch's recursion starts from #
⚠️ Unreviewed by Bolton
Complexitylib.Classes.Containments.Internal.ReachIn halves a step bound; this file supplies
the bound to start from. A machine using polynomial space has at most 2 ^ poly configurations,
so reachability is always witnessed within 2 ^ poly steps, and halving that bound bottoms out
after poly levels. That is the whole reason Savitch's recursion is affordable: its depth is
polynomial and each level stores one configuration, itself of polynomial size.
Main definitions #
codeExpBound— a polynomial dominating the exponent of the configuration count
Main results #
card_Code_le_two_pow_poly— the configuration count is2to a polynomialNPSPACE_bounded_reachability_internal— membership is reachability within2 ^ polystepsNPSPACE_subset_PSPACE_of_recursion_internal— the containment, modulo one machine
A polynomial dominating the exponent of the configuration count of a machine with cardQ
states, k work tapes, and space bounded by p.
Equations
- Complexity.codeExpBound cardQ k p = Polynomial.C cardQ + (Polynomial.X + p + Polynomial.C 2) + Polynomial.C (3 * k) * (p + 1) + Polynomial.C 3 * (p + Polynomial.C 2)
Instances For
The configuration count is 2 to a polynomial.
A language in NPSPACE is reachability within 2 ^ poly steps. This is the input to
Savitch's recursion: halving the bound 2 ^ q(|x|) bottoms out after q(|x|) levels, so the
recursion depth is polynomial.
NPSPACE ⊆ PSPACE, reduced to the existence of one machine. The hypothesis carries the
space witness for tm: without it the configuration graph is unbounded and the step bound
2 ^ q(|x|) is not enough to make the search decidable in polynomial space.