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