Step-counted reachability and the halving recursion #
⚠️ Unreviewed by Bolton
Savitch's theorem rests on one combinatorial identity: a walk of at most m + n steps is a walk
of at most m steps followed by a walk of at most n steps, and conversely. Taking m = n
turns a bound of 2t into two independent subproblems with bound t, so a bound of 2 ^ i
recurses to depth i — the recursion whose stack a space-bounded machine can afford because
each level stores only one midpoint.
Nothing here is about space, and nothing is about a machine: this is the pure statement that the midpoint search is correct, which is the part of Savitch's argument that has to be true before any bookkeeping is attempted.
The same step counting supplies the numbers that the Immerman–Szelepcsényi counting argument
compares, so NLSubsetCoNL draws on this file too.
Main results #
NTM.ReachesCfgIn.trans,NTM.ReachesCfgIn.split— walks concatenate and splitNTM.reachesCfgLe_add_iff— the midpoint recursionNTM.reachesCfgLe_two_mul_iff,NTM.reachesCfgLe_two_pow_succ_iff— its halving formsNTM.mem_reachSet_iff_reachesCfgLe— the rounds of the search are exactly the step boundsNTM.reachesCfg_iff_reachesCfgLe— every reachable configuration is reachable within the number of configuration codes
Walks concatenate and split #
Walks concatenate, and their lengths add.
Walks split at any point. A walk of s + t steps passes through a midpoint after
exactly s of them.
A step bound can always be relaxed.
A configuration reaches itself in no steps.
The midpoint recursion #
Savitch's recursion. A walk of at most m + n steps is exactly a walk of at most m
steps to some midpoint followed by a walk of at most n steps from it. The midpoint is the only
thing a recursive procedure has to remember.
The halving form: a bound of 2 t splits into two independent bounds of t.
The recursion Savitch's machine runs. A bound of 2 ^ (i + 1) recurses to two
subproblems with bound 2 ^ i, so the depth is i and each level stores one midpoint.
Agreement with the breadth-first rounds #
Every reachable configuration is reachable within the number of codes. A walk longer than that repeats a configuration, and the repetition can be cut out.