What Savitch's recursion computes #
⚠️ Unreviewed by Bolton
Complexity.Sav.rchB and Complexity.Sav.accB are the values the abstract
machine returns, defined purely on bitstrings: a level-n reachability question
is answered by trying every string of the enumeration's width as a midpoint. This
file identifies them with reachability in the configuration graph, for as long as
the strings involved are codes of configurations reachable from the start.
The two directions are both easy once the statement is right. Soundness follows because a midpoint that passes the first half is itself the code of a reachable configuration, so the induction hypothesis applies to it; completeness follows because the enumeration is every string of the code width, and a code has exactly that width.
Main results #
Complexity.baseReachB_cfgCode,Complexity.baseAccB_cfgCode— the base testsComplexity.rchB_cfgCode,Complexity.accB_cfgCode— the recursion
The bottom of the enumeration #
The base tests as propositions #
One step of the graph #
The recursion against the graph #
The recursion decides bounded reachability.
The recursion decides bounded acceptance.