Liste des Groupes | Revenir à c theory |
typedef void (*ptr)();Whether or not it *must* abort is not very relevant. It is relevant that it *does* abort. That is relevant when determining whether it is correct.
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.
When this is construed as non-halting criteria then simulatingTherefore, 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.
termination analyzer HHH is correct to reject these inputs as
non-halting by returning 0 to its caller.
Simulating termination analyzers must report on the behaviorIt 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.
that their finite string input specifies thus HHH must report
that DDD correctly emulated by HHH remains stuck in recursive
simulation.
Everyone else seems to be flat out dishonest or totally ignorant.It is dishonest to claim that two equals infinite.
At least one of my reviewers does not seem to understand that
infinite recursion does not halt.
Les messages affichés proviennent d'usenet.