Path: ...!weretis.net!feeder9.news.weretis.net!news.nk.ca!rocksolid2!i2pn2.org!.POSTED!not-for-mail From: Richard Damon Newsgroups: comp.theory Subject: Re: What is the correct halt status for HHH(DDD) ? --- Tautology Date: Sat, 13 Jul 2024 15:10:44 -0400 Organization: i2pn2 (i2pn.org) Message-ID: <0e5183b652b6c4f856314d6d9ba950d06499e24f@i2pn2.org> References: <29624b83c2e7ab328d56a2bcbebde2a00b1f7790@i2pn2.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Sat, 13 Jul 2024 19:10:44 -0000 (UTC) Injection-Info: i2pn2.org; logging-data="3137773"; mail-complaints-to="usenet@i2pn2.org"; posting-account="diqKR1lalukngNWEqoq9/uFtbkm5U+w3w6FQ0yesrXg"; User-Agent: Mozilla Thunderbird In-Reply-To: X-Spam-Checker-Version: SpamAssassin 4.0.0 Content-Language: en-US Bytes: 5656 Lines: 128 On 7/13/24 2:53 PM, olcott wrote: > On 7/13/2024 1:33 PM, Richard Damon wrote: >> 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. >> > > Yet any input that must be aborted to prevent the non > termination of HHH necessarily specifies non-halting > behavior or it would never need to be aborted. But the DDD that this HHH is given doesn't need to be aborted. That is proven by HHH1(DDD). Remember, the "Input" DDD, includes ALL the code of the program DDD, which includes the HHH that it is paired with. EVERY ONE of these versions of DDD that is paired with a HHH that does aborts its simulation and returns to its caller, when given to an emulator that does not abort, will see that returning behavior. You *LIE* by trying to change your DDD when you do that, which is just a LIE. The ONLY DDD that doesn't return are the DDD paired with an HHH that never aborts, and that one never gives an answer for that input, so fails too. So, you LIE when you compare the results of the HHH that is given a DDD that uses the HHH that aborts, to the results of the other HHH that is given a DDD that uses the HHH that doesn't abort. They are different inputs, because you LIE about what the input is, because you LIE about it not including the HHH that it calls, which means you LIE that any of your HHH CAN emulate per the x86 there input past the call instruction. In short, your argument is based on nothing by LYING. > > Professor Sipser understood this tautology that is > over-your-head. > Nope, you don't understand what he said, so just LIE.