Liste des Groupes | Revenir à theory |
On 7/28/2024 2:59 AM, Fred. Zwarts wrote:Irrelevant nonsense ignored.Op 28.jul.2024 om 05:15 schreef olcott:It is ridiculously stupid to expect the correct emulationOn 7/27/2024 7:40 PM, Mike Terry wrote:>On 27/07/2024 19:14, Alan Mackenzie wrote:>olcott <polcott333@gmail.com> wrote:>
>Stopping running is not the same as halting.>
DDD emulated by HHH stops running when its emulation has been aborted.
This is not the same as reaching its ret instruction and terminating
normally (AKA halting).
I think you're wrong, here. All your C programs are a stand in for
turing machines. A turing machine is either running or halted. There is
no third state "aborted". An aborted C program certainly doesn't
correspond with a running turing machine - so it must be a halted turing
machine.
>
So aborted programs are halted programs. If you disagree, perhaps you
could point out where in my arguments above I'm wrong.
>
Aborting is an action performed by a simulator, not the TM being simulated.
>
If we want to count "aborted" as some kind of final status, it will have to be the status of a specific /PARTIAL SIMULATOR's/ simulation of a given computation. That's not a property of the computation itself, as different partial simulators can simulate the same computation and terminate for different reasons. Like HHH(DDD) aborts, while UTM(DDD) simulates to completion and so the final simulation status is halts. [Neither of those outcomes contradict the fact that the computation DDD() halts.]
>
If some partial simulator halts when simulating a computation [as with UTM(DDD)] that implies the computation DDD() halts. But if the simulator aborts, it doesn't say that much (in and of itself) about whether the /computation/ halts. The halting problem statement is not concerned with simulations or how the simulations end.
>
Every time anyone in these PO threads says "halts" it ought to be 100% clear to everyone whether the computation itself is being discussed, or whether some simulation final status is intended. (But that's far from being the case!) Since the halting problem is concerned with computations halting and not how partial simulations are ended, I suggest that PO explicitly make clear that he is referring to simulations, whenever that is the case. It seems reasonable that readers seeing "halts" with no further clarification can interpret that as actual computation behaviour, as that is how the term is always used in the literature. Same with other terms like "reach"...
>
So when PO says "DDD simulated by HHH cannot reach its final ret instruction" is he talking about the computation DDD() [as defined mathematically], or its simulation by HHH? He means the latter, but its far from clear, I'd say! [I think most readers now have come around to reading it as a statement about simulations rather than the actual computation, which totally changes things...]
>
>
Mike.
>
_DDD()
[00002163] 55 push ebp ; housekeeping
[00002164] 8bec mov ebp,esp ; housekeeping
[00002166] 6863210000 push 00002163 ; push DDD
[0000216b] e853f4ffff call 000015c3 ; call HHH(DDD)
[00002170] 83c404 add esp,+04
[00002173] 5d pop ebp
[00002174] c3 ret
Size in bytes:(0018) [00002174]
>
It is a verified fact that DDD emulated by HHH 100% exactly
and precisely according to the actual x86 semantics of
the emulated code including the recursive call that causes
HHH to emulate itself emulating DDD cannot possibly get
past it own 0000216b machine address.
>
*Anyone as much as hinting otherwise is not being truthful*
If we remove all of the problematic code then this same
trace still occurs until it crashes from OOM error.
>
No matter how much olcott wants it to be correct, or how many times olcott repeats that it is correct, it does not change the fact that such a simulation is incorrect, because it is unable to reach the end.
of a non-halting input to end.
This is the exact same pattern with Infinite_Recursion()No, there are conditional branch instruction is the simulated HHH, so it is more like :
where there are no conditional branch instructions that
would prevent the first three instructions of
Infinite_Recursion() from endlessly repeating.
void Infinite_Recursion()
{
Infinite_Recursion();
}
HHH(DDD)Here the programmer made a error by programming HHH such that after two recursions it would print this message and abort. Two recursions are not an infinite recursion.
_DDD()
[00002177] 55 push ebp ; 1st line
[00002178] 8bec mov ebp,esp ; 2nd line
[0000217a] 6877210000 push 00002177 ; push DDD
[0000217f] e853f4ffff call 000015d7 ; call HHH
[00002184] 83c404 add esp,+04
[00002187] 5d pop ebp
[00002188] c3 ret
Size in bytes:(0018) [00002188]
// executed HHH emulates 1st instance of DDD
New slave_stack at:10388d
Begin Local Halt Decider Simulation Execution Trace Stored at:113895
[00002177][00113885][00113889] 55 push ebp ; 1st line
[00002178][00113885][00113889] 8bec mov ebp,esp ; 2nd line
[0000217a][00113881][00002177] 6877210000 push 00002177 ; push DDD
[0000217f][0011387d][00002184] e853f4ffff call 000015d7 ; call HHH
// emulated HHH emulates 2nd instance of DDD
New slave_stack at:14e2b5
[00002177][0015e2ad][0015e2b1] 55 push ebp ; 1st line
[00002178][0015e2ad][0015e2b1] 8bec mov ebp,esp ; 2nd line
[0000217a][0015e2a9][00002177] 6877210000 push 00002177 ; push DDD
[0000217f][0015e2a5][00002184] e853f4ffff call 000015d7 ; call HHH
Local Halt Decider: Infinite Recursion Detected Simulation Stopped
Les messages affichés proviennent d'usenet.