Deutsch English Français Italiano |
<v4qu3p$a0nm$7@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: Richard Damon <richard@damon-family.org> Newsgroups: comp.theory,sci.logic Subject: Re: Simulating termination analyzers for dummies Date: Mon, 17 Jun 2024 23:15:04 -0400 Organization: i2pn2 (i2pn.org) Message-ID: <v4qu3p$a0nm$7@i2pn2.org> References: <v4oaqu$f9p5$1@dont-email.me> <v4os9e$i70m$1@dont-email.me> <v4p9mb$lavj$1@dont-email.me> <v4qe53$a0nm$1@i2pn2.org> <v4qn65$10qh6$1@dont-email.me> <v4qnkf$a0nm$5@i2pn2.org> <v4qpvo$10qh6$2@dont-email.me> <v4qrmd$a0nm$6@i2pn2.org> <v4qrr8$15beg$1@dont-email.me> <v4qsav$a0nn$3@i2pn2.org> <v4qtaa$15gc5$1@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Tue, 18 Jun 2024 03:15:05 -0000 (UTC) Injection-Info: i2pn2.org; logging-data="328438"; mail-complaints-to="usenet@i2pn2.org"; posting-account="diqKR1lalukngNWEqoq9/uFtbkm5U+w3w6FQ0yesrXg"; User-Agent: Mozilla Thunderbird Content-Language: en-US In-Reply-To: <v4qtaa$15gc5$1@dont-email.me> X-Spam-Checker-Version: SpamAssassin 4.0.0 Bytes: 7300 Lines: 158 On 6/17/24 11:01 PM, olcott wrote: > On 6/17/2024 9:44 PM, Richard Damon wrote: >> On 6/17/24 10:36 PM, olcott wrote: >>> On 6/17/2024 9:33 PM, Richard Damon wrote: >>>> On 6/17/24 10:04 PM, olcott wrote: >>>>> On 6/17/2024 8:24 PM, Richard Damon wrote: >>>>>> On 6/17/24 9:16 PM, olcott wrote: >>>>>>> On 6/17/2024 5:42 PM, Richard Damon wrote: >>>>>>>> On 6/17/24 8:20 AM, olcott wrote: >>>>>>>>> On 6/17/2024 3:31 AM, Fred. Zwarts wrote: >>>>>>>>>> Op 17.jun.2024 om 05:33 schreef olcott: >>>>>>>>>>> To understand this analysis requires a sufficient knowledge of >>>>>>>>>>> the C programming language and what an x86 emulator does. >>>>>>>>>>> >>>>>>>>>>> Unless every single detail is made 100% explicit false >>>>>>>>>>> assumptions >>>>>>>>>>> always slip though the cracks. This is why it must be >>>>>>>>>>> examined at >>>>>>>>>>> the C level before it is examined at the Turing Machine level. >>>>>>>>>>> >>>>>>>>>>> typedef void (*ptr)(); >>>>>>>>>>> int H0(ptr P); >>>>>>>>>>> >>>>>>>>>>> void Infinite_Loop() >>>>>>>>>>> { >>>>>>>>>>> HERE: goto HERE; >>>>>>>>>>> } >>>>>>>>>>> >>>>>>>>>>> void Infinite_Recursion() >>>>>>>>>>> { >>>>>>>>>>> Infinite_Recursion(); >>>>>>>>>>> } >>>>>>>>>>> >>>>>>>>>>> void DDD() >>>>>>>>>>> { >>>>>>>>>>> H0(DDD); >>>>>>>>>>> return; >>>>>>>>>>> } >>>>>>>>>>> >>>>>>>>>>> int main() >>>>>>>>>>> { >>>>>>>>>>> H0(Infinite_Loop); >>>>>>>>>>> H0(Infinite_Recursion); >>>>>>>>>>> H0(DDD); >>>>>>>>>>> } >>>>>>>>>>> >>>>>>>>>>> Every C programmer that knows what an x86 emulator is knows >>>>>>>>>>> that when H0 >>>>>>>>>>> emulates the machine language of Infinite_Loop, >>>>>>>>>>> Infinite_Recursion, and >>>>>>>>>>> DDD that it must abort these emulations so that itself can >>>>>>>>>>> terminate >>>>>>>>>>> normally. >>>>>>>>>>> >>>>>>>>>>> When this is construed as non-halting criteria then simulating >>>>>>>>>>> termination analyzer H0 is correct to reject these inputs as >>>>>>>>>>> non- >>>>>>>>>>> halting. >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> For Infinite_Loop and Infinite_Recursion that might be true, >>>>>>>>>> because there the simulator processes the whole input. >>>>>>>>>> >>>>>>>>>> The H0 case is very different. For H0 there is indeed a false >>>>>>>>>> assumption, as you mentioned. Here H0 needs to simulate >>>>>>>>>> itself, but the simulation is never able to reach the final >>>>>>>>>> state of the simulated self. The abort is always one cycle too >>>>>>>>>> early, so that the simulating H0 misses the abort. Therefore >>>>>>>>>> this results in a false negative. >>>>>>>>>> (Note that H0 should process its input, which includes the H0 >>>>>>>>>> that aborts, not a non-input with an H that does not abort.) >>>>>>>>>> >>>>>>>>>> This results in a impossible dilemma for the programmer. It he >>>>>>>>>> creates a H that does not abort, it will not terminate. >>>>>>>>> >>>>>>>>> *Therefore what I said is correct* >>>>>>>>> When every input that must be aborted is construed as non-halting >>>>>>>>> then the input to H0(DDD) is correctly construed as non-halting. >>>>>>>> >>>>>>>> In other words, if you allow yourself to LIE, you can claim the >>>>>>>> wrong answer is right. >>>>>>>> >>>>>>>> Since your "Needing to abort" is NOT the same as halting, all >>>>>>>> you are doing is admitting that your whole logic system is based >>>>>>>> on the principle that LIES ARE OK. >>>>>>>> >>>>>>> >>>>>>> "Needing to abort" <is> the same as a NOT halting input. >>>>>>> You are simply too ignorant to understand this. >>>>>>> >>>>>> >>>>>> Nope, not if you are comparing DIFFERENT version of the input. >>>>>> >>>>> It is ALWAYS the exact same sequence of bytes. >>>> >>>> But if it doesn't include the bytes of H, >>> >>> It is like we know that N > 50 and you can't >>> see that this also means N > 40. >>> >> >> Nope. >> >> How do you simulate something you do not have? >> >> That is like says when the requirement is for N > 50 that you claim 1 >> is ok, because 50 can be 5*0 just like xy is x*y. >> >> Again, how can you claim a "Correct Simulation" by the exact >> definition of the x86 instruction set, when you omit the call H >> instruction, and then "jump" to an addres that was never jumped to at >> any point later in the program. >> > > You just aren't bright enough to see simple truths that > every programmer can see. > > void DDD() > { > H0(DDD); > } > > DDD correctly simulated by any H0 cannot possibly halt. > That this truth is so simple lead me to believe that > you were lying about it instead of ordinary cluelessness. > > But the question isn't DDD correctly simulated by H0, but does DDD itself, when run halt. You have been stuck on the wrong question for ages, because you just belive your own lies, and think you are allowed to change the definitions of terms. Do that just makes you a LIAR, and so that is what you are. You have been told this many times, but you think that just because the definitions don't let you do something you think you should you get to CHEAT and change things. It doesn't. If you show an ACTUAL PROBLEM that people agree is a problem that breaks the logic system, like Russel's set of all sets that don't contain themselves just broke Naive Set Theory, then perhaps people might be interested in an alternate form of computation theory. Just the fact that you think there is something wrong with the fact that Halting is not computable, isn't that sort of error, as the whole point of Computation Theory is to find out which Functions (aka maps) are computable and which are not. It is KNOWN that many maps are not computable, in fact it turns out that almost all arbitrary maps are not computable. In one sense, it is a bit surprizing that so many of the maps we want to look at are computable. But that turns out to be that a lot of the problems we want to look at have enough structure that they happen to be computable.