Deutsch   English   Français   Italiano  
<v4os9e$i70m$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.nobody.at!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: "Fred. Zwarts" <F.Zwarts@HetNet.nl>
Newsgroups: comp.theory,sci.logic
Subject: Re: Simulating termination analyzers for dummies
Date: Mon, 17 Jun 2024 10:31:41 +0200
Organization: A noiseless patient Spider
Lines: 62
Message-ID: <v4os9e$i70m$1@dont-email.me>
References: <v4oaqu$f9p5$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Mon, 17 Jun 2024 10:31:43 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="fee104aae69170b4ce923c38ec4c77c3";
	logging-data="597014"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX19wwrNy9cQtXEK4Y4zMYcUY"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:1/fkeWGp9f7m5ZVKJJjYXrISQ7Y=
In-Reply-To: <v4oaqu$f9p5$1@dont-email.me>
Content-Language: en-GB
Bytes: 3082

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. 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.