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

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

Path: ...!weretis.net!feeder9.news.weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: "Fred. Zwarts" <F.Zwarts@HetNet.nl>
Newsgroups: comp.lang.c++,comp.lang.c
Subject: Re: D correctly simulated by H never halts
Date: Tue, 28 May 2024 11:11:54 +0200
Organization: A noiseless patient Spider
Lines: 201
Message-ID: <v3474q$hf7u$1@dont-email.me>
References: <v2ns85$1rd65$1@dont-email.me> <v2s46t$2pj9q$2@dont-email.me>
 <v2ud85$396ga$1@dont-email.me> <v2v4r7$3chkl$2@dont-email.me>
 <v2vcud$3dtct$2@dont-email.me> <v2vhsr$3eilv$1@dont-email.me>
 <v2vl9s$3f6bi$1@dont-email.me> <v31hts$3uu5d$1@dont-email.me>
 <v323mi$29pd$3@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Tue, 28 May 2024 11:11:56 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="fbe328d3fbd40e243e4b25f396044ad5";
	logging-data="572670"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX18nEcaDZqRP7B27y8K3A6xn"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:UvW+HA4ZLkDAQ8ryTiCcePJEas8=
In-Reply-To: <v323mi$29pd$3@dont-email.me>
Content-Language: en-GB
Bytes: 9056

Op 27.mei.2024 om 16:00 schreef olcott:
> On 5/27/2024 3:57 AM, Fred. Zwarts wrote:
>> Op 26.mei.2024 om 17:42 schreef olcott:
>>> On 5/26/2024 9:43 AM, Fred. Zwarts wrote:
>>>> Op 26.mei.2024 om 15:20 schreef olcott:
>>>>> On 5/26/2024 6:01 AM, Fred. Zwarts wrote:
>>>>>> Op 26.mei.2024 om 06:19 schreef olcott:
>>>>>>> On 5/25/2024 2:32 AM, Fred. Zwarts wrote:
>>>>>>>> Op 23.mei.2024 om 18:52 schreef olcott:
>>>>>>>>> typedef int (*ptr)();  // ptr is pointer to int function in C
>>>>>>>>> 00       int H(ptr p, ptr i);
>>>>>>>>> 01       int D(ptr p)
>>>>>>>>> 02       {
>>>>>>>>> 03         int Halt_Status = H(p, p);
>>>>>>>>> 04         if (Halt_Status)
>>>>>>>>> 05           HERE: goto HERE;
>>>>>>>>> 06         return Halt_Status;
>>>>>>>>> 07       }
>>>>>>>>> 08
>>>>>>>>> 09       int main()
>>>>>>>>> 10       {
>>>>>>>>> 11         H(D,D);
>>>>>>>>> 12         return 0;
>>>>>>>>> 13       }
>>>>>>>>>
>>>>>>>>> The above template refers to an infinite set of H/D pairs where 
>>>>>>>>> D is
>>>>>>>>> correctly simulated by pure function H. This was done because many
>>>>>>>>> reviewers used the shell game ploy to endlessly switch which 
>>>>>>>>> H/D was
>>>>>>>>> being referred to.
>>>>>>>>>
>>>>>>>>> *Correct Simulation Defined*
>>>>>>>>> This is provided because every reviewer had a different notion of
>>>>>>>>> correct simulation that diverges from this notion.
>>>>>>>>>
>>>>>>>>> In the above case a simulator is an x86 emulator that correctly 
>>>>>>>>> emulates
>>>>>>>>> at least one of the x86 instructions of D in the order 
>>>>>>>>> specified by the
>>>>>>>>> x86 instructions of D.
>>>>>>>>>
>>>>>>>>> This may include correctly emulating the x86 instructions of H 
>>>>>>>>> in the
>>>>>>>>> order specified by the x86 instructions of H thus calling 
>>>>>>>>> H(D,D) in
>>>>>>>>> recursive simulation.
>>>>>>>>>
>>>>>>>>> *Execution Trace*
>>>>>>>>> Line 11: main() invokes H(D,D); H(D,D) simulates lines 01, 02, 
>>>>>>>>> and 03 of
>>>>>>>>> D. This invokes H(D,D) again to repeat the process in endless 
>>>>>>>>> recursive
>>>>>>>>> simulation.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Olcott's own words are that the simulation of D never reaches 
>>>>>>>> past line 03. So the lines following line 03 do not play a role 
>>>>>>>> and, therefore, can be removed without changing the claim. This 
>>>>>>>> leads to:
>>>>>>>>
>>>>>>>> typedef int (*ptr)();  // ptr is pointer to int function in C
>>>>>>>> 00       int H(ptr p, ptr i);
>>>>>>>> 01       int D(ptr p)
>>>>>>>> 02       {
>>>>>>>> 03         return H(p, p);
>>>>>>>> 04       }
>>>>>>>> 05
>>>>>>>> 06       int main()
>>>>>>>> 07       {
>>>>>>>> 08         H(D,D);
>>>>>>>> 09         return 0;
>>>>>>>> 10       }
>>>>>>>>
>>>>>>>>
>>>>>>>> What we see is that the only property of D that is used is that 
>>>>>>>> it is a parameter duplicator. (Is that why it is called D?). H 
>>>>>>>> needs 2 parameters, but it can be given only one input 
>>>>>>>> parameter, so the parameter duplicator is required to allow H to 
>>>>>>>> decide about itself.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Of the infinite set of H that simulate at least one step, none 
>>>>>>>> of them, when simulated by H, halts, because none of them 
>>>>>>>> reaches its final state. Olcott's claim is equivalent to the 
>>>>>>>> claim of non-halting behaviour of H.
>>>>>>>> This means that a simulating halt-decider is a bad idea, because 
>>>>>>>> the decider itself does not halt.
>>>>>>>
>>>>>>> Not at all.
>>>>>>>     A simulator is an x86 emulator that correctly emulates 1 to N 
>>>>>>> of the
>>>>>>>     x86 instructions of D in the order specified by the x86 
>>>>>>> instructions
>>>>>>>     of D. This may include M recursive emulations of H emulating 
>>>>>>> itself
>>>>>>>     emulating D.
>>>>>>>
>>>>>>>     This means that D cannot possibly reach its own line 06 and halt
>>>>>>>     in any finite steps of correct simulation. H is free to halt at
>>>>>>>     any time after these N finite steps of correct simulation.
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> D does not reach it own line 04 because the simulation of H does 
>>>>>> not return to D. So, it shows that the simulation of H does not 
>>>>>> reach it final state, which proves that H does not halt.
>>>>>
>>>>> Your transformation would have been acceptable if you retained the
>>>>> fact that H is a pure function that always halts and returns some 
>>>>> value.
>>>>>
>>>>
>>>> Since H is required to halt, but H shows that H does not halt 
>>>> (because the simulation of H never reaches its final state), the 
>>>> conclusion must be that there is no such H.
>>>
>>>  >
>>>
>>> When D correctly simulated by pure simulator H remains stuck in infinite
>>> recursive simulation then we also know that D never reaches its own line
>>> 06 and halts in less than an infinite number of correctly simulated
>>> steps.
>>>
>>> This is what I had in mind all along. Because I am a relatively terrible
>>> communicator it takes me a very long time to translate my intuitions
>>> into simple words.
>>>
>>>
>> typedef int (*ptr)();  // ptr is pointer to int function in C
>> 00       int H(ptr p, ptr i);
>> 01       int D(ptr p)
>> 02       {
>> 03         return H(p, p);
>> 04       }
>> 05
>> 06       int main()
>> 07       {
>> 08         H(D,D);
>> 09         return 0;
>> 10       }
>>
>> We see that the requirements for H are contradictory. 
> 
> *Not at all, I just did not explain us clearly enough*
> 
> When we hypothesize that H is a pure simulator we see that D correctly

.... we see that H correctly ...

> simulated by pure simulator H remains stuck in recursive simulation thus
> never reaches its own simulated final state at its line 06 and halts. In

(the line 06 is different in my example)

> this case H does not halt, thus is neither a pure function nor a
> decider.
> 
>  From this we correctly conclude that D correctly simulated by pure

.... we correctly conclude that H correctly simulated by ...

> function H never reaches its simulated final state at its own line 06

(The line 06 is different in my example)

> and halts in Less than an infinite (AKA finite) number of simulated
> steps. Here is a concrete example of that:
> 
> https://en.wikipedia.org/wiki/Googolplex
> When pure function H correctly simulates a Googolplex ^ Googolplex
> number of steps of D, then D never reaches its simulated final state

.... of H, then H never reaches its simulated final state
========== REMAINDER OF ARTICLE TRUNCATED ==========