Re: Simulating termination analyzers for dummies

Liste des GroupesRevenir à theory 
Sujet : Re: Simulating termination analyzers for dummies
De : F.Zwarts (at) *nospam* HetNet.nl (Fred. Zwarts)
Groupes : comp.theory sci.logic
Date : 17. Jun 2024, 15:30:23
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v4pdph$l7lf$1@dont-email.me>
References : 1 2 3
User-Agent : Mozilla Thunderbird
Op 17.jun.2024 om 14:20 schreef olcott:
On 6/17/2024 3:31 AM, Fred. Zwarts wrote:
Op 17.jun.2024 om 05:33 schreef olcott:
To understand this analysis requires a sufficient knowledge of
the C programming language and what an x86 emulator does.
>
Unless every single detail is made 100% explicit false assumptions
always slip though the cracks. This is why it must be examined at
the C level before it is examined at the Turing Machine level.
>
typedef void (*ptr)();
int H0(ptr P);
>
void Infinite_Loop()
{
   HERE: goto HERE;
}
>
void Infinite_Recursion()
{
   Infinite_Recursion();
}
>
void DDD()
{
   H0(DDD);
   return;
}
>
int main()
{
   H0(Infinite_Loop);
   H0(Infinite_Recursion);
   H0(DDD);
}
>
Every C programmer that knows what an x86 emulator is knows that when H0
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 simulating
termination analyzer H0 is correct to reject these inputs as non-
halting.
>
>
For Infinite_Loop and Infinite_Recursion that might be true, because there the simulator processes the whole input.
>
The H0 case is very different. For H0 there is indeed a false assumption, as you mentioned. Here H0 needs to simulate itself, but the simulation is never able to reach the final state of the simulated self. The abort is always one cycle too early, so that the simulating H0 misses the abort. Therefore this results in a false negative.
(Note that H0 should process its input, which includes the H0 that aborts, not a non-input with an H that does not abort.)
>
This results in a impossible dilemma for the programmer. It he creates a H that does not abort, it will not terminate.
 *Therefore what I said is correct*
No, that is not a logical conclusion. The logical conclusion if both aborting and not aborting result in errors, is: a halt-decider cannot be based on such a simulation.

When every input that must be aborted is construed as non-halting
then the input to H0(DDD) is correctly construed as non-halting.
I you had read further, your would have seen that it is incorrect to construe such a criterium. It results in false negatives. Because H is unable to simulate itself it is not a correct criterium for non-halting of the program.
A false negative indicates already that a wrong criterium is used.

 
If he creates a H that does abort, he creates a false negative. It will never be correct.
>
It would be very stupid to construe this as non-halting criteria, because it is clear that it will produce false negatives, i.e. false results.
 
The criterium whether a program halts or not is the direct execution.
Of course it is possible to define other criteria: The length of its description is even or odd, or the description is smaller or larger then 1k, or its simulation is unable to process it up to the end. But all of these are incorrect and will result in false negatives.

Date Sujet#  Auteur
10 Nov 24 o 

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal