Running the search to saturation #
⚠️ Unreviewed by Bolton
The search is run for as many steps as there are configurations. Each step advances the counter by one, so after that many steps the counter has passed every record — there are at most as many records as configurations — and the search is complete.
Main definitions #
Complexity.polyRuler— a ruler of polynomial lengthComplexity.searchState— the unpacked search state afternsteps
Main results #
Complexity.searchState_counter— the counter counts the stepsComplexity.searchState_ok— the invariant holds throughoutComplexity.searchState_complete— a long enough run finds every reachable configuration
Rulers of polynomial length #
A ruler whose length is a polynomial in the input length.
Equations
Instances For
The block ruler of a polynomial window.
The state after n steps #
The invariant holds throughout the run.
A long enough run finds every reachable configuration.
What the accept scan on the finished search decides #
The scan fires only on a genuinely accepting configuration.
The scan fires whenever an accepting configuration is reachable.
The search as one polynomial-time function #
The initial record, built straight from the input.
Equations
- Complexity.initRecord tm R x = Complexity.Cobham.initFn (tm.branchTM false) R x
Instances For
The packed search, one step per bit of the ruler.
Equations
- Complexity.searchRun tm R V₀ ruler = (Complexity.searchStep tm (Complexity.codeBlocks k))^[ruler.length] (Complexity.searchPack R [] V₀)
Instances For
The visited string a search leaves behind.
Equations
- Complexity.searchVisited tm R V₀ ruler = Complexity.pairSnd (Complexity.pairSnd (Complexity.searchRun tm R V₀ ruler))
Instances For
The search is polynomial-time, given a polynomial bound on its state.
The verdict #
The whole decision: search the configuration graph, then scan the visited string for an accepting record.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The verdict decides the language.
The verdict is polynomial-time.
The containment #
NL ⊆ P. A log-space nondeterministic machine's configuration graph has
polynomially many nodes, and the worklist search above walks all of it in
polynomial time.