Malcolm McLean said:
Turing's universal machine he called "u". U takes quintuples, in a certain
order, that specify another Turing machine, so that the first entry in
the quintuple represents the current state, the second entry the symbol
on the tape, the third entry the symbol to write to the tape, the fourth
entry the direction to move the print head, and the last entry the state
to put the machine into.
You do know that I know this stuff, yes?
Now let's call that machine U(T), because it's Turings.
Personally, I'd use a subscript (U_t in ASCII) but why give it another
name? As you've said it's already got a name, Turing called it U. Why
give it another?
Now let's imagine that we have a similar machine, which is exactly the
same as U(T), except that the first entry and the second entry are
transposed.
What entries? The only use of the term so far is in your description of
a valid input for U (or U(T) as you also want to call it), but U has no
"entries" to swap -- it's just a TM, not a TM plus some specific input tape.
It should be obvious that if we run U(2) on input designed
for U(T), it won'e emulate the same Turing machine as U(T), but if
we run U(2) on input designed for U(T), with the column transposed,
we will get the same Turing machine.
Ah, you mean that U(2) is a universal TM that expect differently ordered
input. You made very heavy going of saying that.
It should also be obvious that we can specify U(T) in U(2) format. When
we run U(2) on this, it emulates U(T), it then emulates any Turing
machine.
So? If U is universal, U(2) will be too, and there are much simpler
proofs of that fact. Students of TMs learn about computable reductions,
from which you get simpler proofs, together with a body of results that
can be combined to answers lots of questions like this.
Now let's transpose columns 2 and 3, and do the same thing. Let's call
this machine U(3). U(3) can also emulate U(T). But there's an infinite
number of transformations we can apply to Turing's data format,
so an infinite number of machines which, fed the appropriate input,
will emulate U(T).
So what? There is a staggering simple proof of this fact, if you really
want to prove it, but why would you?
So how to we know that a machine is in U, that is, that there is sequence of
bits which, when we feed it, will allow it to emulate U(T)? Obviously you
can prove it in many cases by showing that the machine has a sub-graph
which is U(T), You can prove it in others by showing that there is a bit
sequence which puts it into U(T) emulation mode. But you can't show that
there is no such sequence by running it, and you can't analyse its state
graph except by running it.
See Rice's theorem -- a much better way to get to the fact that the set
of universal TMs is not TM-decidable.
So I don't know if there's a minimum criterion for which we can say
"this state graph isn't rich enough for U", I can't describe the
minimal machine in U.
I won't go there. I suspect far too many M-words.
Now, does any of this answer my question about why you are pontificating
about this? I wanted to close the technical discussion off, but I was
curious about why you thought you should post about this stuff.