Thursday, 8 February 2007

lo.logic - a proof that L_min is not in coRE?

This is a problem with a surprisingly unique history. See the survey




Marcus Schaefer: A guided tour of minimal indices and shortest descriptions. Arch. Math. Log. 37(8): 521-548 (1998)




for more discussion. A proof that the problem is not coRE can be extracted from page 6 of that survey. For convenience I will give a self-contained argument here. Unfortunately it is not as simple as the "not-RE" proof!



We will show a Turing reduction from LALLLALL = { M | L(M)=SigmastarM | L(M)=Sigmastar} to LminLmin, which suffices since LALLLALL is complete for the second level of the arithmetic hierarchy (implying it is not coRE). Intuitively, this means that given an oracle for LminLmin we could decide the halting problem for machines which have oracles to the halting problem. A coRE language cannot have this property.



Let hatMhatM be the lexicographically first machine that accepts no inputs, under some encoding of machines.



First, we observe that given an oracle for LminLmin, we can effectively determine whether M(M)M(M) halts or not, for a given MM. (Recall this is enough to determine whether M(x)M(x) halts or not, for given MM, xx.)



Define a machine NMNM which on input tt, simulates M(M)M(M) for up to tt steps and halts iff the simulation halts. To determine if M(M)M(M) halts, make a list calLcalL of all machines MneqhatM with MleqNM such that MinLmin. This list can be computed using an oracle for Lmin. Observe that all such machines accept at least one input, since we excluded hatM and they are all minimal. Via dovetailing, we can effectively find integers t such that each M(M) halts in t steps. Let t be the largest such t. Then M(M) halts iff M(M) halts in at most t steps.



Now that we can decide the halting problem, we turn to computing a function version of Lmin: given an oracle for Lmin, we can output the minimum equivalent machine M to the input M. If MinLmin this is easy. Otherwise we make a list calL of all machines that are in Lmin and are smaller than M. Then we begin to compute, for increasing inputs x, bit tables indicating the accept/reject behavior of all machines in calL, on the inputs seen so far. (We can do this because we can solve the halting problem with the oracle!) When we find that a machine M differs on an input from M, we remove it from calL. If M is not minimal, there will eventually be only one machine M left which has not yet differed from M, since all machines in calL are minimal. If M is not minimal then this M must be the minimum machine.



Finally, we define a machine N that recognizes LALL with an oracle for Lmin. Let MALL be the minimum Turing machine that accepts everything. If the input M is less than MALL, output NO. (M must reject something.) Otherwise compute the minimum machine equivalent to M. If M=MALL then output YES otherwise output NO. Note L(N)=LALL.

No comments:

Post a Comment