Abstract Complexity 235
Proof. We build a total recursive function f by diagonalization satisfying
the following two conditions.
(i) For all k, f(n) ≥ f
k
(n)a.e.
(ii) For all i,ifΦ
i
(n) >f
k
(n) i.o. for every k,thenf(n) < Φ
i
(n) i.o.
These two conditions pull f in opposite directions: condition (i) would like
f to be large, and (ii) would like f to be small. However, because we only
have to satisfy (i) a.e. and (ii) i.o., this gives us some flexibility in the
construction. If we can create f satisfying both conditions, we will have
achieved our goal, because (i) guarantees that C
Φ
f
j
⊆ C
Φ
f
, and (ii) says that
if Φ
i
(n) ≤ f(n) a.e., then for some j,Φ
i
(n) ≤ f
j
(n)a.e.,thusC
Φ
f
⊆
i
C
Φ
f
i
.
Now we turn to the construction of f . As in the proof of Theorem J.2, we
construct f by diagonalization. We maintain a queue of pairs (i, k), i ≤ k,
which we can view as the conjecture that Φ
i
(n) ≤ f
k
(n) a.e. When a con-
jecture is violated, we take some corrective action in terms of the definition
of f, retract the conjecture, and replace it with a weaker conjecture.
Stage 0 Define f (0) := 0 and initialize the queue to contain the single
pair (0, 0).
Stage n ≥ 1 Find the first conjecture (i, k) on the queue that is violated
at n; that is, such that Φ
i
(n) >f
k
(n). If such an (i, k) exists, define f(n):=
f
k
(n), remove (i, k) from the queue, and append (i, k +1) at the back of the
queue. If no such (i, k) exists, define f(n)=f
n
(n). In either case, append
(n, n) at the back of the queue.
For any m, there are only finitely many conjectures (i, k)withk ≤ m
ever on the queue (
%
m+2
2
&
to be exact). Once a conjecture is deleted from
the queue, it never returns. If a conjecture on the queue is violated infinitely
often, it is eventually chosen for deletion. If it is violated at some stage,
then the only way it would not be chosen for deletion at that stage is if
some conjecture ahead of it on the queue is chosen instead, but this can
happen only finitely many times. At some stage, all conjectures (i, k)with
k ≤ m that will ever be deleted from the queue have already been deleted,
and thereafter f(n) ≥ f
m
(n). This establishes (i).
For (ii), if Φ
i
(n) >f
k
(n) i.o. for every k, then the conjectures (i, k)for
i ≤ k all go on the queue eventually and are all deleted eventually. When
(i, k) is deleted, f(n) is defined to be f
k
(n) < Φ
i
(n), so f (n) < Φ
i
(n). This
happens infinitely often, therefore f(n) < Φ
i
(n) i.o. 2
The union theorem does not hold without the monotonicity condition
on the f
k
(Miscellaneous Exercise 126).
More of the theory of abstract complexity measures is explored in Mis-
cellaneous Exercises 116–127.