Deutsch   English   Français   Italiano  
<29624b83c2e7ab328d56a2bcbebde2a00b1f7790@i2pn2.org>

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

Path: ...!weretis.net!feeder9.news.weretis.net!i2pn.org!i2pn2.org!.POSTED!not-for-mail
From: Richard Damon <richard@damon-family.org>
Newsgroups: comp.theory
Subject: Re: What is the correct halt status for HHH(DDD) ?
Date: Sat, 13 Jul 2024 14:33:16 -0400
Organization: i2pn2 (i2pn.org)
Message-ID: <29624b83c2e7ab328d56a2bcbebde2a00b1f7790@i2pn2.org>
References: <v6ub4i$3luop$1@dont-email.me>
 <ad93b25297ec232cc5605c0979e3b3fe3c9283f2@i2pn2.org>
 <v6ug87$3mpsd$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Sat, 13 Jul 2024 18:33:16 -0000 (UTC)
Injection-Info: i2pn2.org;
	logging-data="3137774"; mail-complaints-to="usenet@i2pn2.org";
	posting-account="diqKR1lalukngNWEqoq9/uFtbkm5U+w3w6FQ0yesrXg";
User-Agent: Mozilla Thunderbird
In-Reply-To: <v6ug87$3mpsd$1@dont-email.me>
X-Spam-Checker-Version: SpamAssassin 4.0.0
Content-Language: en-US
Bytes: 4218
Lines: 100

On 7/13/24 2:15 PM, olcott wrote:
> On 7/13/2024 12:25 PM, Richard Damon wrote:
>> On 7/13/24 12:48 PM, olcott wrote:
>>> What is the correct halt status for an input to
>>> a simulating termination analyzer that calls its
>>> own termination analyzer?
>>>
>>> typedef void (*ptr)();
>>> int HHH(ptr P);
>>>
>>> void DDD()
>>> {
>>>    HHH(DDD);
>>> }
>>>
>>> int main()
>>> {
>>>    HHH(DDD);
>>> }
>>>
>>
>> Halting.
>>
>> Since HHH defined to be a termination analyzer, by that definition it 
>> must return to its caller.
>>
>> Since DDD has no inputs, its behavior isn't affected by any inputs, 
>> and thus DDD will halt for ALL input conditions, so 
> 
> You are stupidly saying that Infinite_Loop() will halt because
> it has no inputs.
> 

Where did I say no input means halting?

I said that since DDD has no inputs, a Termination analyizer doesn't 
need to look over all inputs, as there are no inputs to affect it.

Maybe you forget that a Termination Analyzer is not the same thing as a 
Halt Decider.

A Halt Decider determines if the given program will halt for the given 
input, and needs to be given both (if the program takes an input).

A Termination Analyzer determines if a given program will halt for every 
possible input, and thus is only given the program, and not the input to 
test.


Note, for Infinite_Loop below, it IS possible for a simulator to detect 
a condition in a finite amount of time that an unbounded emulation would 
never halt, so can answer correctly non-halting.

The problem with trying to apply that to DDD is it isn't true, give the 
DDD that uses the HHH that tries to think it has determined it to never 
halt to a actual pure emulator (and thus DDD still calls that HHH that 
thinks it has determined that DDD will not halt and aborts its emulation 
and returns) then the pure emulatior will see that HHH make that 
decisioin and return to DDD which will return.

Thus HHH can never actually make that same conclusion. You logic is 
incorrrect as you presume the input changes with the emulator, but it 
actually doesn't, it changes with the emulator you have stated is the 
one that gives the correct answer, which you can't change in the middle 
of the problem.

> void Infinite_Loop()
> {
>    HERE: goto HERE;
> }
> 
>> for HHH to be a correct termination analysizer it needs to return the 
>> value to indicate Halting.
>>
> Yes

And thus, it WILL return that value to the DDD that calls it, and that 
DDD will halt.

> 
>> Your version 
> 
> I am asking What is the correct halt status for HHH(DDD)
> that at least one element of every possible pure function
> HHH can provide.
> 

The only correct answer it is able to give is Halt.

The problem is your algorithm as defined can never determine that this 
is the correct answer.

>> can't do that, so either fails to be a proper decider, or gets the 
>> wrong answer.
>>
>> The Flibble version could get this correct, if the structure allows it 
>> to properly detect that DDD is actually calling HHH, which puts us 
>> outside of the Turing Equivalency rules, but can be done in that C code.
>>
>