194 13 Further Topics From Classical Complexity Theory
So as long as we store no more than constantly many counters and configu-
rations at one time, the required space will be bounded by O(s(n)) and by
Remark 13.2.2, this is equivalent to space bounded by s(n).
In order to prove that L ∈
co-NTAPE(s(n)) we must reject inputs x ∈ L
on every computation path and we must accept inputs x/∈ L on at least one
computation path. On some paths the nondeterministic algorithm M
for
L
will be certain that x ∈ L and halt with the answer “x ∈ L”. For
L,“x ∈ L”is
equivalent to rejecting. On some paths M
will not be certain whether x ∈ L
or x/∈ L. Since we must make the correct decision for all x ∈ L, algorithm
M
will halt with the conclusion “x ∈ L” on these paths. This will guarantee
a correct decision whenever x ∈ L.Furthermore,M
must guarantee for any
x/∈ L there is at least one path on which one can be sure that x/∈ L.
When can we be sure that x/∈ L? Only if we know that none of the
configurations that can be reached from the initial configuration K
0
(x)forx
are accepting. Suppose we know the number of configurations A(x)thatcan
be reached from K
0
(x). Then we could proceed as follows. We step through the
configurations of M in lexicographic order. To do this we only need to store
the current configuration K. Then we check nondeterministically whether it
is possible to get from K
0
(x)toK in 2
c·s(n)
steps. This requires space for
a counter and two configurations that contain the amount of computation
time already used, the configuration reached K
, and a nondeterministically
generated configuration K
.IfK
is not an immediate successor of K
,then
we halt with the output “x ∈ L”. Now consider the case that the configuration
K
is an immediate successor of K
.IfK
= K, then we continue the process
with K
:= K
and a new nondeterministically generated K
. If we find a
reachable accepting configuration, then we stop with “x ∈ L”. This process
will stop after at most 2
c·s(n)
steps. We use another counter that starts with
the value 1 for the initial configuration. For each other configuration K that
we identify as reachable but not accepting, we increase the counter by one.
If we have tried out all possible configurations K and haven’t stopped, then
we compare the configuration counter z with A(x). In any case z ≤ A(x). If
z<A(x), then we have failed to classify at least one reachable configuration
as reachable with our nondeterministic algorithm. So our attempt to identify
all reachable configurations has failed and we halt and output “x ∈ L”. On
the other hand, if z = A(x), we have identified all reachable configurations
and determined that none of them are accepting. In this case we are certain
that x/∈ L and we can output this result. For every reachable configuration
there is a sequence of configurations of the length considered describing the
corresponding computation. So for x/∈ L there is at least one computation
path in the nondeterministic algorithm just described that leads to the result
“x/∈ L”.
We have proved the theorem if we can show that A(x) can be calculated
nondeterministically. The nondeterministic computation of a number means
that computation paths can be unsuccessfully terminated, that no path can