Path: ...!weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: olcott Newsgroups: comp.lang.c++,comp.lang.c Subject: Re: Can you see that D correctly simulated by H remains stuck in recursive simulation? Date: Fri, 24 May 2024 11:57:36 -0500 Organization: A noiseless patient Spider Lines: 67 Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Fri, 24 May 2024 18:57:38 +0200 (CEST) Injection-Info: dont-email.me; posting-host="853a48eea7a3e841565c364baea8e5bf"; logging-data="2549243"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18zDsyJLxIGM4J9US9mfS+C" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:Ii+Vyc6uNvVNogDnwwViqEQ2mnU= In-Reply-To: Content-Language: en-US Bytes: 3636 On 5/24/2024 10:01 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. > > The case can be simplified even more (D is not needed): > We are ONLY asking about whether D correctly simulated by pure function H can possibly reach its own final state at line 06 and halt. Because H is a pure function we know that H halts. https://en.wikipedia.org/wiki/Pure_function# Every H of the above H/D pairs returns the meaningless value of 56. > typedef int (*ptr)();  // ptr is pointer to int function in C > 00       int H(ptr p, ptr i); > 01       int main() > 02       { > 03         H(H,H); > 04         return 0; > 05       } > > If olcott's claim is true, then also main will never reach line 04. This > would prove that H is non-halting. This would prove that a simulating > halt-decider cannot be used as a halt-decider, because it does not halt. -- Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius hits a target no one else can see." Arthur Schopenhauer