Re: DDD correctly emulated by HHH is correctly rejected as non-halting V2

Liste des GroupesRevenir à theory 
Sujet : Re: DDD correctly emulated by HHH is correctly rejected as non-halting V2
De : F.Zwarts (at) *nospam* HetNet.nl (Fred. Zwarts)
Groupes : comp.theory
Date : 16. Jul 2024, 19:32:06
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v76eb7$1cfql$5@dont-email.me>
References : 1 2 3 4 5 6 7
User-Agent : Mozilla Thunderbird
Op 16.jul.2024 om 20:18 schreef olcott:
On 7/16/2024 2:57 AM, Mikko wrote:
On 2024-07-15 13:43:34 +0000, olcott said:
>
On 7/15/2024 3:17 AM, Mikko wrote:
On 2024-07-14 14:50:47 +0000, olcott said:
>
On 7/14/2024 5:09 AM, Mikko wrote:
On 2024-07-12 14:56:05 +0000, olcott said:
>
We stipulate that the only measure of a correct emulation is the
semantics of the x86 programming language.
>
_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]
>
When N steps of DDD are emulated by HHH according to the
semantics of the x86 language then N steps are emulated correctly.
>
When we examine the infinite set of every HHH/DDD pair such that:
HHH₁ one step of DDD is correctly emulated by HHH.
HHH₂ two steps of DDD are correctly emulated by HHH.
HHH₃ three steps of DDD are correctly emulated by HHH.
...
HHH∞ The emulation of DDD by HHH never stops running.
>
The above specifies the infinite set of every HHH/DDD pair
where 1 to infinity steps of DDD are correctly emulated by HHH.
>
You should use the indices here, too, e.g., "where 1 to infinity steps of
DDD₁ are correctly emulated by HHH₃" or whatever you mean.
>
>
DDD is the exact same fixed constant finite string that
always calls HHH at the same fixed constant machine
address.
>
If the function called by DDD is not part of the input then the input does
not specify a behaviour and the question whether DDD halts is ill-posed.
>
>
We don't care about whether HHH halts. We know that
HHH halts or fails to meet its design spec.
>
We are only seeing if DDD correctly emulated by HHH
can can possibly reach its own final state.
>
HHH does not see even that. It only sees whther that it does not emulate
DDD to its final state.
 No. HHH is not judging whether or not itself is a correct
emulator. The semantics of the x86 instructions that emulates
prove that its emulation is correct.
 Only because DDD calls HHH(DDD) in recursive emulation it is
impossible for DDD correctly emulated by HHH to reach past
its own machine address of 0000216b.
 
But we can see more, in particuar that DDD() halts
if HHH(DDD) does.
>
 In the exact same way that we can see that we are no longer
hungry after we have eaten. It is still a fact that HHH(DDD)
was required to abort its emulation in the exact same way
that it was required for us to eat to no longer be hungry.
But a person which has eaten is not hungry any more and does not need food any more.
Similarly, a HHH that aborts does not need to be aborted.

 
Anyway, if the function DDD calls is not a part of the input then the
question whether DDD halts is not well-posed and can only be ansered
with a conditional.
>
 We are analyzing whether or not DDD halts.
We are NOT analyzing whether or not HHH halts.
 
You are wring. DDD does not halt, because HHH is unable to simulate itself.
DDD has nothing to do with it. It is easy to eliminate DDD:
        int main() {
          return HHH(main);
        }
This has the same problem. This proves that the problem is not in DDD, but in HHH, which halts when it aborts the simulation, but it decides that the simulation of itself does not halt.
HHH is unable to decide about finite recursions.
void Finite_Recursion (int N) {
   if (N > 0) Finite_Recursion (N - 1);
}
It decides after N recursions that there is an infinite recursion, which is incorrect.
Your HHH is programmed to abort the simulation after N cycles of recursive simulations. Therefore, it is incorrect to abort the simulation of HHH when the simulated HHH has performed N-1 cycles, because that changes the behaviour of HHH.
Since the simulated HHH always runs one cycle behind the simulating HHH, it is clear that HHH can never simulate enough cycles for a correct simulation, as is required by the x86 language.
Therefore, the simulation is incorrect according to the criteria you stipulated.
The conclusion is simple:
HHH cannot possibly simulate itself correctly.
No matter how much you want it to be correct, or how many times you repeat that it is correct, it does not change the fact that such a simulation is incorrect, because it is unable to reach the end.
Your own claim that the simulated HHH does not reach its end confirms it. The trace you have shown also proves that HHH cannot reach the end of its own simulation. So, your own claims prove that it is true that HHH cannot possibly simulate itself up to the end, which makes the simulation incorrect.
Sipser would agree that this incorrect simulation cannot be used to detect a non-halting behaviour.

Date Sujet#  Auteur
1 Jul 25 o 

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal