Liste des Groupes | Revenir à c theory |
Op 02.jul.2024 om 03:25 schreef olcott:This <is> the problem that I am willing to discuss.typedef void (*ptr)();Whether or not it *must* abort is not very relevant.
int HHH(ptr P);
>
void Infinite_Loop()
{
HERE: goto HERE;
}
>
void Infinite_Recursion()
{
Infinite_Recursion();
}
>
void DDD()
{
HHH(DDD);
}
>
int main()
{
HHH(Infinite_Loop);
HHH(Infinite_Recursion);
HHH(DDD);
}
>
Every C programmer that knows what an x86 emulator is knows
that when HHH emulates the machine language of Infinite_Loop,
Infinite_Recursion, and DDD that it must abort these emulations
so that itself can terminate normally.
It is relevant that it *does* abort. That is relevant when determining whether it is correct.--
>Therefore, whether or not it must abort, is incorrect criteria. The fact that it *does* abort (and aborts too early to see correctly the behaviour) shows that the simulation is incorrect.
When this is construed as non-halting criteria then simulating
termination analyzer HHH is correct to reject these inputs as
non-halting by returning 0 to its caller.
>It is not stuck in recursive simulation. We are speaking about an HHH that *does* abort after two cycles. So, not stuck, the simulation is only aborted too soon.
Simulating termination analyzers must report on the behavior
that their finite string input specifies thus HHH must report
that DDD correctly emulated by HHH remains stuck in recursive
simulation.
Dreaming of another HHH that got stuck because it does not abort is irrelevant, because this HHH *does* abort.
>It is dishonest to claim that two equals infinite.
Everyone else seems to be flat out dishonest or totally ignorant.
At least one of my reviewers does not seem to understand that
infinite recursion does not halt.
>
Two cycles of recursive simulation is not equal to an infinite recursion.
You don't seem to understand such simple facts.
Les messages affichés proviennent d'usenet.