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

Liste des GroupesRevenir à c theory 
Sujet : Re: DDD correctly emulated by HHH is correctly rejected as non-halting.
De : F.Zwarts (at) *nospam* HetNet.nl (Fred. Zwarts)
Groupes : comp.theory
Date : 13. Jul 2024, 13:31:27
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v6ts2v$3irhh$3@dont-email.me>
References : 1 2 3 4 5 6 7
User-Agent : Mozilla Thunderbird
Op 13.jul.2024 om 14:19 schreef olcott:
On 7/13/2024 2:55 AM, Mikko wrote:
On 2024-07-12 13:28:15 +0000, olcott said:
>
On 7/12/2024 3:27 AM, Mikko wrote:
On 2024-07-11 14:02:52 +0000, olcott said:
>
On 7/11/2024 1:22 AM, Mikko wrote:
On 2024-07-10 15:03:46 +0000, olcott said:
>
typedef void (*ptr)();
int HHH(ptr P);
>
void DDD()
{
   HHH(DDD);
}
>
int main()
{
   HHH(DDD);
}
>
We stipulate that the only measure of a correct emulation
is the semantics of the x86 programming language. By this
measure when 1 to ∞ steps of DDD are correctly emulated by
each pure function x86 emulator HHH (of the infinite set
of every HHH that can possibly exist) then DDD cannot
possibly reach past its own machine address of 0000216b
and halt.
>
For every instruction that the C compiler generates the x86 language
specifies an unambiguous meaning, leaving no room for "can".
>
>
then DDD cannot possibly reach past its own machine
address of 0000216b and halt.
>
As I already said, there is not room for "can". That means there is
no room for "cannot", either. The x86 semantics of the unshown code
determines unambigously what happens.
>
>
Of an infinite set behavior X exists for at least one element
or behavior X does not exist for at least one element.
Of the infinite set of HHH/DDD pairs zero DDD elements halt.
>
That is so far from the Common Language that I can't parse.
>
 *This proves that every rebuttal is wrong somewhere*
No DDD instance of each HHH/DDD pair of the infinite set of
every HHH/DDD pair ever reaches past its own machine address of
0000216b
That is correct and it proves that the simulation is incorrect, because it aborts too soon. Look at the full trace you referenced to. It also shows that HHH is unable to reach the end of its own simulation.
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 after 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.
Sipser would agree that this incorrect simulation cannot be used to detect a non-halting behaviour.

Date Sujet#  Auteur
8 Jul 25 o 

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal