On 8/30/2020 6:23 PM, Andy Walker wrote:
> On 30/08/2020 21:19, olcott wrote:
>> Or we could construe not halting as an empty set of output. As long
>> as the two machines produced equivalent output when they halted or
>> failed to halt on equivalent input the two machines are black box
>> equivalent.
>
> You don't know that the machines are going to fail to halt,
> in general. Halting problem. You don't know how long to wait to
Yes that is why a refutation of the conventional self-referential
halting problem proofs would be significant.
> find out if they could halt. Busy Beaver problem. You don't know
> whether two machines are equivalent, black box or otherwise. *If*
> you know that both machines halt, *then* you can find out whether
> they are equivalent. If the machines are equivalent on some input,
> you don't know whether they are equivalent on other inputs. Since
That two machines always derive equivalent output from equivalent input
and fail to halt on the same inputs proves that these two machines are
equivalent.
We may also know that two machines are equivalent on all inputs if each
machine can simulate the other.
> some very small TMs are UTMs, even quite short C programs [eg] are
> completely inscrutable, in general, given arbitrary data.
>
> If you want to know things about programs, then you have to
> write them in such a way that theorems about them can be proved.
I only need to prove that certain computations that halt on specific
inputs are equivalent to a Turing machine on equivalent input.
My whole goal here is to prove that a halt decider written in "C" that
analyzes the x86 machine language of itself could be directly applied to
Turing machines.
> Then you may be able to say interesting things about programs that
> conform to your specification. Otherwise the future is somewhat
> bleak.
>
Any virtual machine that implements an abstract model of computation
that is provably Turing equivalent will have identical computation to
any concrete hardware implementation of this abstract model until a
computation on this concrete model requires more RAM than it has.
In simpler words a program written in the virtual machine language will
run exactly the same (identical execution trace) on the abstract machine
as the concrete machine unless and until the concrete machine runs out
of RAM.
If we did not hit the RAM limit then we know that the execution of the
program on concrete machine would be equivalent to executing an
equivalent program on an actual Turing machine.
Every "C" language program that can be translated into the machine
language of any virtual machine that is provably Turing equivalent would
derive equivalent output to equivalent input on an actual Turing machine.
This establishes the basis of the line-of-reasoning showing that my
intuition that "C" programs always have been equivalent to Turing
machines is probably correct.
The above possibly creates a new term-of-the-art of computer science, a
Turing equivalent computation:
A Turing equivalent computation is any computation that can be
translated into the machine language of any virtual machine that is
provably Turing equivalent.
> Note that the programs that control autonomous vehicles,
> nuclear power stations, ..., though usually much more carefully
> written than the average student project, are, in the present
> state of technology, in the bleak/inscrutable set rather than
> the interesting set. The "comp.risks" newsgroup is full of the
> consequences of such bleakness, and should be read by every
> computer professional. But it isn't, and won't be, so lessons
> are learned after disasters rather than before. We live in a
> more dangerous world as a consequence, for all the benefits that
> computers have brought. Enjoy!