Base-2 logarithm on ℕ, used as the canonical space bound for the class L = SPACE(log n).
Instances For
A log-space Turing machine configuration (q, p_1, p_2, t) consisting of
the current state, the input-tape head position p_1, the work-tape head
position p_2, and the contents t of the work tape.
Instances For
BoundedLogSpaceConfig Q Γ n s is a finite type, inherited from the
product structure of its components.
Convert an ordinary Turing-machine configuration into the log-space
configuration view by taking the input head position to be |c.headPos|,
initializing the work head to 0, and copying the tape as the work tape.
Instances For
IsAtLeastLog f asserts that f grows at least as fast as log₂, i.e.
log₂ n ≤ f n for every n. This is the standard hypothesis under which
Immerman–Szelepcsényi gives NSPACE(f) = coNSPACE(f).
Instances For
Immerman–Szelepcsényi Theorem. For any space bound f with
f(n) ≥ log₂ n, the class NSPACE(f) is closed under complementation:
if A ∈ NSPACE(f) then Aᶜ ∈ NSPACE(f).
NSPACE(f) = coNSPACE(f) for any f ≥ log₂, an immediate consequence
of Immerman–Szelepcsényi applied to both A and Aᶜ.
BoundedReachable G d s t holds when t is reachable from s in the
graph G using at most d edge steps. The weaken constructor pads a
d-step path into a (d+1)-step path, ensuring monotonicity in d.
- refl {V : Type u_1} {G : V → V → Prop} (s : V) : BoundedReachable G 0 s s
- step {V : Type u_1} {G : V → V → Prop} {d : ℕ} {s u t : V} : BoundedReachable G d s u → G u t → BoundedReachable G (d + 1) s t
- weaken {V : Type u_1} {G : V → V → Prop} {d : ℕ} {s t : V} : BoundedReachable G d s t → BoundedReachable G (d + 1) s t
Instances For
Inductive step in the Immerman–Szelepcsényi argument: given an NL
procedure for computing c_d, one can build an NL procedure for deciding the
distance-(d+1) path predicate, from which an NL procedure for c_{d+1} is
obtained. This packages those two abstract steps into the successor case.
If c is a halting configuration of M, then M.step c = c: halting
configurations are fixed points of the transition function.
Once M has halted by step n, running it further does nothing:
M.run c m = M.run c n for every m ≥ n.
Monotonicity of halting: if M is in a halting configuration after n
steps and n ≤ m, then it is also in a halting configuration after m steps.
A deterministic TM running in space g(n) must halt within
O(2^{O(g(n))}) steps, since otherwise some configuration would repeat and
the machine would loop. Concretely there exist a time bound t and a
constant K > 0 with M.runsInTime t and t n ≤ K · 2^(K · g n).
Simulation of a space-g NTM by a deterministic TM with time
O(2^{O(g)}): searching the configuration graph of an NTM whose space usage
is g can be done deterministically in time exponential in g.
Packaging of dtm_simulates_ntm: every space-g NTM is decided by a
deterministic TM in time K · 2^(K · g n) for some constant K > 0. This is
the key tool behind NL ⊆ P (and more generally NSPACE(g) ⊆ DTIME(2^{O(g)})).
L ⊆ P. Every language decidable in deterministic log-space is also
decidable in deterministic polynomial time. The proof combines
space_bounded_decider_poly_time (giving a time bound of K · 2^(K · g n))
with the bound g n ≤ c · log₂ n from the log-space hypothesis, yielding a
polynomial time bound K · n^(K · c + 1).