On Mar 28, 7:12 pm, Peter Olcott <NoS...@OCR4Screen.com> wrote:
> Bug free means
existing, since ALL TMs are "bug free" BY DEFINITION.
> that:
> 1) Whenever Halts() halts in its accept state its input tm would halt on
> its input.
Since Halts() does not exist, THIS IS MEANINGLESS.
What you MEAN to say is that if you have some CANDIDATE tm
h -- NOT Halts(), then *h*, NOT Halts(), is bug-free if h satisfies
all these constraints. It will of course turn out that you have
specified the constraints SO POORLY that TONS of h's will meet them
WITHOUT being "bug-free" -- they will have TONS of bugs in the form
of FAILURE TO ANSWER questions that CLEARLY ARE answerable.
> 2) Whenever Halts() halts in its reject state its input tm would not
> halt on its input.
> 3) The only cases that Halts() does not halt are those cases that are
> undecidable for it.
OK, here are two TMs.
Each of them is very simple. It just has 1 instruction and 1 state
(the start state).
It reads the first cell of its input tape (as all TMs are required to
do) and then
TM#1, named H, halts.
TM#2, named L, writes something in its cell and advances 1 cell to the
right,
and then transitions back to the same state (whence it must
necessarily do the same thing again,
and thus keep advancing to the right forever, and therefore never
halt, which is why we named it L).
H stands for "Halt"; L stands for "Loop".
There must, therefore, ALSO exist a THIRD tm, call it h (h takes 2 arg/
parms)
that halts/accept-true when its first input is H (it doesn't matter
what the 2nd input is since
H ignores its input anyway), and halts/reject-false when its 1st input
is L (it doesn't matter
what the 2nd input is since L loops on all inputs). This simple tm h
is simple because IT LOOPS
ON ALL other inputs. In other words, it knows that 1 program (namely
H) that halts on all inputs
will halt, and that 1 program (namely L) that loops on all inputs will
loop, BUT IT KNOWS *NOTHING* else.
ALL other cases ARE[what YOU WRONGLY call]"UNDECIDABLE" for THIS h.
This is why Ben is wrong to indulge your definitions; we can't EVEN
SAY what the problem
is if you have already stolen the word.
Confronted with h, YOU HAVE A PROBLEM.
YOUR PROBLEM IS, that by your definition, h IS BUG-FREE.
> Wasn't this entirely self-evidently logically entailed by the term
> "bug-free" ?
> Is there anything at all that "bug-free" could possibly correctly mean
> besides the above specification?
Well, SURE, it could MEAN that h actually WAS bug-free, that in
ADDITION to
satisfying "If h accept-halts, it machine input halts on its argument
input", h ALSO
satisfied THE CONVERSE of that, namely, "if its machine input doesn't
halt on its
argument input THEN h accept-halts". And analogously for reject-
halts.
IN OTHER words, INSTEAD of starting with "Whenever", bug-free MIGHT
have meant
that h accept-halts WHENEVER its machine-input halts on its argument-
input.
In other words, YOU SAID IT BACKWARDS.