From: Peter Olcott on

"Jens Auer" <jens.auer-news(a)betaversion.net> wrote in message
news:453bd212(a)news.ish.de...
> Peter Olcott wrote:
>> No this is not what I said. If you feed LoopIfHalts2() to WillHalt(), then
>> WillHalt'() sees the MALIGNANT_SELF_REFERENCE to itself.
> So, there is not a single MALIGNANT_SELF_REFERENCE function, but one for each
> function? I have to ask you again, define either the set of MSR functions or
> give a definition of MSR, in terms of pseudo-code, Turing machine program or
> some equivalent statement.

int MalignantSelfReference(SourceCode, InputData) {
if ( IsSourceCode(InputData) )
if ( MatchSelfReferencePattern(SourceCode, InputData) )
if ( DetectedSelfReferenceTogglesTheReturnValue(SourceCode,
InputData) )
return TRUE;
return FALSE;
}

For all the examples provided so far Matching the pattern has not been shown to
be impossible. There might be constructions whereby the first step must be
removed to be comprehensive.


From: Jens Auer on
Peter Olcott wrote:
> No this is not what I said. If you feed LoopIfHalts2() to WillHalt(), then
> WillHalt'() sees the MALIGNANT_SELF_REFERENCE to itself.
Another question: Does the call the MSR in WillHalt(LoopIfHalts2,
LoopIfHalts2) see the self-reference or not? It has to, because WillHalt
and WillHalt' compute equivalent functions. But how can the call to MSR
in WillHalt decide that?
From: Jens Auer on
Peter Olcott wrote:
> int MalignantSelfReference(SourceCode, InputData) {
> if ( IsSourceCode(InputData) )
> if ( MatchSelfReferencePattern(SourceCode, InputData) )
> if ( DetectedSelfReferenceTogglesTheReturnValue(SourceCode,
> InputData) )
> return TRUE;
> return FALSE;
> }
>
> For all the examples provided so far Matching the pattern has not been shown to
> be impossible. There might be constructions whereby the first step must be
> removed to be comprehensive.
// Let f be some terminating function
bool f(p,x) {
// implementation does not matter, eg
// return length(p) > length(x)
}

bool g(s) {
if f(s,s) == TRUE
return FALSE;
else
return TRUE;
}
// g clearly terminates

What's the result of MalignantSelfReference(g,g)?
If it returns FALSE, how can it distinguish g from WillHalt? If it
returns TRUE, WillHalt(g) gives a wrong result.
From: Peter Olcott on

"Jens Auer" <jens.auer-news(a)betaversion.net> wrote in message
news:453bdcc4(a)news.ish.de...
> Peter Olcott wrote:
>> int MalignantSelfReference(SourceCode, InputData) {
>> if ( IsSourceCode(InputData) )
>> if ( MatchSelfReferencePattern(SourceCode, InputData) )
>> if ( DetectedSelfReferenceTogglesTheReturnValue(SourceCode,
>> InputData) )
>> return TRUE;
>> return FALSE;
>> }
>>
>> For all the examples provided so far Matching the pattern has not been shown
>> to be impossible. There might be constructions whereby the first step must
>> be removed to be comprehensive.
> // Let f be some terminating function
> bool f(p,x) {
> // implementation does not matter, eg
> // return length(p) > length(x)
> }
>
> bool g(s) {
> if f(s,s) == TRUE
> return FALSE;
> else
> return TRUE;
> }
> // g clearly terminates
>
> What's the result of MalignantSelfReference(g,g)?
> If it returns FALSE, how can it distinguish g from WillHalt? If it returns
> TRUE, WillHalt(g) gives a wrong result.

Your question is not precisely correct, the basis for comparison is
LoopIfHalts(LoopIfHalts), not WillHalt() please try and re-formulate your
question, I can't tell exactly where you are plugging g into the prior example
from what you have said. Please be 100% explicit, and modify the code below to
indicate exactly what you mean.

void LoopIfHalts(string SourceCode) {
if ( WillHalt(SourceCode, SourceCode) == TRUE )
while (TRUE) // loop forever
;
else
return;
}

int WillHalt(string SourceCode, string InputData) {
if (MalignantSelfReference(SourceCode, InputData))
return MALIGNANT_SELF_REFERENCE;
if ( TheProgramWillHalt(SourceCode, InputData) )
return TRUE;
else
return FALSE;
}

LoopIfHalts(LoopIfHalts);


From: Jens Auer on
Peter Olcott wrote:
> "Jens Auer" <jens.auer-news(a)betaversion.net> wrote in message
> news:453bdcc4(a)news.ish.de...
>> Peter Olcott wrote:
>>> int MalignantSelfReference(SourceCode, InputData) {
>>> if ( IsSourceCode(InputData) )
>>> if ( MatchSelfReferencePattern(SourceCode, InputData) )
>>> if ( DetectedSelfReferenceTogglesTheReturnValue(SourceCode,
>>> InputData) )
>>> return TRUE;
>>> return FALSE;
>>> }
>>>
>>> For all the examples provided so far Matching the pattern has not been shown
>>> to be impossible. There might be constructions whereby the first step must
>>> be removed to be comprehensive.
>> // Let f be some terminating function
>> bool f(p,x) {
>> // implementation does not matter, eg
>> // return length(p) > length(x)
>> }
>>
>> bool g(s) {
>> if f(s,s) == TRUE
>> return FALSE;
>> else
>> return TRUE;
>> }
>> // g clearly terminates
>>
>> What's the result of MalignantSelfReference(g,g)?
>> If it returns FALSE, how can it distinguish g from WillHalt? If it returns
>> TRUE, WillHalt(g) gives a wrong result.
>
> Your question is not precisely correct, the basis for comparison is
> LoopIfHalts(LoopIfHalts), not WillHalt() please try and re-formulate your
> question, I can't tell exactly where you are plugging g into the prior example
> from what you have said. Please be 100% explicit, and modify the code below to
> indicate exactly what you mean.
The question is: What is the result of MalignantSelfReference(g,g)? Is
it Yes or No? How can this question be not precisely correct?!?
And following from that, what is the result of WillHalt(g)?

>
> void LoopIfHalts(string SourceCode) {
> if ( WillHalt(SourceCode, SourceCode) == TRUE )
> while (TRUE) // loop forever
> ;
> else
> return;
> }
>
> int WillHalt(string SourceCode, string InputData) {
> if (MalignantSelfReference(SourceCode, InputData))
> return MALIGNANT_SELF_REFERENCE;
> if ( TheProgramWillHalt(SourceCode, InputData) )
> return TRUE;
> else
> return FALSE;
> }
>
> LoopIfHalts(LoopIfHalts);