Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: Both invocations of Confound_Halts() are decided consistently

8 views
Skip to first unread message

olcott

unread,
Dec 7, 2020, 12:15:08 AM12/7/20
to
On 12/6/2020 7:56 PM, Ben Bacarisse wrote:
> Context... Your response to my challenge to show a function F such that
> F(P, I) is true if and only if P(I) is a finite computation and false
> otherwise:
>
> bool Halts(u32 P, u32 I)
> {
> bool Halted = false;
> bool Aborted = false;
> while (!Halted && !Aborted)
> {
> Halted = DebugStep(P, I);
> Aborted = Needs_To_Be_Aborted();
> }
> return !Aborted;
> }
>
> My confounding example, as promised, is the computation
> Confound_Halts(Confound_Halts) with:
>
> void Confound_Halts(u32 P) { if (Halts(P, P)) while (1); }
>
> olcott <No...@NoWhere.com> writes:
>
>> On 12/5/2020 7:50 PM, Ben Bacarisse wrote:
>
>>> ... I am interested in the
>>> fact that
>>>
>>> (a) Halts(Confound_Halts, Confound_Halts) is false and,
>>> (b) Confound_Halts(Confound_Halts) is a finite computation.
>>
>> On 11/27/2020 9:02 PM, Ben Bacarisse wrote:
>>> A computation that would not halt if its simulation were not
>>> halted is indeed a non-halting computation.
>>
>> Halts(Confound_Halts, Confound_Halts) meets the above criteria of a
>> non-halting computation, thus false is indeed the correct answer.
>
> You stated that "the input to Halts" is a finite computation (see
> Message-ID: <6eSdnYuLBrIuVFzC...@giganews.com>). False is
> not the right answer for a finite computation. Were you wrong to say
> that in that post, or are you wrong now?
>
> As for that sentence of mine that you don't understand, let me explain
> again. Because of fact (a) above, both the direct computation
> Confound_Halts(Confound_Halts) and its simulation
> Simulate(Confound_Halts, Confound_Halts) halt. The sentence does not
> apply.

The Turing Machine equivalent to a global halt decider would simply be a
UTM that has been adapted to become a halt decider. This adapted UTM
would decide not-halting on all three of the TM equivalent to the
following three computations.

Halts(main()) is called thus deciding infinite recursion of all three of
these computations:

int main()
{
HERE: goto HERE;
}

This is a simplified version of the infinite recursion detector that I
designed two years ago (Hopefully this one is not over Mike's head):

This is my 2018-12-13 solution: Every time the same function is called a
second time from the same machine address with no control flow
instructions** in-between we can know that this is definitely infinite
recursion.

** A simplification of the original criteria to make my proof easier to
understand.

int main()
{
Halts(Confound_Halts, Confound_Halts);
}

This one is provided with a full execution trace:

int main()
{
Confound_Halts((u32)Confound_Halts);
HALT;
}

_Confound_Halts()
[000005e0](01) 55 push ebp
[000005e1](02) 8bec mov ebp,esp
[000005e3](03) 8b4508 mov eax,[ebp+08]
[000005e6](01) 50 push eax
[000005e7](03) 8b4d08 mov ecx,[ebp+08]
[000005ea](01) 51 push ecx
[000005eb](05) e880fdffff call 00000370
[000005f0](03) 83c408 add esp,+08
[000005f3](02) 85c0 test eax,eax
[000005f5](02) 740b jz 00000602
[000005f7](05) ba01000000 mov edx,00000001
[000005fc](02) 85d2 test edx,edx
[000005fe](02) 7402 jz 00000602
[00000600](02) ebf5 jmp 000005f7
[00000602](01) 5d pop ebp
[00000603](01) c3 ret

_main()
[00000610](01) 55 push ebp
[00000611](02) 8bec mov ebp,esp
[00000613](05) 68e0050000 push 000005e0
[00000618](05) e8c3ffffff call 000005e0
[0000061d](03) 83c404 add esp,+04
[00000620](01) f4 hlt
[00000621](01) 5d pop ebp
[00000622](01) c3 ret

Output_Debug_Trace() Trace_List.size(17)
[00000610](01) EMU_Level(0) 55 push ebp
[00000611](02) EMU_Level(0) 8bec mov ebp,esp
[00000613](05) EMU_Level(0) 68e0050000 push 000005e0
[00000618](05) EMU_Level(0) e8c3ffffff call 000005e0
----CALL [000005e0]
[000005e0](01) EMU_Level(0) 55 push ebp
[000005e1](02) EMU_Level(0) 8bec mov ebp,esp
[000005e3](03) EMU_Level(0) 8b4508 mov eax,[ebp+08]
[000005e6](01) EMU_Level(0) 50 push eax
[000005e7](03) EMU_Level(0) 8b4d08 mov ecx,[ebp+08]
[000005ea](01) EMU_Level(0) 51 push ecx
[000005eb](05) EMU_Level(0) e880fdffff call 00000370
----CALL [00000370]
[000005e0](01) EMU_Level(1) 55 push ebp
[000005e1](02) EMU_Level(1) 8bec mov ebp,esp
[000005e3](03) EMU_Level(1) 8b4508 mov eax,[ebp+08]
[000005e6](01) EMU_Level(1) 50 push eax
[000005e7](03) EMU_Level(1) 8b4d08 mov ecx,[ebp+08]
[000005ea](01) EMU_Level(1) 51 push ecx
[000005eb](05) EMU_Level(1) e880fdffff call 00000370
----CALL [00000370]
The PRIOR Instruction Specifies Infinite Recursion: Simulation Stopped:




--
Copyright 2020 Pete Olcott

"Great spirits have always encountered violent opposition from mediocre
minds." Einstein

olcott

unread,
Dec 8, 2020, 9:45:16 PM12/8/20
to
On 12/8/2020 7:31 PM, Ben Bacarisse wrote:
> olcott <No...@NoWhere.com> writes:
>
>> On 12/7/2020 8:02 PM, Ben Bacarisse wrote:
>>> olcott <No...@NoWhere.com> writes:
>>>
>>>> On 12/7/2020 6:30 PM, Ben Bacarisse wrote:
>>>>> olcott <No...@NoWhere.com> writes:
>>>>>
>>>>>> This is my 2018-12-13 solution: Every time the same function is called
>>>>>> a second time from the same machine address with no control flow
>>>>>> instructions** in-between we can know that this is definitely infinite
>>>>>> recursion.
>>>>>
>>>>> Post the two "fully encoded" "actual Turing machines" "exactly and
>>>>> precisely and as in Linz" that you said you had in 2018. Post them and
>>>>> all will be clear -- no one can argue with actual Turing machines.
>>>>>
>>>>> You can't can you? You didn't have them then, and you don't have them
>>>>> now.
>>>>
>>>> You can't stay focused on this point can you?
>>>
>>> You brought up your Big Lie, but now you want to focus on something
>>> other than what you said in 2018. Of course you do!
>>>
>>> Post the two "fully encoded" "actual Turing machines" "exactly and
>>> precisely and as in Linz" that you said you had back then. Post them
>>> and all will be clear -- no one can argue with fully encoded actual
>>> Turing machines.
>>>
>>
>> I AM GOING TO KEEP YOU PINNED DOWN ON THIS NO MATTER WHAT ELSE YOU SAY
>> ABOUT ANYTHING ELSE:
>
> Go for it.
>

You can't find any error in this because you know there is none yet you
continue to use dishonestly and subterfuge to disparage my work.

void Confound_Halts(u32 P)
{
if (Halts(P, P))
while (1);
}


int main()
{
Confound_Halts((u32)Confound_Halts);
HALT;
}


_Confound_Halts()
[0000063c](01) 55 push ebp
[0000063d](02) 8bec mov ebp,esp
[0000063f](03) 8b4508 mov eax,[ebp+08]
[00000642](01) 50 push eax
[00000643](03) 8b4d08 mov ecx,[ebp+08]
[00000646](01) 51 push ecx
[00000647](05) e800feffff call 0000044c
[0000064c](03) 83c408 add esp,+08
[0000064f](02) 85c0 test eax,eax
[00000651](02) 740b jz 0000065e
[00000653](05) ba01000000 mov edx,00000001
[00000658](02) 85d2 test edx,edx
[0000065a](02) 7402 jz 0000065e
[0000065c](02) ebf5 jmp 00000653
[0000065e](01) 5d pop ebp
[0000065f](01) c3 ret

_main()
[0000066c](01) 55 push ebp
[0000066d](02) 8bec mov ebp,esp
[0000066f](05) 683c060000 push 0000063c
[00000674](05) e8c3ffffff call 0000063c
[00000679](03) 83c404 add esp,+04
[0000067c](01) f4 hlt
[0000067d](01) 5d pop ebp
[0000067e](01) c3 ret

Output_Debug_Trace() Trace_List.size(17)
[0000066c](01) 55 push ebp
[0000066d](02) 8bec mov ebp,esp
[0000066f](05) 683c060000 push 0000063c
[00000674](05) e8c3ffffff call 0000063c // CALL
Confound_Halts()
[0000063c](01) 55 push ebp
[0000063d](02) 8bec mov ebp,esp
[0000063f](03) 8b4508 mov eax,[ebp+08]
[00000642](01) 50 push eax
[00000643](03) 8b4d08 mov ecx,[ebp+08]
[00000646](01) 51 push ecx
[00000647](05) e800feffff call 0000044c // CALL Halts()
[0000063c](01) 55 push ebp
[0000063d](02) 8bec mov ebp,esp
[0000063f](03) 8b4508 mov eax,[ebp+08]
[00000642](01) 50 push eax
[00000643](03) 8b4d08 mov ecx,[ebp+08]
[00000646](01) 51 push ecx
[00000647](05) e800feffff call 0000044c // CALL Halts()
0 new messages