Deutsch   English   Français   Italiano  
<vqqnk5$28jtr$1@dont-email.me>

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

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: olcott <polcott333@gmail.com>
Newsgroups: comp.theory,comp.lang.c,comp.lang.c++
Subject: Re: Every sufficiently competent C programmer knows --- Very Stupid
 Mistake
Followup-To: comp.theory
Date: Tue, 11 Mar 2025 20:22:13 -0500
Organization: A noiseless patient Spider
Lines: 163
Message-ID: <vqqnk5$28jtr$1@dont-email.me>
References: <vqntaq$1jut5$1@dont-email.me> <vqp388$1tvqa$1@dont-email.me>
 <vqpdv9$202b2$2@dont-email.me> <vqperb$20c9k$2@dont-email.me>
 <E6mcnWv3nMa66036nZ2dnZfqnPWdnZ2d@brightview.co.uk>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Wed, 12 Mar 2025 02:22:14 +0100 (CET)
Injection-Info: dont-email.me; posting-host="da28212957632e1bc35b68d4fbc88507";
	logging-data="2379707"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/LPilRgD8gchOW5va7GdHj"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:BHopzK6YKksmm8RvraFzvHSY1qI=
In-Reply-To: <E6mcnWv3nMa66036nZ2dnZfqnPWdnZ2d@brightview.co.uk>
X-Antivirus: Norton (VPS 250311-4, 3/11/2025), Outbound message
X-Antivirus-Status: Clean
Content-Language: en-US
Bytes: 8517

On 3/11/2025 12:42 PM, Mike Terry wrote:
> On 11/03/2025 13:46, Richard Heathfield wrote:
>> On 11/03/2025 13:31, olcott wrote:
>>> On 3/11/2025 5:28 AM, Mikko wrote:
>>>> On 2025-03-10 23:41:13 +0000, olcott said:
>>>>
>>>>> typedef void (*ptr)();
>>>>> int HHH(ptr P);
>>>>>
>>>>> void Infinite_Loop()
>>>>> {
>>>>>    HERE: goto HERE;
>>>>>    return;
>>>>> }
>>>>>
>>>>> void Infinite_Recursion()
>>>>> {
>>>>>    Infinite_Recursion();
>>>>>    return;
>>>>> }
>>>>>
>>>>> void DDD()
>>>>> {
>>>>>    HHH(DDD);
>>>>>    return;
>>>>> }
>>>>>
>>>>> int DD()
>>>>> {
>>>>>    int Halt_Status = HHH(DD);
>>>>>    if (Halt_Status)
>>>>>      HERE: goto HERE;
>>>>>    return Halt_Status;
>>>>> }
>>>>>
>>>>> That when HHH correctly emulates N steps of the
>>>>> above functions that none of these functions can
>>>>> possibly reach their own "return" instruction
>>>>> and terminate normally.
>>>>
>>>> Every competent programmer knows that the information given is
>>>> insufficient to determine whether HHH emulates at all, and whether
>>>> it emulates correctly if it does.
>>>>
>>>>> Since HHH does see that same pattern that competent
>>>>> C programmers see it correctly aborts its emulation
>>>>> and rejects these inputs as non terminating.
>>>>
>>>> Whether HHH does see those patterns cannot be inferred from the 
>>>> information
>>>> given. Only about DDD one can see that it halts if HHH returns. In 
>>>> addition,
>>>> the given information does not tell whether HHH can see patterns 
>>>> that are
>>>> not there.
>>>>
>>>> How many competent programmers you have asked?
>>>>
>>>
>>> Two C programmers with masters degrees in computer science
>>> agree that DDD correctly emulated by HHH cannot possibly
>>> reach its own "return" instruction and terminate normally.
>>
>> Bring 'em on. Perhaps /they/ have the source to HHH, because without 
>> it you don't have anything. (And btw whatever it is you claim to have 
>> is far from clear, because all I've seen so far is an attempt to 
>> express the Halting Problem in C and pseuodocode, where the pseudocode 
>> reads: HHH(){ magic happens }
> 
> It takes newcommers a while to understand the context behind what PO is 
> saying, and he never bothers to properly explain it himself, and is 
> incapable of doing so in any rigorous fashion.
> 
> So I'll explain for you my interpretation.
> 
> His HHH is a C function called by DDD, which will "simulate" DDD().  The 
> simulation consists of simulating the individual x86 instructions of DDD 
> [and functions it calls] sequentially, and may only be a /partial/ 
> simulation, because HHH also contains logic to analyse the progress of 
> the simulation, and it may decide at some point to simply stop 
> simulating.  (This being referred to as HHH "aborting" its simulation.)
> 
> Of course, we expect that the (partial) simulation of DDD will exactly 
> track the direct execution of DDD, up to the point where HHH aborts the 
> simulation.  [This is NOT what PO's actual HHH code does, due to bugs/ 
> design errors/misunderstandings etc., but for the purpose of PO's 
> current point, you might consider this to be what happens.]
> 
> So if we imagine HHH never aborts, then HHH simulates DDD(), which calls 
> HHH, and (simulated) HHH will again simulate DDD() - a nested 
> simulation.  (PO calls this recursive simulation.)  This continues, and 
> such an HHH will obviously never terminate - in particular THE 
> SIMULATION by outer HHH will never proceed as far as DDD's final ret 
> instruction.  (This is genuine "infinitely recursive simulation")
> 
> OTOH if HHH logic aborts the simulation at some point, regardless of how 
> many nested levels of simulation have built up, it will be the /outer/ 
> HHH that aborts, because the outer HHH is ahead of all the simulated 
> HHH's in its progress and will reach its abort criterion first.  At the 
> point where it aborts, the DDD it is simulating will clearly not have 
> reached its final ret instruction, as then its simulation would have 
> ended "normally" rather than aborting.
> 
> So whatever HHH's exact logic and abort criteria, it will not be the 
> case that its *simulation of DDD* progresses as far as DDD's final ret 
> instruction:  either HHH never aborts so never terminates, or if it does 
> abort, the (outer) HHH simulating it will abort DDD before it gets to 
> the final ret instruction.
> 
> The key point here is that we are not talking about whether DDD() 
> halts!  We are only talking about whether HHH's /simulation/ of DDD 
> proceeds as far as simulating the final DDD ret instruction.  So at this 
> point we are not talking about the Halting Problem, as that is concerned 
> with whether DDD() halts, not whether some partial simulation of DDD() 
> simulates as far as the ret instruction.
> 
> Given that HHH is free to stop simulating DDD *whenever it wants*, you 
> might consider it rather banal to be arguing for several months over 
> whether it actually simulates as far as DDD's return. After all, it 
> could simulate one instruction and then give up, so it didn't get as far 
> as DDD returning - but SO WHAT!?  Why is PO even considering such a 
> question?
> 
> [PO would say something like "/however far/ HHH simulates this remains 
> the case", misunderstanding the fact that here he is talking about 
> multiple different HHHs, each with their own distinct DDDs. (Yes, none 
> of those different HHHs simulate their corresponding DDD to completion, 
> but all of those DDD halt [if run directly], assuming their HHH aborts 
> the simulation at some point.  We can see this just from the given code 
> of DDD: if HHH returns, DDD returns...)]
> 
> But if you think PO properly understands this you would be vastly 
> overestimating his reasoning powers and his capacity for abstract 
> thought.  Even if you "agree" that HHH (however coded) will not simulate 
> DDD to completion, you would not really be "agreeing" with PO as such, 
> because that would imply you understand PO's understanding of all that's 
> been said, and that there is a shared agreement on the meaning of what's 
> been said and its consequences etc., and we can guarantee that will NOT 
> be the case!  We could say PO "fractally" misunderstands every technical 
> concept needed to properly discuss the halting problem (or any other 
> technical topic).
> 
> PO's "understanding" will entail some idea that the situation means that 
> DDD "actually" doesn't halt, or that HHH is "correct" to say that DDD 
> doesn't halt.  

This is a very stupid mistake:
> (Even though it demonstrably DOES halt if not aborted and simulated further.  

void DDD()
{
   HHH(DDD);
   return;
}

DDD correctly simulated by HHH never reaches its
own "return" instruction and terminates normally
in any finite or infinite number of correctly
simulated steps.

-- 
Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer