Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <ca7452bab018273277e20439a60611d29ca0ebc4@i2pn2.org>
Deutsch   English   Français   Italiano  
<ca7452bab018273277e20439a60611d29ca0ebc4@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: joes <noreply@example.org>
Newsgroups: comp.theory
Subject: Re: DDD correctly emulated by HHH is Correctly rejected as
 non-halting V2
Date: Mon, 15 Jul 2024 14:02:14 -0000 (UTC)
Organization: i2pn2 (i2pn.org)
Message-ID: <ca7452bab018273277e20439a60611d29ca0ebc4@i2pn2.org>
References: <v6rg65$32o1o$3@dont-email.me>
	<97e0632d0d889d141bdc6005ce6e513c53867798@i2pn2.org>
	<v6sdlu$382g0$1@dont-email.me> <v6td3a$3ge79$1@dont-email.me>
	<v6tp1j$3imib$2@dont-email.me> <v6trdu$3irhh$1@dont-email.me>
	<v6tu01$3imib$11@dont-email.me>
	<a177dd76613794d6bb877c65ffe6c587a8f31bc1@i2pn2.org>
	<v6tvpv$3imib$14@dont-email.me>
	<091e8b7baeea467ee894b1c79c8943cb9773adb7@i2pn2.org>
	<v6u346$3khl8$1@dont-email.me>
	<16ac79611a441e7e01119631051f69119eee958a@i2pn2.org>
	<v6v06i$3pivt$1@dont-email.me>
	<23cb2d2401b87bf4f6a604aa1a78b93ffc9a29bc@i2pn2.org>
	<v6v2t1$3pmjn$3@dont-email.me>
	<3fc6548531f91ed14a27420caf9679a634573ed0@i2pn2.org>
	<v70lmo$61d8$1@dont-email.me>
	<8a6e6d9ff49aabe2525ce5729a439c807de4768a@i2pn2.org>
	<34Ocnd4voeWlDAn7nZ2dnZfqnPudnZ2d@brightview.co.uk>
	<v725d7$hlvg$1@dont-email.me> <v72n0a$jtol$1@dont-email.me>
	<v735ah$mjis$4@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Injection-Date: Mon, 15 Jul 2024 14:02:14 -0000 (UTC)
Injection-Info: i2pn2.org;
	logging-data="3370232"; mail-complaints-to="usenet@i2pn2.org";
	posting-account="nS1KMHaUuWOnF/ukOJzx6Ssd8y16q9UPs1GZ+I3D0CM";
User-Agent: Pan/0.145 (Duplicitous mercenary valetism; d7e168a
 git.gnome.org/pan2)
X-Spam-Checker-Version: SpamAssassin 4.0.0
Bytes: 8513
Lines: 144

Am Mon, 15 Jul 2024 07:39:45 -0500 schrieb olcott:
> On 7/15/2024 3:35 AM, Fred. Zwarts wrote:
>> Op 15.jul.2024 om 05:35 schreef olcott:
>>> On 7/14/2024 10:02 PM, Mike Terry wrote:
>>>> On 15/07/2024 01:20, joes wrote:
>>>>> Am Sun, 14 Jul 2024 09:00:55 -0500 schrieb olcott:
>>>>>> On 7/14/2024 3:29 AM, joes wrote:
>>>>>>> Am Sat, 13 Jul 2024 18:33:53 -0500 schrieb olcott:
>>>>>>>> On 7/13/2024 6:26 PM, joes wrote:
>>>>>>>>> Can you elaborate? All runtime instances share the same static
>>>>>>>>> code.
>>>>>>>>> I am talking about the inner HHH which is called by the
>>>>>>>>> simulated DDD. That one is, according to you, aborted. Which is
>>>>>>>>> wrong, because by virtue of running the same code, the inner HHH
>>>>>>>>> aborts ITS simulation of DDD calling another HHH.
>>>>>
>>>>>>> What are the twins and what is their difference? Do you disagree
>>>>>>> with my tracing?
>>>>>
>>>>>> The directly executed DDD is like the first call of infinite
>>>>>> recursion.
>>>>>> The emulated DDD is just like the second call of infinite
>>>>>> recursion. When the second call of infinite recursion is aborted
>>>>>> then the first call halts.
>>>>> Not really. Execution does not continue.
>>>>>> void Infinite_Recursion()
>>>>>> {
>>>>>>     Infinite_Recursion();
>>>>>> }
>>>>>> The above *is* infinite recursion.
>>>>>> A program could emulate the above code and simply skip line 3
>>>>>> causing Infinite_Recursion() to halt.
>>>>> That would be incorrect.
>>>>>
>>>>>> When DDD calls HHH(DDD) HHH returns.
>>>>> Therefore it does not need to be aborted.
>>>>>> When DDD correctly emulated by HHH the call never returns as is
>>>>>> proven below. The executed DDD() has HHH(DDD) skip this call.
>>>>> I do not see this below.
>>>>>> HHH(DDD) must skip this call itself by terminating the whole DDD
>>>>>> process.
>>>>>
>>>>>> Because this HHH does not know its own machine address HHH only
>>>>>> sees that DDD calls a function that causes its first four steps to
>>>>>> be repeated. HHH does not know that this is recursive simulation.
>>>>>> To HHH it looks just like infinite recursion.
>>>>>
>>>>>> New slave_stack at:1038c4 -- create new process context for 1st DDD
>>>>>> Begin Local Halt Decider Simulation   Execution Trace Stored
>>>>>> at:1138cc
>>>>>
>>>>>> [0000217a][001138b4][0000217f] e853f4ffff call 000015d2 ; call
>>>>>> HHH(DDD)
>>>>>> New slave_stack at:14e2ec -- create new process context for 2nd DDD
>>>>>
>>>>>> [0000217a][0015e2dc][0000217f] e853f4ffff call 000015d2 ; call
>>>>>> HHH(DDD)
>>>>>> Local Halt Decider: Infinite Recursion Detected Simulation Stopped
>>>>> How is this detected?
>>>>
>>>> PO seems not to want to answer you, as I notice you've asked this
>>>> question more than once and PO dodges a direct response, so I'll try.
>>>> (Alternatively, PO has provided a link to his source code in the
>>>> past, so if you can find that link you can just look the answer
>>>> yourself - the functions are all in his halt7.c file, which is
>>>> compiled but not linked, then the obj file is interpreted within his
>>>> x86utm.exe (source also given in the link.  The link might not
>>>> reflect his current code??)
>>>>
>>>> HHH [outer HHH only!] examines a global trace table of simulated
>>>> instruction (from all simulation levels merged together).  The
>>>> particular message "Infinite Recursion Detected Simulation Stopped"
>>>> seems to be issued when:
>>>> -  last instruction is a CALL -  working backwards through the merged
>>>> trace table, another CALL is encountered -  ..which is issued at the
>>>> same address -  ..and is calling to the same address -  ..and no
>>>> "conditional branch" instructions occur in the trace table
>>>>       between the two call instructions
>>>>
>>>> KEY TO NOT BEING MISLED BY THE ABOVE:
>>>>
>>>> 0. The "Infinite Recursion Detected Simulation Stopped" message is
>>>> just a printf.
>>>>     It does not prove that /actual/ infinite recursion was
>>>>     detected - on the contrary,
>>>>     all here but PO realise that the recursion detected is just
>>>> finite recursion.
>>>>
>>>> 1. The trace table being examined is NOT an x86 processor trace - it
>>>> is a "merged simulation trace" containing entries for ALL
>>>>     SIMULATION LEVELS.
>>>>     So the two CALL instructions are not referring to one single
>>>>     x86 processor.
>>>
>>> When emulated DDD calls HHH(DDD) the outer HHH emulates itself
>>> emulating DDD.
>>>
>>> I think that joes does not understand these things.
>>>
>>>>     Typically, the last call instruction is from a deeper nested
>>>> simulation
>>>>     than the earlier detected call instruction.  The outer
>>>> simulations are all
>>>>     still running, but do not appear in the trace table or logs
>>>> presented by PO due to the next note.
>>>>
>>>> 2. The searched trace table is filtered to only contain instructions
>>>> within the C function D/DD/DDD/.. !!
>>>>     YES, YOU READ THAT RIGHT!  ALL CODE IN HHH IS TOTALLY IGNORED,
>>>> INCLUDING
>>>>     THE CONDITIONAL BRANCH INSTRUCTIONS THAT ARE TESTING THE VERY
>>>> ABORT TESTS THAT CAUSE OUTER HHH TO ABORT.
>>>>
>>>> 3. Inner HHH's do not perform the same tests as above, because they
>>>> inspect a global
>>>>     variable which tells them they are inner HHH's.  Yeah, that
>>>>     means the simulation
>>>>     is completely broken logically... [but... the outer HHH will
>>>> abort first, so
>>>>     PO might argue the outcome will be the same, even though
>>>> logically it is broken...]
>>>>  > Is it also triggered when calling a function in a loop?
>>>>
>>>> Not sure what you mean.  Calling a function in a loop ends if the
>>>> loop ends, right?  What loop are you thinking of?
>>>> Anyhow, provided the call instructions are physically located in
>>>> function D() [i.e. not H() or something called from H] I guess it
>>>> would match.  But the C function D has only one call instruction,
>>>> which isn't in a loop!
>>>>
>>> Any input that must be aborted to prevent the non termination of
>>> simulating termination analyzer HHH necessarily specifies non-halting
>>> behavior or it would never need to be aborted.
>>>
>> But since HHH aborts,
> 
> The above tautology asks about the behavior of DDD correctly emulated by
> pure function HHH according to the semantics of the x86 language when
> HHH never aborts.
This here is the key. When a simulator (that doesn't abort) simulates
itself, it never stops running. HHH DOES abort, though.

-- 
Am Fri, 28 Jun 2024 16:52:17 -0500 schrieb olcott:
Objectively I am a genius.