From: Jens Auer on
Peter Olcott schrieb:

>> There is a function called
>> DetectedSelfReferenceTogglesTheReturnValue(SourceCode,
>> InputData). After finding the self-reference (which is IMHO undecidable as
>> well), it has to check the expression after the self-reference if it is the
>> opposite of the WillHalt(s,s) expression. In other words,
>> DetectedSelfReferenceTogglesTheReturnValue(SourceCode,
>> InputData) has to determine the halting value of the expression following the
>> condition, in the LoopIfHalts example this would be while(TRUE); this is a
>> circular definition.
>
> It is not a circular definition, it is a stub for details left out.
It doesn't matter how you actually define this stub. To give the correct
answer, you first have to check if an expression f(s,s) == TRUE is
equivalent to WillHalt(s,s) == TRUE. Ups, you first need to see if
f(s,s) halts => first circle.
If the condition is TRUE, you have to check if the expression in the
then-statement does not halt. Ups, second circle.
From: Jens Auer on
Peter Olcott schrieb:
> "Jens Auer" <jens.auer-news(a)betaversion.net> wrote in message
> news:453c5c09(a)news.ish.de...
>> Peter Olcott wrote:
>>> What is the result of MalignantSelfReference(g,g) FALSE
>>> what is the result of WillHalt(g, g) TRUE
>>>
>>> WillHalt(), LoopIfHalts() and g() all have different execution traces.
>> Then MalignantSelfReference(g,g) can see that f is different from WillHalt, in
>> other words it shows that f is not equivalent to WillHalt. This is not
>> possible in general because it involves, as Patricia notes, solving the
>> halting problem. For computing MalignantSelfReference(g,g), you need to solve
>> the halting problem for g, but MalignantSelfReference(g,g) is itself part of
>> your halting problem solver. Do you see the problem?
>
> Rice's theorem? A possible practical way around the results of this theorem
> would be to constrain the means of specifying algorithms to some form of
> well-ordered set where Rice's theorem would not apply.
I don't know what you mean by "constrain the means of specifying
algorithms to some form of well-ordered set", but you cannot change the
rules of game as you need. The Halting Problem is defined on Turing
Machines, so you must cope with either TMs or some equivalent form.
And the problem is not Rice's theorem but the circular dependance of
WillHalt and SMR as you defined them.
> In this case one could not only possibly achieve a universal halt detector that
> works correctly on every program that adheres to the required specification
> conventions, but, further still an automatic logical validator. In any case my
> original point still applies.
You do know that first-order predicate logic itself is undecidable? Or
this another sort of an ill-formed question, to ask whether a logic
statement in first-order predicate logic is true or not?
> The classical form of the Halting Problem still
> seems to be more accurately construed as an ill-formed question, rather than an
> undecidable problem.
It is undecidable in the sense that decision problems are defined in CS.
If you want to define this in any other way, go on but please don't call
it Halting Problem and use another word than decision problem. The only
ill-formedness is that the problem cannot be solved in general. Sad
enough, but perfectly valid and provably correct. To show that the
general prove is not correct, you must find an error in the reasoning.
Than, you can try to show a computable function with which solves the
halting problem for TMs.
From: Peter Olcott on

"Jens Auer" <jens.auer-news(a)betaversion.net> wrote in message
news:ehipim$10di$1(a)f1node01.rhrz.uni-bonn.de...
> Peter Olcott schrieb:
>
>>> There is a function called
>>> DetectedSelfReferenceTogglesTheReturnValue(SourceCode,
>>> InputData). After finding the self-reference (which is IMHO undecidable as
>>> well), it has to check the expression after the self-reference if it is the
>>> opposite of the WillHalt(s,s) expression. In other words,
>>> DetectedSelfReferenceTogglesTheReturnValue(SourceCode,
>>> InputData) has to determine the halting value of the expression following
>>> the condition, in the LoopIfHalts example this would be while(TRUE); this is
>>> a circular definition.
>>
>> It is not a circular definition, it is a stub for details left out.
> It doesn't matter how you actually define this stub. To give the correct
> answer, you first have to check if an expression f(s,s) == TRUE is equivalent
> to WillHalt(s,s) == TRUE. Ups, you first need to see if f(s,s) halts => first
> circle.
> If the condition is TRUE, you have to check if the expression in the
> then-statement does not halt. Ups, second circle.

I have updated my position to clarify it and correct any inconsistencies. My
updated position is as follows:

The question posed to the TM is: "Does the program halt { State(HALTS) or
State(NOT_HALTS) }?"

is an ill-formed question because the TM is constrained to provide its response
from a solution set that contains no correct answer. Thus the Halting Problem
meets the definition of an ill-formed question. The Halting Problem is only
undecidable because it has the same form as the question" "How tall are you
green or blue?"

It was the recent dialogue with Daryl, that enabled me to correct the
inconsistencies and ambiguities with my prior position. Thanks Daryl!


From: Chris Menzel on
On Mon, 23 Oct 2006 18:21:02 +0200, Jens Auer
<jens.auer-news(a)betaversion.net> said:
> Peter Olcott schrieb:
>> In this case one could not only possibly achieve a universal halt
>> detector that works correctly on every program that adheres to the
>> required specification conventions, but, further still an automatic
>> logical validator. In any case my original point still applies.
>
> You do know that first-order predicate logic itself is undecidable?

Of course he doesn't.

> Or this another sort of an ill-formed question,

For him, no doubt.

> to ask whether a logic statement in first-order predicate logic is
> true or not?

You mean "valid", of course.

>> The classical form of the Halting Problem still seems to be more
>> accurately construed as an ill-formed question, rather than an
>> undecidable problem.

> It is undecidable in the sense that decision problems are defined in CS.
> If you want to define this in any other way, go on but please don't call
> it Halting Problem and use another word than decision problem. The only
> ill-formedness is that the problem cannot be solved in general.

In other words, it is not ill-formed at all. ;-)

From: Daryl McCullough on
Peter Olcott says...

>The question posed to the TM is: "Does the program halt { State(HALTS) or
>State(NOT_HALTS) }?"

No, the question is just "Does program P halt on input X?". If you
are the one who is writing WillHalt, you get to decide what it means
for WillHalt to have figured out that the answer is "yes", and you
get to decide what it means for WillHalt to have figured out that
the answer is "no".

--
Daryl McCullough
Ithaca, NY