• Re: DDD correctly emulated by HHH is Correctly rejected as non-halting

    From joes@21:1/5 to All on Sat Jul 13 08:48:02 2024
    Am Fri, 12 Jul 2024 22:00:08 -0500 schrieb olcott:
    On 7/12/2024 6:41 PM, Richard Damon wrote:
    On 7/12/24 7:19 PM, olcott wrote:
    On 7/12/2024 5:56 PM, Richard Damon wrote:
    On 7/12/24 10:56 AM, olcott wrote:

    Thus each HHH element of the above infinite set of HHH/DDD pairs is
    necessarily correct to reject its DDD as non-halting.

    Nope.
    NONE Of them CORRECTLY rejected itS DDD as non-halting and you are
    shown to be ignorant of what you are talking about.
    The HHH that did a partial emulation got the wrong answer, because
    THEIR DDD will halt. and the HHH that doen't abort never get around
    to rejecting its DDD as non-halting.

    When no DDD of every HHH/DDD that can possibly exist halts then each
    HHH that rejects its DDD as non-halting is necessarily correct.
    *No double-talk and weasel words can overcome that*

    Which is just your double-talk to try to redefine what halting means.

    You try to cut my airtight proof up in little pieces and fail. Every
    rebuttal that you make has disagreeing with the semantics of the x86
    language as its basis.
    Where does it disagree?!

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Sat Jul 13 13:11:30 2024
    Am Sat, 13 Jul 2024 06:53:10 -0500 schrieb olcott:
    On 7/13/2024 3:48 AM, joes wrote:
    Am Fri, 12 Jul 2024 22:00:08 -0500 schrieb olcott:
    On 7/12/2024 6:41 PM, Richard Damon wrote:
    On 7/12/24 7:19 PM, olcott wrote:
    On 7/12/2024 5:56 PM, Richard Damon wrote:
    On 7/12/24 10:56 AM, olcott wrote:

    NONE Of them CORRECTLY rejected itS DDD as non-halting and you are >>>>>> shown to be ignorant of what you are talking about.
    The HHH that did a partial emulation got the wrong answer, because >>>>>> THEIR DDD will halt. and the HHH that doen't abort never get around >>>>>> to rejecting its DDD as non-halting.

    You try to cut my airtight proof up in little pieces and fail. Every
    rebuttal that you make has disagreeing with the semantics of the x86
    language as its basis.
    Where does it disagree?!
    *This proves that every rebuttal is wrong somewhere*
    No DDD instance of each HHH/DDD pair of the infinite set of every
    HHH/DDD pair ever reaches past its own machine address of 0000216b and
    halts thus proving that every HHH is correct to reject its input DDD as non-halting.
    Please actually answer the question instead of derailing.

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Sat Jul 13 13:17:23 2024
    Am Sat, 13 Jul 2024 06:39:31 -0500 schrieb olcott:
    On 7/13/2024 3:15 AM, Fred. Zwarts wrote:
    Op 13.jul.2024 om 01:19 schreef olcott:
    On 7/12/2024 5:56 PM, Richard Damon wrote:
    On 7/12/24 10:56 AM, olcott wrote:
    Which means the only "correct emulation" that tells the behavior of
    the program at the input is a non-aborted one.

    And thus HHH that do that know only the first N steps of the behavior
    of DDD, which continues per the definition of the x86 instruction set
    until the COMPLETE emulation (or direct execution) reaches a terminal
    instruction.

    And thus, the subset that only did a finite number of steps and
    aborted its emulation on a non-terminal instrucition only have
    partial knowledge of the behavior of their DDD, and by returning to
    their caller, they establish that behavior for ALL copies of that
    HHH, even the one that DDD calls, which shows that DDD will be
    halting, even though HHH stopped its observation of the input before
    it gets to that point.
    This is the crux. You think that the nested HHH runs forever. But it
    aborts just the same as the outer one.

    Wrong. EVERY DDD of an HHH that simulated its input for only a finite
    number of steps WILL halt becuase it will reach its final return.
    The HHH that simulated it for only a finite number of steps, only
    learned that finite number of steps of the behaivor, and in EVERY
    case, when we look at the behavior past that point, which DOES occur
    per the definition of the x86 instruction set, as we have not reached
    a "termial" instruction that stops behavior, will see the HHH(DDD)
    that DDD called continuing to simulate its input to the point that
    this one was defined to stop, and then returns 0 to DDDD and then DDD
    returning and ending the behavior.
    You continue to stupidly confuse the PARTIAL observation that HHH
    does of the behavior of DDD by its PARTIAL emulation with the ACTUAL
    FULL behavior of DDD as defined by the full definition of the x86
    insttuction set.
    Worth requoting.

    NONE Of them CORRECTLY rejected itS DDD as non-halting and you are
    shown to be ignorant of what you are talking about.
    The HHH that did a partial emulation got the wrong answer, because
    THEIR DDD will halt. and the HHH that doen't abort never get around
    to rejecting its DDD as non-halting.

    When no DDD of every HHH/DDD that can possibly exist halts then each
    HHH that rejects its DDD as non-halting is necessarily correct.

    This is double talk, because no HHH can possibly exist that simulates
    itself correctly.
    Your definition of correct contradicts the semantics of the x86 language making it wrong.
    What part of it contradicts which semantics?
    What are the doubletalk and weasel words?
    What are the shells of the game?

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Sat Jul 13 13:24:03 2024
    Am Sat, 13 Jul 2024 08:04:01 -0500 schrieb olcott:
    On 7/13/2024 7:20 AM, Fred. Zwarts wrote:
    Op 13.jul.2024 om 13:39 schreef olcott:
    On 7/13/2024 3:15 AM, Fred. Zwarts wrote:
    Op 13.jul.2024 om 01:19 schreef olcott:
    On 7/12/2024 5:56 PM, Richard Damon wrote:
    On 7/12/24 10:56 AM, olcott wrote:

    You have a wrong understanding of the semantics of the x86 language.
    You think that the x86 language specifies that skipping instructions do
    not change the behaviour of a program.
    Do you understand that a simulator that aborts does not run forever?

    As soon as the decider correctly determines that itself would never halt unless is aborts the simulation of its input the decider is required to
    abort this simulation.
    Which decider is aborting here, the simulated or the outer one?
    A decider always halts, so it cannot find itself non-halting.

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Sat Jul 13 14:21:23 2024
    Am Sat, 13 Jul 2024 08:34:55 -0500 schrieb olcott:
    On 7/13/2024 8:24 AM, joes wrote:
    Am Sat, 13 Jul 2024 08:04:01 -0500 schrieb olcott:
    On 7/13/2024 7:20 AM, Fred. Zwarts wrote:
    Op 13.jul.2024 om 13:39 schreef olcott:
    On 7/13/2024 3:15 AM, Fred. Zwarts wrote:
    Op 13.jul.2024 om 01:19 schreef olcott:
    On 7/12/2024 5:56 PM, Richard Damon wrote:
    On 7/12/24 10:56 AM, olcott wrote:

    You have a wrong understanding of the semantics of the x86 language.
    You think that the x86 language specifies that skipping instructions
    do not change the behaviour of a program.
    Do you understand that a simulator that aborts does not run forever?

    As soon as the decider correctly determines that itself would never
    halt unless is aborts the simulation of its input the decider is
    required to abort this simulation.
    Which decider is aborting here, the simulated or the outer one?
    A decider always halts, so it cannot find itself non-halting.
    The executed decider is always correct to abort the simulation of any
    damn thing that would cause itself to never halt.
    Which is definitely not itself. Simulating a decider is guaranteed to
    halt. Same as a simulator that aborts.

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Sat Jul 13 22:40:03 2024
    Am Sat, 13 Jul 2024 09:31:33 -0500 schrieb olcott:
    On 7/13/2024 9:21 AM, joes wrote:
    Am Sat, 13 Jul 2024 08:34:55 -0500 schrieb olcott:
    On 7/13/2024 8:24 AM, joes wrote:
    Am Sat, 13 Jul 2024 08:04:01 -0500 schrieb olcott:
    On 7/13/2024 7:20 AM, Fred. Zwarts wrote:
    Op 13.jul.2024 om 13:39 schreef olcott:
    On 7/13/2024 3:15 AM, Fred. Zwarts wrote:
    Op 13.jul.2024 om 01:19 schreef olcott:
    On 7/12/2024 5:56 PM, Richard Damon wrote:
    On 7/12/24 10:56 AM, olcott wrote:

    As soon as the decider correctly determines that itself would never
    halt unless is aborts the simulation of its input the decider is
    required to abort this simulation.
    Which decider is aborting here, the simulated or the outer one?
    A decider always halts, so it cannot find itself non-halting.
    The executed decider is always correct to abort the simulation of any
    damn thing that would cause itself to never halt.
    Which is definitely not itself. Simulating a decider is guaranteed to
    halt. Same as a simulator that aborts.
    It cannot abort the simulation of itself because itself is not
    simulated.
    It certainly is, because the DDD that it simulates calls HHH.

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Sat Jul 13 23:26:40 2024
    Am Sat, 13 Jul 2024 17:47:46 -0500 schrieb olcott:
    On 7/13/2024 5:40 PM, joes wrote:
    Am Sat, 13 Jul 2024 09:31:33 -0500 schrieb olcott:
    On 7/13/2024 9:21 AM, joes wrote:
    Am Sat, 13 Jul 2024 08:34:55 -0500 schrieb olcott:
    On 7/13/2024 8:24 AM, joes wrote:
    Am Sat, 13 Jul 2024 08:04:01 -0500 schrieb olcott:
    On 7/13/2024 7:20 AM, Fred. Zwarts wrote:
    Op 13.jul.2024 om 13:39 schreef olcott:
    On 7/13/2024 3:15 AM, Fred. Zwarts wrote:
    Op 13.jul.2024 om 01:19 schreef olcott:
    On 7/12/2024 5:56 PM, Richard Damon wrote:
    On 7/12/24 10:56 AM, olcott wrote:

    As soon as the decider correctly determines that itself would
    never halt unless is aborts the simulation of its input the
    decider is required to abort this simulation.
    Which decider is aborting here, the simulated or the outer one?
    A decider always halts, so it cannot find itself non-halting.
    The executed decider is always correct to abort the simulation of
    any damn thing that would cause itself to never halt.
    Which is definitely not itself. Simulating a decider is guaranteed to
    halt. Same as a simulator that aborts.
    It cannot abort the simulation of itself because itself is not
    simulated.
    It certainly is, because the DDD that it simulates calls HHH.
    You are thinking of its twin brother.
    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.

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Sat Jul 13 19:46:17 2024
    On 7/13/24 7:33 PM, olcott wrote:
    On 7/13/2024 6:26 PM, joes wrote:
    Am Sat, 13 Jul 2024 17:47:46 -0500 schrieb olcott:
    On 7/13/2024 5:40 PM, joes wrote:
    Am Sat, 13 Jul 2024 09:31:33 -0500 schrieb olcott:
    On 7/13/2024 9:21 AM, joes wrote:
    Am Sat, 13 Jul 2024 08:34:55 -0500 schrieb olcott:
    On 7/13/2024 8:24 AM, joes wrote:
    Am Sat, 13 Jul 2024 08:04:01 -0500 schrieb olcott:
    On 7/13/2024 7:20 AM, Fred. Zwarts wrote:
    Op 13.jul.2024 om 13:39 schreef olcott:
    On 7/13/2024 3:15 AM, Fred. Zwarts wrote:
    Op 13.jul.2024 om 01:19 schreef olcott:
    On 7/12/2024 5:56 PM, Richard Damon wrote:
    On 7/12/24 10:56 AM, olcott wrote:

    As soon as the decider correctly determines that itself would >>>>>>>>> never halt unless is aborts the simulation of its input the
    decider is required to abort this simulation.
    Which decider is aborting here, the simulated or the outer one? >>>>>>>> A decider always halts, so it cannot find itself non-halting.
    The executed decider is always correct to abort the simulation of >>>>>>> any damn thing that would cause itself to never halt.
    Which is definitely not itself. Simulating a decider is guaranteed to >>>>>> halt. Same as a simulator that aborts.
    It cannot abort the simulation of itself because itself is not
    simulated.
    It certainly is, because the DDD that it simulates calls HHH.
    You are thinking of its twin brother.
    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.


    If you have a 100% complete understanding infinite recursion
    then I can explain it in terms of much more details, otherwise
    you can't possibly understand.



    But the recursion isn't infinite if that HHH ever aborts its emulation.

    You are stuck in the trap of your own making.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Sun Jul 14 08:29:28 2024
    Am Sat, 13 Jul 2024 18:33:53 -0500 schrieb olcott:
    On 7/13/2024 6:26 PM, joes wrote:
    Am Sat, 13 Jul 2024 17:47:46 -0500 schrieb olcott:
    On 7/13/2024 5:40 PM, joes wrote:
    Am Sat, 13 Jul 2024 09:31:33 -0500 schrieb olcott:
    On 7/13/2024 9:21 AM, joes wrote:
    Am Sat, 13 Jul 2024 08:34:55 -0500 schrieb olcott:
    On 7/13/2024 8:24 AM, joes wrote:
    Am Sat, 13 Jul 2024 08:04:01 -0500 schrieb olcott:
    On 7/13/2024 7:20 AM, Fred. Zwarts wrote:
    Op 13.jul.2024 om 13:39 schreef olcott:
    On 7/13/2024 3:15 AM, Fred. Zwarts wrote:
    Op 13.jul.2024 om 01:19 schreef olcott:
    On 7/12/2024 5:56 PM, Richard Damon wrote:
    On 7/12/24 10:56 AM, olcott wrote:

    Which decider is aborting here, the simulated or the outer one? >>>>>>>> A decider always halts, so it cannot find itself non-halting.
    The executed decider is always correct to abort the simulation of >>>>>>> any damn thing that would cause itself to never halt.
    Which is definitely not itself. Simulating a decider is guaranteed >>>>>> to halt. Same as a simulator that aborts.
    It cannot abort the simulation of itself because itself is not
    simulated.
    It certainly is, because the DDD that it simulates calls HHH.
    You are thinking of its twin brother.
    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.
    If you have a 100% complete understanding infinite recursion then I can explain it in terms of much more details, otherwise you can't possibly understand.
    What are the twins and what is their difference?
    Please do explain.
    Do you disagree with my tracing?

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Sun Jul 14 11:58:25 2024
    On 2024-07-13 13:04:01 +0000, olcott said:

    On 7/13/2024 7:20 AM, Fred. Zwarts wrote:
    Op 13.jul.2024 om 13:39 schreef olcott:
    On 7/13/2024 3:15 AM, Fred. Zwarts wrote:
    Op 13.jul.2024 om 01:19 schreef olcott:
    On 7/12/2024 5:56 PM, Richard Damon wrote:
    On 7/12/24 10:56 AM, olcott wrote:
    We stipulate that the only measure of a correct emulation is the >>>>>>> semantics of the x86 programming language.

    Which means the only "correct emulation" that tells the behavior of the >>>>>> program at the input is a non-aborted one.


    _DDD()
    [00002163] 55         push ebp      ; housekeeping
    [00002164] 8bec       mov ebp,esp   ; housekeeping
    [00002166] 6863210000 push 00002163 ; push DDD
    [0000216b] e853f4ffff call 000015c3 ; call HHH(DDD)
    [00002170] 83c404     add esp,+04
    [00002173] 5d         pop ebp
    [00002174] c3         ret
    Size in bytes:(0018) [00002174]

    When N steps of DDD are emulated by HHH according to the
    semantics of the x86 language then N steps are emulated correctly. >>>>>>
    And thus HHH that do that know only the first N steps of the behavior >>>>>> of DDD, which continues per the definition of the x86 instruction set >>>>>> until the COMPLETE emulation (or direct execution) reaches a terminal >>>>>> instruction.


    When we examine the infinite set of every HHH/DDD pair such that: >>>>>>> HHH₁ one step of DDD is correctly emulated by HHH.
    HHH₂ two steps of DDD are correctly emulated by HHH.
    HHH₃ three steps of DDD are correctly emulated by HHH.
    ...
    HHH∞ The emulation of DDD by HHH never stops running.

    And thus, the subset that only did a finite number of steps and aborted >>>>>> its emulation on a non-terminal instrucition only have partial
    knowledge of the behavior of their DDD, and by returning to their
    caller, they establish that behavior for ALL copies of that HHH, even >>>>>> the one that DDD calls, which shows that DDD will be halting, even >>>>>> though HHH stopped its observation of the input before it gets to that >>>>>> point.


    The above specifies the infinite set of every HHH/DDD pair
    where 1 to infinity steps of DDD are correctly emulated by HHH.

    No DDD instance of each HHH/DDD pair ever reaches past its
    own machine address of 0000216b and halts.

    Wrong. EVERY DDD of an HHH that simulated its input for only a finite >>>>>> number of steps WILL halt becuase it will reach its final return.

    The HHH that simulated it for only a finite number of steps, only
    learned that finite number of steps of the behaivor, and in EVERY case, >>>>>> when we look at the behavior past that point, which DOES occur per the >>>>>> definition of the x86 instruction set, as we have not reached a
    "termial" instruction that stops behavior, will see the HHH(DDD) that >>>>>> DDD called continuing to simulate its input to the point that this one >>>>>> was defined to stop, and then returns 0 to DDDD and then DDD returning >>>>>> and ending the behavior.

    You continue to stupidly confuse the PARTIAL observation that HHH does >>>>>> of the behavior of DDD by its PARTIAL emulation with the ACTUAL FULL >>>>>> behavior of DDD as defined by the full definition of the x86
    insttuction set.



    Thus each HHH element of the above infinite set of HHH/DDD
    pairs is necessarily correct to reject its DDD as non-halting.


    Nope.

    NONE Of them CORRECTLY rejected itS DDD as non-halting and you are >>>>>> shown to be ignorant of what you are talking about.

    The HHH that did a partial emulation got the wrong answer, because >>>>>> THEIR DDD will halt. and the HHH that doen't abort never get around to >>>>>> rejecting its DDD as non-halting.

    *Here is the gist of my proof it is irrefutable*
    When no DDD of every HHH/DDD that can possibly exist
    halts then each HHH that rejects its DDD as non-halting
    is necessarily correct.

    *No double-talk and weasel words can overcome that*


    This is double talk, because no HHH can possibly exist that simulates
    itself correctly.

    Your definition of correct contradicts the semantics of
    the x86 language making it wrong.


    You have a wrong understanding of the semantics of the x86 language.
    You think that the x86 language specifies that skipping instructions do
    not change the behaviour of a program.

    You have the wrong understanding of a decider.

    You seem to have a wrong understanding of a decider.
    Calling a program a decider does not make it halt.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Mon Jul 15 00:20:24 2024
    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? Is it also triggered when calling a function
    in a loop?

    According to the theory of computation the DDD that calls HHH(DDD) is
    not in the domain of HHH. HHH is not allowed to report on the behavior
    of the process that it is contained within. *That breaks the rules of computation theory* HHH cannot even see the steps that were executed
    before it was first invoked.
    Yes it is. Everything that the simulatee calls is in the domain. It
    can't break out of it.
    On the other hand a simulated program has no idea about its environment.

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mike Terry@21:1/5 to joes on Mon Jul 15 04:02:15 2024
    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??)

    Anyhow, this is what I reckon...

    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.
    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!

    Regards,
    Mike.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Mon Jul 15 11:09:08 2024
    On 2024-07-14 14:00:55 +0000, olcott said:

    According to the theory of computation the DDD that calls
    HHH(DDD) is not in the domain of HHH.

    The theory of computation does not say what the domain of HHH is.
    Unless the specificaiton of HHH says otherwise HHH should be able
    to handle every input that can be given to it, at least to the
    extent that it says that the given input cannot be processed.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Mon Jul 15 11:15:08 2024
    On 2024-07-14 14:49:30 +0000, olcott said:

    On 7/14/2024 3:58 AM, Mikko wrote:
    On 2024-07-13 13:04:01 +0000, olcott said:

    On 7/13/2024 7:20 AM, Fred. Zwarts wrote:
    Op 13.jul.2024 om 13:39 schreef olcott:
    On 7/13/2024 3:15 AM, Fred. Zwarts wrote:
    Op 13.jul.2024 om 01:19 schreef olcott:
    On 7/12/2024 5:56 PM, Richard Damon wrote:
    On 7/12/24 10:56 AM, olcott wrote:
    We stipulate that the only measure of a correct emulation is the >>>>>>>>> semantics of the x86 programming language.

    Which means the only "correct emulation" that tells the behavior of the
    program at the input is a non-aborted one.


    _DDD()
    [00002163] 55         push ebp      ; housekeeping >>>>>>>>> [00002164] 8bec       mov ebp,esp   ; housekeeping
    [00002166] 6863210000 push 00002163 ; push DDD
    [0000216b] e853f4ffff call 000015c3 ; call HHH(DDD)
    [00002170] 83c404     add esp,+04
    [00002173] 5d         pop ebp
    [00002174] c3         ret
    Size in bytes:(0018) [00002174]

    When N steps of DDD are emulated by HHH according to the
    semantics of the x86 language then N steps are emulated correctly. >>>>>>>>
    And thus HHH that do that know only the first N steps of the behavior >>>>>>>> of DDD, which continues per the definition of the x86 instruction set >>>>>>>> until the COMPLETE emulation (or direct execution) reaches a terminal >>>>>>>> instruction.


    When we examine the infinite set of every HHH/DDD pair such that: >>>>>>>>> HHH₁ one step of DDD is correctly emulated by HHH.
    HHH₂ two steps of DDD are correctly emulated by HHH.
    HHH₃ three steps of DDD are correctly emulated by HHH.
    ...
    HHH∞ The emulation of DDD by HHH never stops running.

    And thus, the subset that only did a finite number of steps and aborted
    its emulation on a non-terminal instrucition only have partial >>>>>>>> knowledge of the behavior of their DDD, and by returning to their >>>>>>>> caller, they establish that behavior for ALL copies of that HHH, even >>>>>>>> the one that DDD calls, which shows that DDD will be halting, even >>>>>>>> though HHH stopped its observation of the input before it gets to that >>>>>>>> point.


    The above specifies the infinite set of every HHH/DDD pair
    where 1 to infinity steps of DDD are correctly emulated by HHH. >>>>>>>>>
    No DDD instance of each HHH/DDD pair ever reaches past its
    own machine address of 0000216b and halts.

    Wrong. EVERY DDD of an HHH that simulated its input for only a finite >>>>>>>> number of steps WILL halt becuase it will reach its final return. >>>>>>>>
    The HHH that simulated it for only a finite number of steps, only >>>>>>>> learned that finite number of steps of the behaivor, and in EVERY case,
    when we look at the behavior past that point, which DOES occur per the >>>>>>>> definition of the x86 instruction set, as we have not reached a >>>>>>>> "termial" instruction that stops behavior, will see the HHH(DDD) that >>>>>>>> DDD called continuing to simulate its input to the point that this one >>>>>>>> was defined to stop, and then returns 0 to DDDD and then DDD returning >>>>>>>> and ending the behavior.

    You continue to stupidly confuse the PARTIAL observation that HHH does >>>>>>>> of the behavior of DDD by its PARTIAL emulation with the ACTUAL FULL >>>>>>>> behavior of DDD as defined by the full definition of the x86
    insttuction set.



    Thus each HHH element of the above infinite set of HHH/DDD
    pairs is necessarily correct to reject its DDD as non-halting. >>>>>>>>>

    Nope.

    NONE Of them CORRECTLY rejected itS DDD as non-halting and you are >>>>>>>> shown to be ignorant of what you are talking about.

    The HHH that did a partial emulation got the wrong answer, because >>>>>>>> THEIR DDD will halt. and the HHH that doen't abort never get around to >>>>>>>> rejecting its DDD as non-halting.

    *Here is the gist of my proof it is irrefutable*
    When no DDD of every HHH/DDD that can possibly exist
    halts then each HHH that rejects its DDD as non-halting
    is necessarily correct.

    *No double-talk and weasel words can overcome that*


    This is double talk, because no HHH can possibly exist that simulates >>>>>> itself correctly.

    Your definition of correct contradicts the semantics of
    the x86 language making it wrong.


    You have a wrong understanding of the semantics of the x86 language.
    You think that the x86 language specifies that skipping instructions do >>>> not change the behaviour of a program.

    You have the wrong understanding of a decider.

    You seem to have a wrong understanding of a decider.
    Calling a program a decider does not make it halt.


    Calling a program a decider places a requirement
    on its behavior: that it must halt.

    Placing a requirement that the program must halt does not make it halt.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Mon Jul 15 10:35:21 2024
    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??)

    Anyhow, this is what I reckon...

    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!

    Regards,
    Mike.


    *I have boiled it all down to this simple tautology*
    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, it halts and therefore it is not involved in an
    infinite recursion.
    So, its simulation does not need to be prevented from non termination
    and it is incorrect to abort its simulation.

    DDD has nothing to do with it. It is easy to eliminate DDD:

    int main() {
    return HHH(main);
    }

    This has the same problem. This proves that the problem is not in DDD,
    but in HHH, which halts when it aborts the simulation, but it decides
    that the simulation of itself does not halt.

    HHH is unable to decide about finite recursions.

    void Finite_Recursion (int N) {
    if (N > 0) Finite_Recursion (N - 1);
    }

    It decides after N recursions that there is an infinite recursion, which
    is incorrect.

    Your HHH is programmed to abort the simulation after N cycles of
    recursive simulations. Therefore, it is incorrect to abort the
    simulation of HHH when the simulated HHH has performed N-1 cycles,
    because that changes the behaviour of HHH.
    Since the simulated HHH always runs one cycle behind the simulating HHH,
    it is clear that HHH can never simulate enough cycles for a correct
    simulation, as is required by the x86 language.
    Therefore, the simulation is incorrect according to the criteria you stipulated.
    The conclusion is simple:
    HHH cannot possibly simulate itself correctly.

    No matter how much you want it to be correct, or how many times you
    repeat that it is correct, it does not change the fact that such a
    simulation is incorrect, because it is unable to reach the end.

    Sipser would agree that this incorrect simulation cannot be used to
    detect a non-halting behaviour.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Mon Jul 15 08:49:27 2024
    Am Sun, 14 Jul 2024 19:30:27 -0500 schrieb olcott:
    On 7/14/2024 7:20 PM, 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? Is it also triggered when calling a function in a
    loop?

    You never bothered to answer whether or not you have 100% understanding
    of infinite recursion. If you don't then you can never understand what I
    am saying. If you do that I already proved my point. Here is the proof
    again:
    As if you would believe me.
    You never bothered to answer my questions (see above).
    That only proves that HHH and DDD halt.

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to and here I believed them when they on Mon Jul 15 08:59:36 2024
    Am Sun, 14 Jul 2024 22:35:03 -0500 schrieb 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:

    [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??) Thank you. I didn't bother digging through their code, and they refused
    to give the abortion criterion.

    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...]
    Ah, and here I believed them when they said they had rewritten it.

    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!
    I wondered about just calling the same function repeatedly with the same parameters (on the same simulation level).

    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.
    It's just that the input HHH halts and does not need to be aborted.

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Mon Jul 15 14:04:48 2024
    Am Mon, 15 Jul 2024 07:23:57 -0500 schrieb olcott:
    On 7/15/2024 3:59 AM, joes wrote:
    Am Sun, 14 Jul 2024 22:35:03 -0500 schrieb olcott:
    On 7/14/2024 10:02 PM, Mike Terry wrote:

    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.
    It's just that the input HHH halts and does not need to be aborted.
    At the point that it is aborted it did need to be aborted
    Because it hadn't halted yet? Why should it have halted, it will do so
    in the future. Do you place arbitrary lifetime limits on all programs?

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Mon Jul 15 14:02:14 2024
    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.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mike Terry@21:1/5 to joes on Mon Jul 15 17:03:20 2024
    On 15/07/2024 09:59, joes wrote:
    Am Sun, 14 Jul 2024 22:35:03 -0500 schrieb 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:

    [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??)
    Thank you. I didn't bother digging through their code, and they refused
    to give the abortion criterion.

    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...]
    Ah, and here I believed them when they said they had rewritten it.

    I doubt he has done it properly if at all. I.e. I'm confident there will still be mutable static
    data giving different code paths for outer/inner executions.

    I offered to help PO sort out the required recursive logic but this was ignored, PO saying it would
    take him thousands of years(?) to do it correctly. I reckon anyone else here would fix it in a
    couple of hours!


    > 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!
    I wondered about just calling the same function repeatedly with the same parameters (on the same simulation level).

    Right, I see. Like:

    void Something () {}

    void DDD ()
    {
    for (int i=0; i<10; ++i)
    {
    Something ();
    }
    }

    That wouldn't match. The calls to Something() would match the CALL conditions, but the final test
    for conditional instructions would fail due to the presence of a conditional branch in the for() loop.

    I'm sure there are other reasonably simple examples which could expose problems but its pointless
    thinking them up, because PO will just add more conditions to explainn why they don't count, or in
    the end just ignore such examples (giving some incoherent or blatently wrong explanation), because
    he simply believes that what he claims is correct. (Regardless of any logic applied to the
    situation... PO /can't/ be persuaded by logic, because he just doesn't see logic [neural wiring
    issue?] - notice how not one of his "proofs" contain a shred of genuine logic where conclusions
    genuinely follow from what was said previously - they are all just PO restating his claims over and
    over with increasingly misleading wording! For sure he sees other peoples proofs, and tries to ape
    the features of those proofs [introducing fancy symbols and techy-sounding words] but it is all a
    case of form over genuine substance.)

    Mike.


    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.
    It's just that the input HHH halts and does not need to be aborted.

    Ah, if only someone had thought to tell PO this 2 years ago!! :)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Mon Jul 15 21:12:20 2024
    Op 15.jul.2024 om 14:22 schreef olcott:
    On 7/15/2024 3:49 AM, joes wrote:
    Am Sun, 14 Jul 2024 19:30:27 -0500 schrieb olcott:
    On 7/14/2024 7:20 PM, 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? Is it also triggered when calling a function in a >>>> loop?

    You never bothered to answer whether or not you have 100% understanding
    of infinite recursion. If you don't then you can never understand what I >>> am saying. If you do that I already proved my point. Here is the proof
    again:
    As if you would believe me.
    You never bothered to answer my questions (see above).
    That only proves that HHH and DDD halt.


    This *is* an answer too difficult for you to understand.

    New slave_stack at:1038c4
    Begin Local Halt Decider Simulation   Execution Trace Stored at:1138cc [00002172][001138bc][001138c0] 55         push ebp      ; housekeeping
    [00002173][001138bc][001138c0] 8bec       mov ebp,esp   ; housekeeping
    [00002175][001138b8][00002172] 6872210000 push 00002172 ; push DDD [0000217a][001138b4][0000217f] e853f4ffff call 000015d2 ; call HHH(DDD)
    New slave_stack at:14e2ec
    [00002172][0015e2e4][0015e2e8] 55         push ebp      ; housekeeping
    [00002173][0015e2e4][0015e2e8] 8bec       mov ebp,esp   ; housekeeping
    [00002175][0015e2e0][00002172] 6872210000 push 00002172 ; push DDD [0000217a][0015e2dc][0000217f] e853f4ffff call 000015d2 ; call HHH(DDD)
    Local Halt Decider: Infinite Recursion Detected Simulation Stopped


    A clear proof of an incorrect simulation, because there was no infinite recursion. Only N recursions, which were aborted after N-1 recursions,
    so the simulation skipped an important part of the input, which made it invalid.

    In fact, DDD has nothing to do with it. It is easy to eliminate DDD:

    int main() {
    return HHH(main);
    }

    This has the same problem. This proves that the problem is not in DDD,
    but in HHH, which halts when it aborts the simulation, but it decides
    that the simulation of itself does not halt.

    HHH is unable to decide about finite recursions.

    void Finite_Recursion (int N) {
    if (N > 0) Finite_Recursion (N - 1);
    }

    It decides after N recursions that there is an infinite recursion, which
    is incorrect.

    Your HHH is programmed to abort the simulation after N cycles of
    recursive simulations. Therefore, it is incorrect to abort the
    simulation of HHH when the simulated HHH has performed N-1 cycles,
    because that changes the behaviour of HHH.
    Since the simulated HHH always runs one cycle behind the simulating HHH,
    it is clear that HHH can never simulate enough cycles for a correct
    simulation, as is required by the x86 language.
    Therefore, the simulation is incorrect according to the criteria you stipulated.
    The conclusion is simple:
    HHH cannot possibly simulate itself correctly.

    No matter how much you want it to be correct, or how many times you
    repeat that it is correct, it does not change the fact that such a
    simulation is incorrect, because it is unable to reach the end.

    Sipser would agree that this incorrect simulation cannot be used to
    detect a non-halting behaviour.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Mon Jul 15 21:21:56 2024
    Op 15.jul.2024 om 17:52 schreef olcott:
    On 7/15/2024 9:04 AM, joes wrote:
    Am Mon, 15 Jul 2024 07:23:57 -0500 schrieb olcott:
    On 7/15/2024 3:59 AM, joes wrote:
    Am Sun, 14 Jul 2024 22:35:03 -0500 schrieb olcott:
    On 7/14/2024 10:02 PM, Mike Terry wrote:

    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.
    It's just that the input HHH halts and does not need to be aborted.
    At the point that it is aborted it did need to be aborted
    Because it hadn't halted yet?

    Because HHH has seen a repeating state that proves that DDD
    correctly emulated by HHH cannot possibly ever stop running
    unless aborted.

    A repeated state is not an infinitely repeated state. The problem is
    that HHH does not keep track of the full state, so it thinks that the
    same state was repeated, but it is not the exact same state.

    void Finite_Recursion (int N) {
    if (N > 0) Finite_Recursion (N - 1);
    }

    HHH decides after N recursions that there is an infinite recursion,
    which is incorrect.
    This is exactly what makes this simulation incorrect.


    That you fail to understand a that there is a repeating state
    or fail to understand that a repeating state proves this is
    less than no rebuttal at all.

    You fail to see that not every recursion is an infinite recursion.


    Why should it have halted, it will do so
    in the future. Do you place arbitrary lifetime limits on all programs?



    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Mon Jul 15 21:15:50 2024
    Op 15.jul.2024 om 14:39 schreef 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??)

    Anyhow, this is what I reckon...

    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!

    Regards,
    Mike.


    *I have boiled it all down to this simple tautology*
    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.

    DDD has nothing to do with it. It is easy to eliminate DDD:

    int main() {
    return HHH(main);
    }

    This has the same problem. This proves that the problem is not in DDD,
    but in HHH, which halts when it aborts the simulation, but it decides
    that the simulation of itself does not halt.

    HHH is unable to decide about finite recursions.

    void Finite_Recursion (int N) {
    if (N > 0) Finite_Recursion (N - 1);
    }

    It decides after N recursions that there is an infinite recursion, which
    is incorrect.

    Your HHH is programmed to abort the simulation after N cycles of
    recursive simulations. Therefore, it is incorrect to abort the
    simulation of HHH when the simulated HHH has performed N-1 cycles,
    because that changes the behaviour of HHH.
    Since the simulated HHH always runs one cycle behind the simulating HHH,
    it is clear that HHH can never simulate enough cycles for a correct
    simulation, as is required by the x86 language.
    Therefore, the simulation is incorrect according to the criteria you stipulated.
    The conclusion is simple:
    HHH cannot possibly simulate itself correctly.

    No matter how much you want it to be correct, or how many times you
    repeat that it is correct, it does not change the fact that such a
    simulation is incorrect, because it is unable to reach the end.

    Sipser would agree that this incorrect simulation cannot be used to
    detect a non-halting behaviour.


    If when you are very hungry and you eat until you are full
    you cannot correctly say that you were never hungry.

    If you are hungry and you eat until you are full you cannot correctly
    say that you did not eat.
    If a program aborts its simulation, you cannot say that it shows an
    infinite recursion as if it does not abort.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Mon Jul 15 20:58:58 2024
    Am Mon, 15 Jul 2024 10:52:34 -0500 schrieb olcott:
    On 7/15/2024 9:04 AM, joes wrote:
    Am Mon, 15 Jul 2024 07:23:57 -0500 schrieb olcott:
    On 7/15/2024 3:59 AM, joes wrote:
    Am Sun, 14 Jul 2024 22:35:03 -0500 schrieb olcott:
    On 7/14/2024 10:02 PM, Mike Terry wrote:

    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.
    It's just that the input HHH halts and does not need to be aborted.
    At the point that it is aborted it did need to be aborted
    Because it hadn't halted yet?
    Because HHH has seen a repeating state that proves that DDD correctly emulated by HHH cannot possibly ever stop running unless aborted.
    Which state is it that repeats forever? We know that HHH will abort.
    What does HHH do with Fred's Finite_Recursion()?

    That you fail to understand a that there is a repeating state or fail to understand that a repeating state proves this is less than no rebuttal
    at all.
    The state is in fact different in some internal decision logic that waits
    for a repetition. You know this better than me. Can you point me to
    where HHH looks for the stored state that may be repeated?

    Why should it have halted, it will do so in the future. Do you place
    arbitrary lifetime limits on all programs?

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Tue Jul 16 10:20:31 2024
    On 2024-07-15 12:22:19 +0000, olcott said:

    On 7/15/2024 3:49 AM, joes wrote:
    Am Sun, 14 Jul 2024 19:30:27 -0500 schrieb olcott:
    On 7/14/2024 7:20 PM, 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? Is it also triggered when calling a function in a >>>> loop?

    You never bothered to answer whether or not you have 100% understanding
    of infinite recursion. If you don't then you can never understand what I >>> am saying. If you do that I already proved my point. Here is the proof
    again:
    As if you would believe me.
    You never bothered to answer my questions (see above).
    That only proves that HHH and DDD halt.


    This *is* an answer too difficult for you to understand.

    New slave_stack at:1038c4
    Begin Local Halt Decider Simulation Execution Trace Stored at:1138cc [00002172][001138bc][001138c0] 55 push ebp ; housekeeping [00002173][001138bc][001138c0] 8bec mov ebp,esp ; housekeeping [00002175][001138b8][00002172] 6872210000 push 00002172 ; push DDD [0000217a][001138b4][0000217f] e853f4ffff call 000015d2 ; call HHH(DDD)
    New slave_stack at:14e2ec
    [00002172][0015e2e4][0015e2e8] 55 push ebp ; housekeeping [00002173][0015e2e4][0015e2e8] 8bec mov ebp,esp ; housekeeping [00002175][0015e2e0][00002172] 6872210000 push 00002172 ; push DDD [0000217a][0015e2dc][0000217f] e853f4ffff call 000015d2 ; call HHH(DDD)
    Local Halt Decider: Infinite Recursion Detected Simulation Stopped

    The trace does not show that HHH returns so there is no basis to
    think that HHH is a decider.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Tue Jul 16 10:47:08 2024
    On 2024-07-15 13:39:07 +0000, olcott said:

    On 7/15/2024 3:09 AM, Mikko wrote:
    On 2024-07-14 14:00:55 +0000, olcott said:

    According to the theory of computation the DDD that calls
    HHH(DDD) is not in the domain of HHH.

    The theory of computation does not say what the domain of HHH is.

    Sure it does. Where the Hell have you been?
    It says that the halting problem is defined in terms
    of finite strings that encode Turing machines.

    No, it does not. The halting problem is not a part of any theory of computation. It is a question that one maight expect the theory of
    computation to answer.

    Note that the halting problem does not specify how Turing machines
    should be encoded to finite strings. It meresly requires that the
    solution includes encoding rules so that every Turing machine can be
    encoded.

    Unless the specificaiton of HHH says otherwise HHH should be able
    to handle every input that can be given to it,

    No halt decider is allowed to report on the computation
    that it is contained within for several different reasons
    one of them is that computations are not finite strings.

    The halting problem requires that every Turing machine computation
    can be given as input.

    A partial halt decider may fail to answer for some computations.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Tue Jul 16 11:05:53 2024
    On 2024-07-15 13:41:17 +0000, olcott said:

    On 7/15/2024 3:15 AM, Mikko wrote:
    On 2024-07-14 14:49:30 +0000, olcott said:

    On 7/14/2024 3:58 AM, Mikko wrote:
    On 2024-07-13 13:04:01 +0000, olcott said:

    On 7/13/2024 7:20 AM, Fred. Zwarts wrote:
    Op 13.jul.2024 om 13:39 schreef olcott:
    On 7/13/2024 3:15 AM, Fred. Zwarts wrote:
    Op 13.jul.2024 om 01:19 schreef olcott:
    On 7/12/2024 5:56 PM, Richard Damon wrote:
    On 7/12/24 10:56 AM, olcott wrote:
    We stipulate that the only measure of a correct emulation is the >>>>>>>>>>> semantics of the x86 programming language.

    Which means the only "correct emulation" that tells the behavior of the
    program at the input is a non-aborted one.


    _DDD()
    [00002163] 55         push ebp      ; housekeeping >>>>>>>>>>> [00002164] 8bec       mov ebp,esp   ; housekeeping >>>>>>>>>>> [00002166] 6863210000 push 00002163 ; push DDD
    [0000216b] e853f4ffff call 000015c3 ; call HHH(DDD)
    [00002170] 83c404     add esp,+04
    [00002173] 5d         pop ebp
    [00002174] c3         ret
    Size in bytes:(0018) [00002174]

    When N steps of DDD are emulated by HHH according to the >>>>>>>>>>> semantics of the x86 language then N steps are emulated correctly. >>>>>>>>>>
    And thus HHH that do that know only the first N steps of the behavior
    of DDD, which continues per the definition of the x86 instruction set
    until the COMPLETE emulation (or direct execution) reaches a terminal
    instruction.


    When we examine the infinite set of every HHH/DDD pair such that: >>>>>>>>>>> HHH₁ one step of DDD is correctly emulated by HHH.
    HHH₂ two steps of DDD are correctly emulated by HHH.
    HHH₃ three steps of DDD are correctly emulated by HHH. >>>>>>>>>>> ...
    HHH∞ The emulation of DDD by HHH never stops running.

    And thus, the subset that only did a finite number of steps and aborted
    its emulation on a non-terminal instrucition only have partial >>>>>>>>>> knowledge of the behavior of their DDD, and by returning to their >>>>>>>>>> caller, they establish that behavior for ALL copies of that HHH, even
    the one that DDD calls, which shows that DDD will be halting, even >>>>>>>>>> though HHH stopped its observation of the input before it gets to that
    point.


    The above specifies the infinite set of every HHH/DDD pair >>>>>>>>>>> where 1 to infinity steps of DDD are correctly emulated by HHH. >>>>>>>>>>>
    No DDD instance of each HHH/DDD pair ever reaches past its >>>>>>>>>>> own machine address of 0000216b and halts.

    Wrong. EVERY DDD of an HHH that simulated its input for only a finite
    number of steps WILL halt becuase it will reach its final return. >>>>>>>>>>
    The HHH that simulated it for only a finite number of steps, only >>>>>>>>>> learned that finite number of steps of the behaivor, and in EVERY case,
    when we look at the behavior past that point, which DOES occur per the
    definition of the x86 instruction set, as we have not reached a >>>>>>>>>> "termial" instruction that stops behavior, will see the HHH(DDD) that
    DDD called continuing to simulate its input to the point that this one
    was defined to stop, and then returns 0 to DDDD and then DDD returning
    and ending the behavior.

    You continue to stupidly confuse the PARTIAL observation that HHH does
    of the behavior of DDD by its PARTIAL emulation with the ACTUAL FULL >>>>>>>>>> behavior of DDD as defined by the full definition of the x86 >>>>>>>>>> insttuction set.



    Thus each HHH element of the above infinite set of HHH/DDD >>>>>>>>>>> pairs is necessarily correct to reject its DDD as non-halting. >>>>>>>>>>>

    Nope.

    NONE Of them CORRECTLY rejected itS DDD as non-halting and you are >>>>>>>>>> shown to be ignorant of what you are talking about.

    The HHH that did a partial emulation got the wrong answer, because >>>>>>>>>> THEIR DDD will halt. and the HHH that doen't abort never get around to
    rejecting its DDD as non-halting.

    *Here is the gist of my proof it is irrefutable*
    When no DDD of every HHH/DDD that can possibly exist
    halts then each HHH that rejects its DDD as non-halting
    is necessarily correct.

    *No double-talk and weasel words can overcome that*


    This is double talk, because no HHH can possibly exist that simulates >>>>>>>> itself correctly.

    Your definition of correct contradicts the semantics of
    the x86 language making it wrong.


    You have a wrong understanding of the semantics of the x86 language. >>>>>> You think that the x86 language specifies that skipping instructions do >>>>>> not change the behaviour of a program.

    You have the wrong understanding of a decider.

    You seem to have a wrong understanding of a decider.
    Calling a program a decider does not make it halt.


    Calling a program a decider places a requirement
    on its behavior: that it must halt.

    Placing a requirement that the program must halt does not make it halt.

    It requires it to halt on inputs in its domain or it does
    not meet its own design spec.

    Only if the requirement is in the design specs. Still, does not make
    the program halt. That's why a termination analyzer would be useful.
    A termination analyzer might find out that the program does not halt
    and perhaps even give some hints about a possible fix.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Tue Jul 16 08:23:41 2024
    Am Mon, 15 Jul 2024 16:03:30 -0500 schrieb olcott:
    On 7/15/2024 3:58 PM, joes wrote:
    Am Mon, 15 Jul 2024 10:52:34 -0500 schrieb olcott:
    On 7/15/2024 9:04 AM, joes wrote:
    Am Mon, 15 Jul 2024 07:23:57 -0500 schrieb olcott:
    On 7/15/2024 3:59 AM, joes wrote:
    Am Sun, 14 Jul 2024 22:35:03 -0500 schrieb olcott:
    On 7/14/2024 10:02 PM, Mike Terry wrote:

    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.
    It's just that the input HHH halts and does not need to be aborted. >>>>> At the point that it is aborted it did need to be aborted
    Because it hadn't halted yet?
    Because HHH has seen a repeating state that proves that DDD correctly
    emulated by HHH cannot possibly ever stop running unless aborted.
    Which state is it that repeats forever?
    *It had never been which state DOES repeat forever*
    *It has always been which state WOULD repeat forever if not aborted*
    Well then, which state of HHH would repeat forever?

    Infinite_Loop() doesn't even repeat forever because it is aborted.
    By itself it does.

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Tue Jul 16 18:06:57 2024
    Am Tue, 16 Jul 2024 08:54:10 -0500 schrieb olcott:
    On 7/16/2024 3:23 AM, joes wrote:
    Am Mon, 15 Jul 2024 16:03:30 -0500 schrieb olcott:
    On 7/15/2024 3:58 PM, joes wrote:
    Am Mon, 15 Jul 2024 10:52:34 -0500 schrieb olcott:
    On 7/15/2024 9:04 AM, joes wrote:
    Am Mon, 15 Jul 2024 07:23:57 -0500 schrieb olcott:
    On 7/15/2024 3:59 AM, joes wrote:
    Am Sun, 14 Jul 2024 22:35:03 -0500 schrieb olcott:
    On 7/14/2024 10:02 PM, Mike Terry wrote:

    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.
    It's just that the input HHH halts and does not need to be
    aborted.
    At the point that it is aborted it did need to be aborted
    Because it hadn't halted yet?
    Because HHH has seen a repeating state that proves that DDD
    correctly emulated by HHH cannot possibly ever stop running unless
    aborted.
    Which state is it that repeats forever?
    *It had never been which state DOES repeat forever*
    *It has always been which state WOULD repeat forever if not aborted*
    Well then, which state of HHH would repeat forever?
    It is not "which state of HHH would repeat forever?"
    It is: Which state of HHH would repeat forever if not aborted?
    Those two are the same, but different to what you said above.
    HHH does not repeat forever because it makes sure to stop simulating
    anything that does.

    Infinite_Loop() doesn't even repeat forever because it is aborted.
    By itself it does.

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Tue Jul 16 20:27:18 2024
    Op 16.jul.2024 om 15:54 schreef olcott:
    On 7/16/2024 3:23 AM, joes wrote:
    Am Mon, 15 Jul 2024 16:03:30 -0500 schrieb olcott:
    On 7/15/2024 3:58 PM, joes wrote:
    Am Mon, 15 Jul 2024 10:52:34 -0500 schrieb olcott:
    On 7/15/2024 9:04 AM, joes wrote:
    Am Mon, 15 Jul 2024 07:23:57 -0500 schrieb olcott:
    On 7/15/2024 3:59 AM, joes wrote:
    Am Sun, 14 Jul 2024 22:35:03 -0500 schrieb olcott:
    On 7/14/2024 10:02 PM, Mike Terry wrote:

    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.
    It's just that the input HHH halts and does not need to be aborted. >>>>>>> At the point that it is aborted it did need to be aborted
    Because it hadn't halted yet?
    Because HHH has seen a repeating state that proves that DDD correctly >>>>> emulated by HHH cannot possibly ever stop running unless aborted.
    Which state is it that repeats forever?
    *It had never been which state DOES repeat forever*
    *It has always been which state WOULD repeat forever if not aborted*
    Well then, which state of HHH would repeat forever?


    *You still have it wrong*.
    It is not "which state of HHH would repeat forever?"
    It is: Which state of HHH would repeat forever if not aborted?

    But HHH aborts, so the unless is misleading. Dreaming of an HHH that
    does not abort is irrelevant.
    Therefore, the question is:
    Well then, which state of HHH would repeat forever?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Tue Jul 16 20:37:47 2024
    Am Tue, 16 Jul 2024 13:10:55 -0500 schrieb olcott:
    On 7/16/2024 2:47 AM, Mikko wrote:
    On 2024-07-15 13:39:07 +0000, olcott said:
    On 7/15/2024 3:09 AM, Mikko wrote:
    On 2024-07-14 14:00:55 +0000, olcott said:

    According to the theory of computation the DDD that calls HHH(DDD)
    is not in the domain of HHH.
    The theory of computation does not say what the domain of HHH is.
    It says that the halting problem is defined in terms of finite strings
    that encode Turing machines.

    The theory of computation only allows finite string inputs.
    It does not allow the currently executing Turing Machine to be its own
    input.
    A description of a TM may be given to that same machine as input.

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Wed Jul 17 09:48:04 2024
    On 2024-07-16 15:57:04 +0000, olcott said:

    On 7/16/2024 2:20 AM, Mikko wrote:
    On 2024-07-15 12:22:19 +0000, olcott said:

    On 7/15/2024 3:49 AM, joes wrote:
    Am Sun, 14 Jul 2024 19:30:27 -0500 schrieb olcott:
    On 7/14/2024 7:20 PM, 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? Is it also triggered when calling a function in a >>>>>> loop?

    You never bothered to answer whether or not you have 100% understanding >>>>> of infinite recursion. If you don't then you can never understand what I >>>>> am saying. If you do that I already proved my point. Here is the proof >>>>> again:
    As if you would believe me.
    You never bothered to answer my questions (see above).
    That only proves that HHH and DDD halt.


    This *is* an answer too difficult for you to understand.

    New slave_stack at:1038c4
    Begin Local Halt Decider Simulation   Execution Trace Stored at:1138cc >>> [00002172][001138bc][001138c0] 55         push ebp      ; housekeeping
    [00002173][001138bc][001138c0] 8bec       mov ebp,esp   ; housekeeping
    [00002175][001138b8][00002172] 6872210000 push 00002172 ; push DDD
    [0000217a][001138b4][0000217f] e853f4ffff call 000015d2 ; call HHH(DDD)
    New slave_stack at:14e2ec
    [00002172][0015e2e4][0015e2e8] 55         push ebp      ; housekeeping
    [00002173][0015e2e4][0015e2e8] 8bec       mov ebp,esp   ; housekeeping
    [00002175][0015e2e0][00002172] 6872210000 push 00002172 ; push DDD
    [0000217a][0015e2dc][0000217f] e853f4ffff call 000015d2 ; call HHH(DDD)
    Local Halt Decider: Infinite Recursion Detected Simulation Stopped

    The trace does not show that HHH returns so there is no basis to
    think that HHH is a decider.


    The trace shows the data of the executed program of HHH that
    does halt.

    It shows some of the data, not all, and in particular, not the halting.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Wed Jul 17 15:35:43 2024
    Op 17.jul.2024 om 15:02 schreef olcott:
    On 7/17/2024 1:48 AM, Mikko wrote:
    On 2024-07-16 15:57:04 +0000, olcott said:


    New slave_stack at:1038c4
    Begin Local Halt Decider Simulation   Execution Trace Stored at:1138cc >>>>> [00002172][001138bc][001138c0] 55         push ebp      ; housekeeping
    [00002173][001138bc][001138c0] 8bec       mov ebp,esp   ; housekeeping
    [00002175][001138b8][00002172] 6872210000 push 00002172 ; push DDD
    [0000217a][001138b4][0000217f] e853f4ffff call 000015d2 ; call
    HHH(DDD)
    New slave_stack at:14e2ec
    [00002172][0015e2e4][0015e2e8] 55         push ebp      ; housekeeping
    [00002173][0015e2e4][0015e2e8] 8bec       mov ebp,esp   ; housekeeping
    [00002175][0015e2e0][00002172] 6872210000 push 00002172 ; push DDD
    [0000217a][0015e2dc][0000217f] e853f4ffff call 000015d2 ; call
    HHH(DDD)
    Local Halt Decider: Infinite Recursion Detected Simulation Stopped

    The trace does not show that HHH returns so there is no basis to
    think that HHH is a decider.


    The trace shows the data of the executed program of HHH that
    does halt.

    It shows some of the data, not all, and in particular, not the halting.


    _DDD()
    [00002163] 55         push ebp      ; housekeeping
    [00002164] 8bec       mov ebp,esp   ; housekeeping
    [00002166] 6863210000 push 00002163 ; push DDD
    [0000216b] e853f4ffff call 000015c3 ; call HHH(DDD)
    [00002170] 83c404     add esp,+04
    [00002173] 5d         pop ebp
    [00002174] c3         ret
    Size in bytes:(0018) [00002174]

    DDD emulated by HHH according to the semantic meaning of
    its x86 instructions never stop running unless aborted.



    You have shown that you do not understand the semantics of the x86 language. HHH does abort and halt after N cycles, but it is aborted when only N-1
    cycles have been simulated. This shows that the simulation is incorrect.
    No abort was needed to make it halt.
    But HHH is programmed to abort, even when incorrect.
    Therefore, HHH cannot possibly simulate itself correctly.

    DDD has nothing to do with it. It is easy to eliminate DDD:

    int main() {
    return HHH(main);
    }

    This has the same problem. This proves that the problem is not in DDD,
    but in HHH, which halts when it aborts the simulation, but it decides
    that the simulation of itself does not halt.

    HHH is unable to decide about finite recursions.

    void Finite_Recursion (int N) {
    if (N > 0) Finite_Recursion (N - 1);
    }

    It decides after N recursions that there is an infinite recursion, which
    is incorrect.

    Your HHH is programmed to abort the simulation after N cycles of
    recursive simulations. Therefore, it is incorrect to abort the
    simulation of HHH when the simulated HHH has performed only N-1 cycles,
    because that changes the behaviour of HHH.
    Since the simulated HHH always runs one cycle behind the simulating HHH,
    it is clear that HHH can never simulate enough cycles for a correct
    simulation, as is required by the x86 language.
    Therefore, the simulation is incorrect according to the criteria you stipulated.
    The conclusion is simple:
    HHH cannot possibly simulate itself correctly.

    No matter how much you want it to be correct, or how many times you
    repeat that it is correct, it does not change the fact that such a
    simulation is incorrect, because it is unable to reach the end.
    Your own claim that the simulated HHH does not reach its end confirms
    it. The trace you have shown also proves that HHH cannot reach the end
    of its own simulation. So, your own claims prove that it is true that
    HHH cannot possibly simulate itself up to the end, which makes the
    simulation incorrect.

    Sipser would agree that this incorrect simulation cannot be used to
    detect a non-halting behaviour.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Wed Jul 17 16:17:30 2024
    Op 17.jul.2024 om 15:43 schreef olcott:
    On 7/17/2024 8:35 AM, Fred. Zwarts wrote:
    Op 17.jul.2024 om 15:02 schreef olcott:
    On 7/17/2024 1:48 AM, Mikko wrote:
    On 2024-07-16 15:57:04 +0000, olcott said:


    New slave_stack at:1038c4
    Begin Local Halt Decider Simulation   Execution Trace Stored
    at:1138cc
    [00002172][001138bc][001138c0] 55         push ebp      ; >>>>>>> housekeeping
    [00002173][001138bc][001138c0] 8bec       mov ebp,esp   ; >>>>>>> housekeeping
    [00002175][001138b8][00002172] 6872210000 push 00002172 ; push DDD >>>>>>> [0000217a][001138b4][0000217f] e853f4ffff call 000015d2 ; call
    HHH(DDD)
    New slave_stack at:14e2ec
    [00002172][0015e2e4][0015e2e8] 55         push ebp      ; >>>>>>> housekeeping
    [00002173][0015e2e4][0015e2e8] 8bec       mov ebp,esp   ; >>>>>>> housekeeping
    [00002175][0015e2e0][00002172] 6872210000 push 00002172 ; push DDD >>>>>>> [0000217a][0015e2dc][0000217f] e853f4ffff call 000015d2 ; call
    HHH(DDD)
    Local Halt Decider: Infinite Recursion Detected Simulation Stopped >>>>>>
    The trace does not show that HHH returns so there is no basis to
    think that HHH is a decider.


    The trace shows the data of the executed program of HHH that
    does halt.

    It shows some of the data, not all, and in particular, not the halting. >>>>

    _DDD()
    [00002163] 55         push ebp      ; housekeeping
    [00002164] 8bec       mov ebp,esp   ; housekeeping
    [00002166] 6863210000 push 00002163 ; push DDD
    [0000216b] e853f4ffff call 000015c3 ; call HHH(DDD)
    [00002170] 83c404     add esp,+04
    [00002173] 5d         pop ebp
    [00002174] c3         ret
    Size in bytes:(0018) [00002174]

    DDD emulated by HHH according to the semantic meaning of
    its x86 instructions never stop running unless aborted.



    You have shown that you do not understand the semantics of the x86
    language.
    HHH does abort and halt after N cycles,
    That is counter-factual

    No, it is a fact.


    When we examine the infinite set of every HHH/DDD pair such that:
    HHH1  One step of DDD is correctly emulated by HHH

    But the simulation is halted prematurely, so, the simulation as a whole
    is incorrect.

    HHH2  Two steps of DDD are correctly emulated by HHH

    But the simulation is halted prematurely, so, the simulation as a whole
    is incorrect.

    HHH3  Three steps of DDD are correctly emulated by HHH

    But the simulation is halted prematurely, so, the simulation as a whole
    is incorrect.

    ...

    But the simulation for N steps (with N arbitrarily large) is halted prematurely, so, the simulation as a whole is incorrect.
    Simulation invariant: An infinite amount of incorrect simulations.

    HHH∞  The emulation of DDD by HHH never stops

    Also an incorrect simulation, because the simulation never stops.

    *THIS IS SELF EVIDENT THUS DISAGREEMENT IS INCORRECT*
    DDD emulated by any pure function HHH according to the
    semantic meaning of its x86 instructions never stops
    running unless aborted.

    So, when not aborted it is incorrect and when aborted the simulation is
    also incorrect.
    So, you showed an infinite amount of evidence that each HHH cannot
    possibly simulate itself correctly.
    The semantics of the x86 language for a halting program is self-evident:
    it halts.
    Any disagreement is either misleading, or stupid.

    DDD is a misleading and unneeded complication. It is easy to eliminate DDD:

    int main() {
    return HHH(main);
    }

    This has the same problem. This proves that the problem is not in DDD,
    but in HHH, which halts when it aborts the simulation, but it decides
    that the simulation of itself does not halt.

    HHH is simply unable to decide about finite recursions.

    void Finite_Recursion (int N) {
    if (N > 0) Finite_Recursion (N - 1);
    }

    It decides after N recursions that there is an infinite recursion, which
    is incorrect.

    Your HHH is programmed to abort the simulation after N cycles of
    recursive simulations. Therefore, it is incorrect to abort the
    simulation of HHH when the simulated HHH has performed only N-1 cycles,
    because that changes the behaviour of HHH.
    Since the simulated HHH always runs one cycle behind the simulating HHH,
    it is clear that HHH can never simulate enough cycles for a correct
    simulation, as is required by the x86 language.
    Therefore, the simulation is incorrect according to the criteria you stipulated.
    The conclusion is simple:
    HHH cannot possibly simulate itself correctly.

    No matter how much you want it to be correct, or how many times you
    repeat that it is correct, it does not change the fact that such a
    simulation is incorrect, because it is unable to reach the end.
    Your own claim that the simulated HHH does not reach its end confirms
    it. The trace you have shown also proves that HHH cannot reach the end
    of its own simulation. So, your own claims prove that it is true that
    HHH cannot possibly simulate itself up to the end, which makes the
    simulation incorrect.

    Sipser would agree that this incorrect simulation cannot be used to
    detect a non-halting behaviour.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Wed Jul 17 17:18:35 2024
    Am Wed, 17 Jul 2024 08:43:04 -0500 schrieb olcott:
    On 7/17/2024 8:35 AM, Fred. Zwarts wrote:
    Op 17.jul.2024 om 15:02 schreef olcott:
    On 7/17/2024 1:48 AM, Mikko wrote:
    On 2024-07-16 15:57:04 +0000, olcott said:

    The trace does not show that HHH returns so there is no basis to
    think that HHH is a decider.
    The trace shows the data of the executed program of HHH that does
    halt.
    It shows some of the data, not all, and in particular, not the
    halting.
    DDD emulated by HHH according to the semantic meaning of its x86
    instructions never stop running unless aborted.
    Bla bla.
    You have shown that you do not understand the semantics of the x86
    language.
    HHH does abort and halt after N cycles,
    That is counter-factual
    Then HHH is not a decider.

    When we examine the infinite set of every HHH/DDD pair such that:
    HHH1 One step of DDD is correctly emulated by HHH HHH2 Two steps of
    DDD are correctly emulated by HHH HHH3 Three steps of DDD are correctly emulated by HHH ...
    HHH∞ The emulation of DDD by HHH never stops

    DDD emulated by any pure function HHH according to the semantic meaning
    of its x86 instructions never stops running unless aborted.
    DDD only calls HHH, which, being a decider, halts.

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Wed Jul 17 20:29:33 2024
    Am Wed, 17 Jul 2024 13:13:11 -0500 schrieb olcott:
    On 7/17/2024 12:18 PM, joes wrote:
    Am Wed, 17 Jul 2024 08:43:04 -0500 schrieb olcott:
    On 7/17/2024 8:35 AM, Fred. Zwarts wrote:
    Op 17.jul.2024 om 15:02 schreef olcott:
    On 7/17/2024 1:48 AM, Mikko wrote:
    On 2024-07-16 15:57:04 +0000, olcott said:

    The trace does not show that HHH returns so there is no basis to >>>>>>>> think that HHH is a decider.
    The trace shows the data of the executed program of HHH that does >>>>>>> halt.
    It shows some of the data, not all, and in particular, not the
    halting.
    DDD emulated by HHH according to the semantic meaning of its x86
    instructions never stop running unless aborted.
    Bla bla.
    You have shown that you do not understand the semantics of the x86
    language.
    HHH does abort and halt after N cycles,
    That is counter-factual
    Then HHH is not a decider.

    When we examine the infinite set of every HHH/DDD pair such that:
    HHH1 One step of DDD is correctly emulated by HHH HHH2 Two steps of
    DDD are correctly emulated by HHH HHH3 Three steps of DDD are
    correctly emulated by HHH ...
    HHH∞ The emulation of DDD by HHH never stops

    DDD emulated by any pure function HHH according to the semantic
    meaning of its x86 instructions never stops running unless aborted.
    DDD only calls HHH, which, being a decider, halts.
    I referred to every pure function HHH that can possibly exist.
    In each case DDD never makes it past it fourth instruction. This means
    that every HHH that halts is correct to reject its DDD as non-halting.
    Not every HHH halts.
    Only the one that doesn't abort after a finite number of steps doesn't
    halt, and that one is not a decider.

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Thu Jul 18 11:00:34 2024
    On 2024-07-17 13:02:31 +0000, olcott said:

    On 7/17/2024 1:48 AM, Mikko wrote:
    On 2024-07-16 15:57:04 +0000, olcott said:


    New slave_stack at:1038c4
    Begin Local Halt Decider Simulation   Execution Trace Stored at:1138cc >>>>> [00002172][001138bc][001138c0] 55         push ebp      ; housekeeping
    [00002173][001138bc][001138c0] 8bec       mov ebp,esp   ; housekeeping
    [00002175][001138b8][00002172] 6872210000 push 00002172 ; push DDD
    [0000217a][001138b4][0000217f] e853f4ffff call 000015d2 ; call HHH(DDD) >>>>> New slave_stack at:14e2ec
    [00002172][0015e2e4][0015e2e8] 55         push ebp      ; housekeeping
    [00002173][0015e2e4][0015e2e8] 8bec       mov ebp,esp   ; housekeeping
    [00002175][0015e2e0][00002172] 6872210000 push 00002172 ; push DDD
    [0000217a][0015e2dc][0000217f] e853f4ffff call 000015d2 ; call HHH(DDD) >>>>> Local Halt Decider: Infinite Recursion Detected Simulation Stopped

    The trace does not show that HHH returns so there is no basis to
    think that HHH is a decider.


    The trace shows the data of the executed program of HHH that
    does halt.

    It shows some of the data, not all, and in particular, not the halting.


    _DDD()
    [00002163] 55 push ebp ; housekeeping
    [00002164] 8bec mov ebp,esp ; housekeeping
    [00002166] 6863210000 push 00002163 ; push DDD
    [0000216b] e853f4ffff call 000015c3 ; call HHH(DDD)
    [00002170] 83c404 add esp,+04
    [00002173] 5d pop ebp
    [00002174] c3 ret
    Size in bytes:(0018) [00002174]

    DDD emulated by HHH according to the semantic meaning of
    its x86 instructions never stop running unless aborted.

    The abortion is shown but not any reason to abort.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Thu Jul 18 11:03:36 2024
    On 2024-07-17 13:43:04 +0000, olcott said:

    On 7/17/2024 8:35 AM, Fred. Zwarts wrote:
    Op 17.jul.2024 om 15:02 schreef olcott:
    On 7/17/2024 1:48 AM, Mikko wrote:
    On 2024-07-16 15:57:04 +0000, olcott said:


    New slave_stack at:1038c4
    Begin Local Halt Decider Simulation   Execution Trace Stored at:1138cc
    [00002172][001138bc][001138c0] 55         push ebp      ; housekeeping
    [00002173][001138bc][001138c0] 8bec       mov ebp,esp   ; housekeeping
    [00002175][001138b8][00002172] 6872210000 push 00002172 ; push DDD >>>>>>> [0000217a][001138b4][0000217f] e853f4ffff call 000015d2 ; call HHH(DDD) >>>>>>> New slave_stack at:14e2ec
    [00002172][0015e2e4][0015e2e8] 55         push ebp      ; housekeeping
    [00002173][0015e2e4][0015e2e8] 8bec       mov ebp,esp   ; housekeeping
    [00002175][0015e2e0][00002172] 6872210000 push 00002172 ; push DDD >>>>>>> [0000217a][0015e2dc][0000217f] e853f4ffff call 000015d2 ; call HHH(DDD) >>>>>>> Local Halt Decider: Infinite Recursion Detected Simulation Stopped >>>>>>
    The trace does not show that HHH returns so there is no basis to
    think that HHH is a decider.


    The trace shows the data of the executed program of HHH that
    does halt.

    It shows some of the data, not all, and in particular, not the halting. >>>>

    _DDD()
    [00002163] 55         push ebp      ; housekeeping
    [00002164] 8bec       mov ebp,esp   ; housekeeping
    [00002166] 6863210000 push 00002163 ; push DDD
    [0000216b] e853f4ffff call 000015c3 ; call HHH(DDD)
    [00002170] 83c404     add esp,+04
    [00002173] 5d         pop ebp
    [00002174] c3         ret
    Size in bytes:(0018) [00002174]

    DDD emulated by HHH according to the semantic meaning of
    its x86 instructions never stop running unless aborted.



    You have shown that you do not understand the semantics of the x86 language. >> HHH does abort and halt after N cycles,
    That is counter-factual

    Do you mean that HHH does not exist? The x86 language does, and so does its semantics.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Thu Jul 18 16:16:59 2024
    Op 18.jul.2024 om 16:08 schreef olcott:
    On 7/18/2024 3:00 AM, Mikko wrote:
    On 2024-07-17 13:02:31 +0000, olcott said:

    On 7/17/2024 1:48 AM, Mikko wrote:
    On 2024-07-16 15:57:04 +0000, olcott said:


    New slave_stack at:1038c4
    Begin Local Halt Decider Simulation   Execution Trace Stored
    at:1138cc
    [00002172][001138bc][001138c0] 55         push ebp      ; >>>>>>> housekeeping
    [00002173][001138bc][001138c0] 8bec       mov ebp,esp   ; >>>>>>> housekeeping
    [00002175][001138b8][00002172] 6872210000 push 00002172 ; push DDD >>>>>>> [0000217a][001138b4][0000217f] e853f4ffff call 000015d2 ; call
    HHH(DDD)
    New slave_stack at:14e2ec
    [00002172][0015e2e4][0015e2e8] 55         push ebp      ; >>>>>>> housekeeping
    [00002173][0015e2e4][0015e2e8] 8bec       mov ebp,esp   ; >>>>>>> housekeeping
    [00002175][0015e2e0][00002172] 6872210000 push 00002172 ; push DDD >>>>>>> [0000217a][0015e2dc][0000217f] e853f4ffff call 000015d2 ; call
    HHH(DDD)
    Local Halt Decider: Infinite Recursion Detected Simulation Stopped >>>>>>
    The trace does not show that HHH returns so there is no basis to
    think that HHH is a decider.


    The trace shows the data of the executed program of HHH that
    does halt.

    It shows some of the data, not all, and in particular, not the halting. >>>>

    _DDD()
    [00002163] 55         push ebp      ; housekeeping
    [00002164] 8bec       mov ebp,esp   ; housekeeping
    [00002166] 6863210000 push 00002163 ; push DDD
    [0000216b] e853f4ffff call 000015c3 ; call HHH(DDD)
    [00002170] 83c404     add esp,+04
    [00002173] 5d         pop ebp
    [00002174] c3         ret
    Size in bytes:(0018) [00002174]

    DDD emulated by HHH according to the semantic meaning of
    its x86 instructions never stop running unless aborted.

    The abortion is shown but not any reason to abort.


    In other words it is too difficult for you to understand that
    the above specifies this execution trace:

    *Repeat until aborted*
    {
      DDD emulated by HHH
      [00002163] 55         push ebp      ; housekeeping
      [00002164] 8bec       mov ebp,esp   ; housekeeping
      [00002166] 6863210000 push 00002163 ; push DDD
      [0000216b] e853f4ffff call 000015c3 ; call HHH(DDD)
    }



    Which is self-evidently not true, Because after each step the stack
    increases, therefore, we never get the same state.

    Further we know that HHH aborts after N cycles, so we can also say:

    *Repeat N times*
    {
    DDD emulated by HHH
    [00002163] 55 push ebp ; housekeeping
    [00002164] 8bec mov ebp,esp ; housekeeping
    [00002166] 6863210000 push 00002163 ; push DDD
    [0000216b] e853f4ffff call 000015c3 ; call HHH(DDD)
    }


    Further, DDD is a misleading and unneeded complication. It is easy to
    eliminate DDD:

    int main() {
    return HHH(main);
    }

    This has the same problem. This proves that the problem is not in DDD,
    but in HHH, which halts when it aborts the simulation, but it decides
    that the simulation of itself does not halt.

    HHH is simply unable to decide about finite recursions.

    void Finite_Recursion (int N) {
    if (N > 0) Finite_Recursion (N - 1);
    }

    It decides after N recursions that there is an infinite recursion, which
    is incorrect.

    Your HHH is programmed to abort the simulation after N cycles of
    recursive simulations. Therefore, it is incorrect to abort the
    simulation of HHH when the simulated HHH has performed only N-1 cycles,
    because that changes the behaviour of HHH.
    Since the simulated HHH always runs one cycle behind the simulating HHH,
    it is clear that HHH can never simulate enough cycles for a correct
    simulation, as is required by the x86 language.
    Therefore, the simulation is incorrect according to the criteria you stipulated.
    The conclusion is simple:
    HHH cannot possibly simulate itself correctly.

    No matter how much you want it to be correct, or how many times you
    repeat that it is correct, it does not change the fact that such a
    simulation is incorrect, because it is unable to reach the end.
    Your own claim that the simulated HHH does not reach its end confirms
    it. The trace you have shown also proves that HHH cannot reach the end
    of its own simulation. So, your own claims prove that it is true that
    HHH cannot possibly simulate itself up to the end, which makes the
    simulation incorrect.

    Sipser would agree that this incorrect simulation cannot be used to
    detect a non-halting behaviour.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Fri Jul 19 10:35:51 2024
    On 2024-07-18 14:08:32 +0000, olcott said:

    On 7/18/2024 3:00 AM, Mikko wrote:
    On 2024-07-17 13:02:31 +0000, olcott said:

    On 7/17/2024 1:48 AM, Mikko wrote:
    On 2024-07-16 15:57:04 +0000, olcott said:


    New slave_stack at:1038c4
    Begin Local Halt Decider Simulation   Execution Trace Stored at:1138cc
    [00002172][001138bc][001138c0] 55         push ebp      ; housekeeping
    [00002173][001138bc][001138c0] 8bec       mov ebp,esp   ; housekeeping
    [00002175][001138b8][00002172] 6872210000 push 00002172 ; push DDD >>>>>>> [0000217a][001138b4][0000217f] e853f4ffff call 000015d2 ; call HHH(DDD) >>>>>>> New slave_stack at:14e2ec
    [00002172][0015e2e4][0015e2e8] 55         push ebp      ; housekeeping
    [00002173][0015e2e4][0015e2e8] 8bec       mov ebp,esp   ; housekeeping
    [00002175][0015e2e0][00002172] 6872210000 push 00002172 ; push DDD >>>>>>> [0000217a][0015e2dc][0000217f] e853f4ffff call 000015d2 ; call HHH(DDD) >>>>>>> Local Halt Decider: Infinite Recursion Detected Simulation Stopped >>>>>>
    The trace does not show that HHH returns so there is no basis to
    think that HHH is a decider.


    The trace shows the data of the executed program of HHH that
    does halt.

    It shows some of the data, not all, and in particular, not the halting. >>>>

    _DDD()
    [00002163] 55         push ebp      ; housekeeping
    [00002164] 8bec       mov ebp,esp   ; housekeeping
    [00002166] 6863210000 push 00002163 ; push DDD
    [0000216b] e853f4ffff call 000015c3 ; call HHH(DDD)
    [00002170] 83c404     add esp,+04
    [00002173] 5d         pop ebp
    [00002174] c3         ret
    Size in bytes:(0018) [00002174]

    DDD emulated by HHH according to the semantic meaning of
    its x86 instructions never stop running unless aborted.

    The abortion is shown but not any reason to abort.


    In other words it is too difficult for you to understand that
    the above specifies this execution trace:

    *Repeat until aborted*
    {
    DDD emulated by HHH
    [00002163] 55 push ebp ; housekeeping
    [00002164] 8bec mov ebp,esp ; housekeeping
    [00002166] 6863210000 push 00002163 ; push DDD
    [0000216b] e853f4ffff call 000015c3 ; call HHH(DDD)
    }

    Your interpretation is wrong, as your interpretations usually are.
    Nothing in the trace connects this particular pice of trace to
    the abortion. The string "*Repeat untio aborted*" is not a part of
    the trace.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Fri Jul 19 10:42:14 2024
    On 2024-07-17 15:02:01 +0000, olcott said:

    On 7/16/2024 1:06 PM, joes wrote:
    Am Tue, 16 Jul 2024 08:54:10 -0500 schrieb olcott:
    On 7/16/2024 3:23 AM, joes wrote:
    Am Mon, 15 Jul 2024 16:03:30 -0500 schrieb olcott:
    On 7/15/2024 3:58 PM, joes wrote:
    Am Mon, 15 Jul 2024 10:52:34 -0500 schrieb olcott:
    On 7/15/2024 9:04 AM, joes wrote:
    Am Mon, 15 Jul 2024 07:23:57 -0500 schrieb olcott:
    On 7/15/2024 3:59 AM, joes wrote:
    Am Sun, 14 Jul 2024 22:35:03 -0500 schrieb olcott:
    On 7/14/2024 10:02 PM, Mike Terry wrote:

    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. >>>>>>>>>> It's just that the input HHH halts and does not need to be >>>>>>>>>> aborted.
    At the point that it is aborted it did need to be aborted
    Because it hadn't halted yet?
    Because HHH has seen a repeating state that proves that DDD
    correctly emulated by HHH cannot possibly ever stop running unless >>>>>>> aborted.
    Which state is it that repeats forever?
    *It had never been which state DOES repeat forever*
    *It has always been which state WOULD repeat forever if not aborted*
    Well then, which state of HHH would repeat forever?
    It is not "which state of HHH would repeat forever?"
    It is: Which state of HHH would repeat forever if not aborted?

    Those two are the same, but different to what you said above.
    HHH does not repeat forever because it makes sure to stop simulating
    anything that does.


    I proved that they are not the same in the part that
    you skipped.

    Wat makes you think any part was skipped?

    You have not presented any proof in any part, skipped or not.

    Infinite_Loop() doesn't even repeat forever because it is aborted.
    By itself it does.


    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Fri Jul 19 10:42:24 2024
    On 7/19/24 10:04 AM, olcott wrote:
    On 7/19/2024 2:35 AM, Mikko wrote:
    On 2024-07-18 14:08:32 +0000, olcott said:

    On 7/18/2024 3:00 AM, Mikko wrote:
    On 2024-07-17 13:02:31 +0000, olcott said:

    On 7/17/2024 1:48 AM, Mikko wrote:
    On 2024-07-16 15:57:04 +0000, olcott said:


    New slave_stack at:1038c4
    Begin Local Halt Decider Simulation   Execution Trace Stored >>>>>>>>> at:1138cc
    [00002172][001138bc][001138c0] 55         push ebp      ;
    housekeeping
    [00002173][001138bc][001138c0] 8bec       mov ebp,esp   ; >>>>>>>>> housekeeping
    [00002175][001138b8][00002172] 6872210000 push 00002172 ; push DDD >>>>>>>>> [0000217a][001138b4][0000217f] e853f4ffff call 000015d2 ; call >>>>>>>>> HHH(DDD)
    New slave_stack at:14e2ec
    [00002172][0015e2e4][0015e2e8] 55         push ebp      ;
    housekeeping
    [00002173][0015e2e4][0015e2e8] 8bec       mov ebp,esp   ; >>>>>>>>> housekeeping
    [00002175][0015e2e0][00002172] 6872210000 push 00002172 ; push DDD >>>>>>>>> [0000217a][0015e2dc][0000217f] e853f4ffff call 000015d2 ; call >>>>>>>>> HHH(DDD)
    Local Halt Decider: Infinite Recursion Detected Simulation Stopped >>>>>>>>
    The trace does not show that HHH returns so there is no basis to >>>>>>>> think that HHH is a decider.


    The trace shows the data of the executed program of HHH that
    does halt.

    It shows some of the data, not all, and in particular, not the
    halting.


    _DDD()
    [00002163] 55         push ebp      ; housekeeping
    [00002164] 8bec       mov ebp,esp   ; housekeeping
    [00002166] 6863210000 push 00002163 ; push DDD
    [0000216b] e853f4ffff call 000015c3 ; call HHH(DDD)
    [00002170] 83c404     add esp,+04
    [00002173] 5d         pop ebp
    [00002174] c3         ret
    Size in bytes:(0018) [00002174]

    DDD emulated by HHH according to the semantic meaning of
    its x86 instructions never stop running unless aborted.

    The abortion is shown but not any reason to abort.


    In other words it is too difficult for you to understand that
    the above specifies this execution trace:

    *Repeat until aborted*
    {
       DDD emulated by HHH
       [00002163] 55         push ebp      ; housekeeping
       [00002164] 8bec       mov ebp,esp   ; housekeeping
       [00002166] 6863210000 push 00002163 ; push DDD
       [0000216b] e853f4ffff call 000015c3 ; call HHH(DDD)
    }

    Your interpretation is wrong, as your interpretations usually are.
    Nothing in the trace connects this particular pice of trace to
    the abortion. The string "*Repeat untio aborted*" is not a part of
    the trace.


    *It connects that particular trace to the need to be aborted*

    And does so incorrectly


    When we examine the infinite set of every HHH/DDD pair such that:
    HHH₁ one step of DDD₁ is correctly emulated by HHH₁.
    HHH₂ two steps of DDD₂ are correctly emulated by HHH₂.
    HHH₃ three steps of DDD₃ are correctly emulated by HHH₃.
    ...
    HHH∞ The emulation of DDD∞ by HHH∞ never stops running.


    And either those are all different DDDs as they included different HHHs
    in their code, or your "never stops" can't get past 4.

    The above specifies every element of the infinite set of HHH/DDD pairs
    where 1 to infinity steps of DDD are correctly emulated by HHH.


    And every DDD is different, and all the DDDs but the last one halt, or
    your infinity is just 4

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Sat Jul 20 11:21:29 2024
    On 2024-07-19 14:08:24 +0000, olcott said:

    On 7/19/2024 2:42 AM, Mikko wrote:
    On 2024-07-17 15:02:01 +0000, olcott said:

    On 7/16/2024 1:06 PM, joes wrote:
    Am Tue, 16 Jul 2024 08:54:10 -0500 schrieb olcott:
    On 7/16/2024 3:23 AM, joes wrote:
    Am Mon, 15 Jul 2024 16:03:30 -0500 schrieb olcott:
    On 7/15/2024 3:58 PM, joes wrote:
    Am Mon, 15 Jul 2024 10:52:34 -0500 schrieb olcott:
    On 7/15/2024 9:04 AM, joes wrote:
    Am Mon, 15 Jul 2024 07:23:57 -0500 schrieb olcott:
    On 7/15/2024 3:59 AM, joes wrote:
    Am Sun, 14 Jul 2024 22:35:03 -0500 schrieb olcott:
    On 7/14/2024 10:02 PM, Mike Terry wrote:

    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. >>>>>>>>>>>> It's just that the input HHH halts and does not need to be >>>>>>>>>>>> aborted.
    At the point that it is aborted it did need to be aborted >>>>>>>>>> Because it hadn't halted yet?
    Because HHH has seen a repeating state that proves that DDD
    correctly emulated by HHH cannot possibly ever stop running unless >>>>>>>>> aborted.
    Which state is it that repeats forever?
    *It had never been which state DOES repeat forever*
    *It has always been which state WOULD repeat forever if not aborted* >>>>>> Well then, which state of HHH would repeat forever?
    It is not "which state of HHH would repeat forever?"
    It is: Which state of HHH would repeat forever if not aborted?

    Those two are the same, but different to what you said above.
    HHH does not repeat forever because it makes sure to stop simulating
    anything that does.


    I proved that they are not the same in the part that
    you skipped.

    Wat makes you think any part was skipped?

    You skipped the part at the bottom.

    So you just say so wothout any reason to say so?

    There is no proof at the bottom of <v75u22$19j7l$4@dont-email.me>.

    Infinite_Loop() repeats until aborted.

    There is no Infinite_Loopn at the bottom of <v75u22$19j7l$4@dont-email.me>. Besides it is none of the HHH or DDD, so not relevant to my comment.

    When we use your incorrect reasoning we would conclude
    that Infinite_Loop() is not an infinite loop because it
    only repeats until aborted and is aborted.

    You and your HHH can reason or at least conclude correctly about
    Infinite_Loop but not about DDD. Possibly because it prefers to
    say "no", which is correct about Infinte_loop but not about DDD.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Sun Jul 21 12:34:28 2024
    On 2024-07-20 13:11:03 +0000, olcott said:

    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    When we use your incorrect reasoning we would conclude
    that Infinite_Loop() is not an infinite loop because it
    only repeats until aborted and is aborted.

    You and your HHH can reason or at least conclude correctly about
    Infinite_Loop but not about DDD. Possibly because it prefers to
    say "no", which is correct about Infinte_loop but not about DDD.


    *Because this is true I don't understand how you are not simply lying*
    int main
    {
    DDD();
    }

    Calls HHH(DDD) that must abort the emulation of its input
    or {HHH, emulated DDD and executed DDD} never stop running.

    You are the lying one.

    If HHH(DDD) abrots its simulation and returns true it is correct as a
    halt decider for DDD really halts.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Sun Jul 21 14:55:50 2024
    Am Sun, 21 Jul 2024 08:34:40 -0500 schrieb olcott:
    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:
    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    If HHH(DDD) abrots its simulation and returns true it is correct as a
    halt decider for DDD really halts.
    (b) We know that a decider is not allowed to report on the behavior computation that itself is contained within. Deciders only take finite
    string inputs. They do not take executing processes as inputs. Thus HHH
    is not allowed to report on the behavior of this int main() { DDD(); }.
    Its input just happens to be the same as enclosing computation.

    Although embedded_H ⟨Ĥ⟩ ⟨Ĥ⟩ cannot possibly correctly report on its own
    behavior because its input does the opposite of whatever it reports embedded_H is only allowed to report on the behavior that its input specifies.
    Which is the opposite.

    Turing machines never take actual Turing machines as inputs.
    They only take finite strings as inputs and an actual executing Turing machine is not itself a finite string.
    Trivial.

    Since we ourselves can directly see that UTM based embedded_H ⟨Ĥ⟩ ⟨Ĥ⟩
    must abort the simulation of its input otherwise this input would never
    stop running we know that the criteria have been met.
    I see that the input halts.

    --
    Am Sat, 20 Jul 2024 12:35:31 +0000 schrieb WM in sci.math:
    It is not guaranteed that n+1 exists for every n.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Mon Jul 22 10:57:38 2024
    On 2024-07-21 13:34:40 +0000, olcott said:

    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:

    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    When we use your incorrect reasoning we would conclude
    that Infinite_Loop() is not an infinite loop because it
    only repeats until aborted and is aborted.

    You and your HHH can reason or at least conclude correctly about
    Infinite_Loop but not about DDD. Possibly because it prefers to
    say "no", which is correct about Infinte_loop but not about DDD.


    *Because this is true I don't understand how you are not simply lying*
    int main
    {
       DDD();
    }

    Calls HHH(DDD) that must abort the emulation of its input
    or {HHH, emulated DDD and executed DDD} never stop running.

    You are the lying one.

    If HHH(DDD) abrots its simulation and returns true it is correct as a
    halt decider for DDD really halts.


    (b) We know that a decider is not allowed to report on the behavior computation that itself is contained within.

    No, we don't. There is no such prohibition.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Tue Jul 23 09:32:57 2024
    On 2024-07-22 13:46:21 +0000, olcott said:

    On 7/22/2024 2:57 AM, Mikko wrote:
    On 2024-07-21 13:34:40 +0000, olcott said:

    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:

    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    When we use your incorrect reasoning we would conclude
    that Infinite_Loop() is not an infinite loop because it
    only repeats until aborted and is aborted.

    You and your HHH can reason or at least conclude correctly about
    Infinite_Loop but not about DDD. Possibly because it prefers to
    say "no", which is correct about Infinte_loop but not about DDD.


    *Because this is true I don't understand how you are not simply lying* >>>>> int main
    {
       DDD();
    }

    Calls HHH(DDD) that must abort the emulation of its input
    or {HHH, emulated DDD and executed DDD} never stop running.

    You are the lying one.

    If HHH(DDD) abrots its simulation and returns true it is correct as a
    halt decider for DDD really halts.


    (b) We know that a decider is not allowed to report on the behavior
    computation that itself is contained within.

    No, we don't. There is no such prohibition.


    Turing machines never take actual Turing machines as inputs.
    They only take finite strings as inputs and an actual executing
    Turing machine is not itself a finite string.

    The definition of a Turing machine does not say that a Turing machine
    is not a finite string. It is an abstract mathematical object without
    a specification of its exact nature. It could be a set or a finite
    string. Its exact nature is not relevant to the theory of computation,
    which only cares about certain properties of Turing machines.

    Therefore It is not allowed to report on its own behavior.

    Anyway, that does not follow. The theory of Turing machines does not
    prohibit anything.

    Another different TM can take the TM description of this
    machine and thus accurately report on its actual behavior.

    If a Turing machine can take a description of a TM as its input
    or as a part of its input it can also take its own description.
    Every Turing machine can be given its own description as input
    but a Turing machine may interprete it as something else.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Wed Jul 24 11:57:42 2024
    On 2024-07-23 13:31:35 +0000, olcott said:

    On 7/23/2024 1:32 AM, 0 wrote:
    On 2024-07-22 13:46:21 +0000, olcott said:

    On 7/22/2024 2:57 AM, Mikko wrote:
    On 2024-07-21 13:34:40 +0000, olcott said:

    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:

    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    When we use your incorrect reasoning we would conclude
    that Infinite_Loop() is not an infinite loop because it
    only repeats until aborted and is aborted.

    You and your HHH can reason or at least conclude correctly about >>>>>>>> Infinite_Loop but not about DDD. Possibly because it prefers to >>>>>>>> say "no", which is correct about Infinte_loop but not about DDD. >>>>>>>>

    *Because this is true I don't understand how you are not simply lying* >>>>>>> int main
    {
       DDD();
    }

    Calls HHH(DDD) that must abort the emulation of its input
    or {HHH, emulated DDD and executed DDD} never stop running.

    You are the lying one.

    If HHH(DDD) abrots its simulation and returns true it is correct as a >>>>>> halt decider for DDD really halts.


    (b) We know that a decider is not allowed to report on the behavior
    computation that itself is contained within.

    No, we don't. There is no such prohibition.


    Turing machines never take actual Turing machines as inputs.
    They only take finite strings as inputs and an actual executing
    Turing machine is not itself a finite string.

    The definition of a Turing machine does not say that a Turing machine
    is not a finite string. It is an abstract mathematical object without
    a specification of its exact nature. It could be a set or a finite
    string. Its exact nature is not relevant to the theory of computation,
    which only cares about certain properties of Turing machines.

    Therefore It is not allowed to report on its own behavior.

    Anyway, that does not follow. The theory of Turing machines does not
    prohibit anything.

    Another different TM can take the TM description of this
    machine and thus accurately report on its actual behavior.

    If a Turing machine can take a description of a TM as its input
    or as a part of its input it can also take its own description.
    Every Turing machine can be given its own description as input
    but a Turing machine may interprete it as something else.

    In this case we have two x86utm machines that are identical
    except that DDD calls HHH and DDD does not call HHH1.

    That DDD calls HHH and DDD does not call HHH1 is not a difference
    between two unnamed turing machines.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Wed Jul 24 10:52:47 2024
    Op 23.jul.2024 om 15:31 schreef olcott:
    On 7/23/2024 1:32 AM, 0 wrote:
    On 2024-07-22 13:46:21 +0000, olcott said:

    On 7/22/2024 2:57 AM, Mikko wrote:
    On 2024-07-21 13:34:40 +0000, olcott said:

    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:

    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    When we use your incorrect reasoning we would conclude
    that Infinite_Loop() is not an infinite loop because it
    only repeats until aborted and is aborted.

    You and your HHH can reason or at least conclude correctly about >>>>>>>> Infinite_Loop but not about DDD. Possibly because it prefers to >>>>>>>> say "no", which is correct about Infinte_loop but not about DDD. >>>>>>>>

    *Because this is true I don't understand how you are not simply
    lying*
    int main
    {
       DDD();
    }

    Calls HHH(DDD) that must abort the emulation of its input
    or {HHH, emulated DDD and executed DDD} never stop running.

    You are the lying one.

    If HHH(DDD) abrots its simulation and returns true it is correct as a >>>>>> halt decider for DDD really halts.


    (b) We know that a decider is not allowed to report on the behavior
    computation that itself is contained within.

    No, we don't. There is no such prohibition.


    Turing machines never take actual Turing machines as inputs.
    They only take finite strings as inputs and an actual executing
    Turing machine is not itself a finite string.

    The definition of a Turing machine does not say that a Turing machine
    is not a finite string. It is an abstract mathematical object without
    a specification of its exact nature. It could be a set or a finite
    string. Its exact nature is not relevant to the theory of computation,
    which only cares about certain properties of Turing machines.

    Therefore It is not allowed to report on its own behavior.

    Anyway, that does not follow. The theory of Turing machines does not
    prohibit anything.

    Another different TM can take the TM description of this
    machine and thus accurately report on its actual behavior.

    If a Turing machine can take a description of a TM as its input
    or as a part of its input it can also take its own description.
    Every Turing machine can be given its own description as input
    but a Turing machine may interprete it as something else.

    In this case we have two x86utm machines that are identical
    except that DDD calls HHH and DDD does not call HHH1.

    It is empirically proven that this changes their behavior
    and the behavior of DDD.


    The x86 code is exactly the same, therefore, the semantics of the x86
    does not change, which proves that your claim that HHH works according
    to the semantics of the x86 language is not true.
    The semantics of the x86 language specify exactly the same behaviour.
    That does not change when it is given to another simulator.
    Your empirical proof is invalid, because it uses the wrong method, when
    it ignores the semantics of the x86 language.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Wed Jul 24 20:34:00 2024
    Op 24.jul.2024 om 15:29 schreef olcott:
    On 7/24/2024 3:52 AM, Fred. Zwarts wrote:
    Op 23.jul.2024 om 15:31 schreef olcott:
    On 7/23/2024 1:32 AM, 0 wrote:
    On 2024-07-22 13:46:21 +0000, olcott said:

    On 7/22/2024 2:57 AM, Mikko wrote:
    On 2024-07-21 13:34:40 +0000, olcott said:

    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:

    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    When we use your incorrect reasoning we would conclude
    that Infinite_Loop() is not an infinite loop because it
    only repeats until aborted and is aborted.

    You and your HHH can reason or at least conclude correctly about >>>>>>>>>> Infinite_Loop but not about DDD. Possibly because it prefers to >>>>>>>>>> say "no", which is correct about Infinte_loop but not about DDD. >>>>>>>>>>

    *Because this is true I don't understand how you are not simply >>>>>>>>> lying*
    int main
    {
       DDD();
    }

    Calls HHH(DDD) that must abort the emulation of its input
    or {HHH, emulated DDD and executed DDD} never stop running.

    You are the lying one.

    If HHH(DDD) abrots its simulation and returns true it is correct >>>>>>>> as a
    halt decider for DDD really halts.


    (b) We know that a decider is not allowed to report on the behavior >>>>>>> computation that itself is contained within.

    No, we don't. There is no such prohibition.


    Turing machines never take actual Turing machines as inputs.
    They only take finite strings as inputs and an actual executing
    Turing machine is not itself a finite string.

    The definition of a Turing machine does not say that a Turing machine
    is not a finite string. It is an abstract mathematical object without
    a specification of its exact nature. It could be a set or a finite
    string. Its exact nature is not relevant to the theory of computation, >>>> which only cares about certain properties of Turing machines.

    Therefore It is not allowed to report on its own behavior.

    Anyway, that does not follow. The theory of Turing machines does not
    prohibit anything.

    Another different TM can take the TM description of this
    machine and thus accurately report on its actual behavior.

    If a Turing machine can take a description of a TM as its input
    or as a part of its input it can also take its own description.
    Every Turing machine can be given its own description as input
    but a Turing machine may interprete it as something else.

    In this case we have two x86utm machines that are identical
    except that DDD calls HHH and DDD does not call HHH1.

    It is empirically proven that this changes their behavior
    and the behavior of DDD.


    The x86 code is exactly the same, therefore, the semantics of the x86
    does not change, which proves that your claim that HHH works according
    to the semantics of the x86 language is not true.

    *HHH1(DDD) need not aborted because HHH(DDD) must be aborted*

    HHH aborts (whether it must or not is irrelevant, it does).
    Therefore there is no need to abort the simulation of HHH.
    HHH1 proves that I am right, because when HHH1 simulates DDD, it also
    simulates HHH called by DDD.
    This proves that it is incorrect to abort the simulation of HHH.
    However, HHH cannot do anything else than abort the simulation of
    itself, because that is how it is coded.
    HHH is incorrect when it aborts a simulation that would halt by its own.
    The simulation of HHH by itself is incomplete and therefore incorrect.
    The conclusion must be: HHH cannot possibly simulate itself correctly.

    This is your last chance before I ignore everything you say.

    What is the problem? Are you unable to understand what I say, or are you unwilling to understand what I say?
    Which of the above steps are too difficult for you to understand?


    int main()
    {
      HHH1(DDD);
    }

    _DDD()
    [00002177] 55         push ebp
    [00002178] 8bec       mov ebp,esp
    [0000217a] 6877210000 push 00002177
    [0000217f] e853f4ffff call 000015d7
    [00002184] 83c404     add esp,+04
    [00002187] 5d         pop ebp
    [00002188] c3         ret
    Size in bytes:(0018) [00002188]

    _main()
    [00002197] 55         push ebp
    [00002198] 8bec       mov ebp,esp
    [0000219a] 6877210000 push 00002177
    [0000219f] e863f3ffff call 00001507
    [000021a4] 83c404     add esp,+04
    [000021a7] 33c0       xor eax,eax
    [000021a9] 5d         pop ebp
    [000021aa] c3         ret
    Size in bytes:(0020) [000021aa]

     machine   stack     stack     machine    assembly
     address   address   data      code       language
     ========  ========  ========  =========  ============= [00002197][001037fb][00000000] 55         push ebp [00002198][001037fb][00000000] 8bec       mov ebp,esp [0000219a][001037f7][00002177] 6877210000 push 00002177 ; push DDD [0000219f][001037f3][000021a4] e863f3ffff call 00001507 ; call HHH1
    New slave_stack at:10389f

    Begin Local Halt Decider Simulation   Execution Trace Stored at:1138a7 [00002177][00113897][0011389b] 55         push ebp [00002178][00113897][0011389b] 8bec       mov ebp,esp [0000217a][00113893][00002177] 6877210000 push 00002177 ; push DDD [0000217f][0011388f][00002184] e853f4ffff call 000015d7 ; call HHH
    New slave_stack at:14e2c7

    Begin Local Halt Decider Simulation   Execution Trace Stored at:15e2cf [00002177][0015e2bf][0015e2c3] 55         push ebp [00002178][0015e2bf][0015e2c3] 8bec       mov ebp,esp [0000217a][0015e2bb][00002177] 6877210000 push 00002177 ; push DDD [0000217f][0015e2b7][00002184] e853f4ffff call 000015d7 ; call HHH
    New slave_stack at:198cef
    [00002177][001a8ce7][001a8ceb] 55         push ebp [00002178][001a8ce7][001a8ceb] 8bec       mov ebp,esp [0000217a][001a8ce3][00002177] 6877210000 push 00002177 ; push DDD [0000217f][001a8cdf][00002184] e853f4ffff call 000015d7 ; call HHH
    Local Halt Decider: Infinite Recursion Detected Simulation Stopped

    There was no infinite recursion, because HHH aborts after two cycles.
    HHH is simply unable to see the difference between infinite recursion
    and finite recursion of more than two cycles.

    void Finite_Recursion (int N) {
    if (N > 0) Finite_Recursion (N - 1);
    }

    It decides after two recursions that there is an infinite recursion,
    which is incorrect.

    We can ignore the incorrect remark from HHH, because the only thing that
    counts is that HHH aborts.
    HHH1 *does* detect that there is a finite recursion, but HHH decides too
    soon that there is an infinite recursion. This is exactly what makes the simulation of HHH by itself incorrect.
    The simulated HHH already aborts, so no abort is needed for the
    simulation, but the simulating HHH cannot change its coding and
    therefore aborts when it is not needed.
    It is an self-evident truism that HHH cannot possibly simulate itself correctly. In your terminology, it is a tautology.


    [00002184][00113897][0011389b] 83c404     add esp,+04 [00002187][0011389b][000015bc] 5d         pop ebp [00002188][0011389f][0003a980] c3         ret [000021a4][001037fb][00000000] 83c404     add esp,+04 [000021a7][001037fb][00000000] 33c0       xor eax,eax [000021a9][001037ff][00000018] 5d         pop ebp [000021aa][00103803][00000000] c3         ret
    Number of Instructions Executed(352831) == 5266 Pages



    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mike Terry@21:1/5 to olcott on Thu Jul 25 04:29:02 2024
    On 23/07/2024 14:31, olcott wrote:
    On 7/23/2024 1:32 AM, 0 wrote:
    On 2024-07-22 13:46:21 +0000, olcott said:

    On 7/22/2024 2:57 AM, Mikko wrote:
    On 2024-07-21 13:34:40 +0000, olcott said:

    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:

    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    When we use your incorrect reasoning we would conclude
    that Infinite_Loop() is not an infinite loop because it
    only repeats until aborted and is aborted.

    You and your HHH can reason or at least conclude correctly about >>>>>>>> Infinite_Loop but not about DDD. Possibly because it prefers to >>>>>>>> say "no", which is correct about Infinte_loop but not about DDD. >>>>>>>>

    *Because this is true I don't understand how you are not simply lying* >>>>>>> int main
    {
    DDD();
    }

    Calls HHH(DDD) that must abort the emulation of its input
    or {HHH, emulated DDD and executed DDD} never stop running.

    You are the lying one.

    If HHH(DDD) abrots its simulation and returns true it is correct as a >>>>>> halt decider for DDD really halts.


    (b) We know that a decider is not allowed to report on the behavior
    computation that itself is contained within.

    No, we don't. There is no such prohibition.


    Turing machines never take actual Turing machines as inputs.
    They only take finite strings as inputs and an actual executing
    Turing machine is not itself a finite string.

    The definition of a Turing machine does not say that a Turing machine
    is not a finite string. It is an abstract mathematical object without
    a specification of its exact nature. It could be a set or a finite
    string. Its exact nature is not relevant to the theory of computation,
    which only cares about certain properties of Turing machines.

    Therefore It is not allowed to report on its own behavior.

    Anyway, that does not follow. The theory of Turing machines does not
    prohibit anything.

    Another different TM can take the TM description of this
    machine and thus accurately report on its actual behavior.

    If a Turing machine can take a description of a TM as its input
    or as a part of its input it can also take its own description.
    Every Turing machine can be given its own description as input
    but a Turing machine may interprete it as something else.

    In this case we have two x86utm machines that are identical
    except that DDD calls HHH and DDD does not call HHH1.

    It is empirically proven that this changes their behavior
    and the behavior of DDD.


    You say a lot about things that are "empirically proven" and without exception they are never
    "proven" at all.

    You previously claimed that H and H1 behaviours were different as evidence that "copies of routines"
    don't necessarily produce the same behaviour as the original routine, due to magical pathelogical
    relationships. But if the copies are done properly of course they will produce the same behaviour,
    because the x86 language is deterministic. I'm assuming you're not just cheating and using the
    mutable global data trick! or similar...

    So what had you messed up with H/H1? H and H1 internally both used their /own/ addresses for
    comparisons with simulated code addresses. So they are not copies of each other - if they were, H1
    would have used H's address (effectively this address is like a const global variable, and both H/H1
    need to use the same one if they are claimed to use the same algorithm).

    If you had implemented the copy correctly, BOTH H AND H1 WOULD CALCULATE THE SAME BEHAVIOUR for
    (D,D) input (or any other input). So this turned out to be just a case of naff programming on your
    part - nothing "magical" about pathelogical relationships between H/D which aren't present for H1/D;
    just naff coding. [H1 using a different algorithm meant it never matched H's abort decision, so
    effectively reverted to UTM behaviour that simulated (D,D) to completion, including the final return.]

    Now you're claiming the same for HHH/HHH1 ? What duffer coding errors have you made this time?

    Seriously - if the code of HHH and HHH1 is supposedly the same (and no cheap cheats such as mutable
    global/static cheats, and so on) THEN WHY WOULD THE BEHAVIOUR OF HHH and HHH1 differ when evaluating
    an input? *What have you messed up this time?*

    It's your code so you should be the one to explain anomalies like this at the coding level. Why
    /exactly/ does HHH1 produce a different result to HHH? Also you might state more clearly what the
    different behaviour is, e.g. "HHH reports DDD() never halts, while HHH1 reports that it halts" or
    whatever.


    Regards,
    Mike.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Thu Jul 25 09:47:18 2024
    Op 24.jul.2024 om 21:27 schreef olcott:
    On 7/24/2024 1:34 PM, Fred. Zwarts wrote:
    Op 24.jul.2024 om 15:29 schreef olcott:
    On 7/24/2024 3:52 AM, Fred. Zwarts wrote:
    Op 23.jul.2024 om 15:31 schreef olcott:
    On 7/23/2024 1:32 AM, 0 wrote:
    On 2024-07-22 13:46:21 +0000, olcott said:

    On 7/22/2024 2:57 AM, Mikko wrote:
    On 2024-07-21 13:34:40 +0000, olcott said:

    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:

    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    When we use your incorrect reasoning we would conclude >>>>>>>>>>>>> that Infinite_Loop() is not an infinite loop because it >>>>>>>>>>>>> only repeats until aborted and is aborted.

    You and your HHH can reason or at least conclude correctly >>>>>>>>>>>> about
    Infinite_Loop but not about DDD. Possibly because it prefers to >>>>>>>>>>>> say "no", which is correct about Infinte_loop but not about >>>>>>>>>>>> DDD.


    *Because this is true I don't understand how you are not >>>>>>>>>>> simply lying*
    int main
    {
       DDD();
    }

    Calls HHH(DDD) that must abort the emulation of its input >>>>>>>>>>> or {HHH, emulated DDD and executed DDD} never stop running. >>>>>>>>>>
    You are the lying one.

    If HHH(DDD) abrots its simulation and returns true it is
    correct as a
    halt decider for DDD really halts.


    (b) We know that a decider is not allowed to report on the
    behavior
    computation that itself is contained within.

    No, we don't. There is no such prohibition.


    Turing machines never take actual Turing machines as inputs.
    They only take finite strings as inputs and an actual executing
    Turing machine is not itself a finite string.

    The definition of a Turing machine does not say that a Turing machine >>>>>> is not a finite string. It is an abstract mathematical object without >>>>>> a specification of its exact nature. It could be a set or a finite >>>>>> string. Its exact nature is not relevant to the theory of
    computation,
    which only cares about certain properties of Turing machines.

    Therefore It is not allowed to report on its own behavior.

    Anyway, that does not follow. The theory of Turing machines does not >>>>>> prohibit anything.

    Another different TM can take the TM description of this
    machine and thus accurately report on its actual behavior.

    If a Turing machine can take a description of a TM as its input
    or as a part of its input it can also take its own description.
    Every Turing machine can be given its own description as input
    but a Turing machine may interprete it as something else.

    In this case we have two x86utm machines that are identical
    except that DDD calls HHH and DDD does not call HHH1.

    It is empirically proven that this changes their behavior
    and the behavior of DDD.


    The x86 code is exactly the same, therefore, the semantics of the
    x86 does not change, which proves that your claim that HHH works
    according to the semantics of the x86 language is not true.

    *HHH1(DDD) need not aborted because HHH(DDD) must be aborted*

    HHH aborts (whether it must or not is irrelevant, it does).
    Therefore there is no need to abort the simulation of HHH.

    Good bye liar.


    A typical example of how olcott twists the meaning of words.
    As soon as he realises that it is true what I say, he calls me a liar,
    in order to have an excuse to stop the dialogue.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Python@21:1/5 to All on Thu Jul 25 16:02:37 2024
    Le 25/07/2024 à 15:56, olcott a écrit :
    ...
    If you care study the code that I just provided
    (and don't just ignore this and assume that I must be wrong)
    you can see that when DDD is correctly emulated by HHH that
    DDD does correctly have different behavior than DDD correctly
    emulated by HHH1.

    The same code emulated "correctly" twice with different behavior???

    You are definitely insane, Robert.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Thu Jul 25 16:27:33 2024
    Op 25.jul.2024 om 15:56 schreef olcott:
    On 7/24/2024 10:29 PM, Mike Terry wrote:
    On 23/07/2024 14:31, olcott wrote:
    On 7/23/2024 1:32 AM, 0 wrote:
    On 2024-07-22 13:46:21 +0000, olcott said:

    On 7/22/2024 2:57 AM, Mikko wrote:
    On 2024-07-21 13:34:40 +0000, olcott said:

    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:

    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    When we use your incorrect reasoning we would conclude
    that Infinite_Loop() is not an infinite loop because it
    only repeats until aborted and is aborted.

    You and your HHH can reason or at least conclude correctly about >>>>>>>>>> Infinite_Loop but not about DDD. Possibly because it prefers to >>>>>>>>>> say "no", which is correct about Infinte_loop but not about DDD. >>>>>>>>>>

    *Because this is true I don't understand how you are not simply >>>>>>>>> lying*
    int main
    {
       DDD();
    }

    Calls HHH(DDD) that must abort the emulation of its input
    or {HHH, emulated DDD and executed DDD} never stop running.

    You are the lying one.

    If HHH(DDD) abrots its simulation and returns true it is correct >>>>>>>> as a
    halt decider for DDD really halts.


    (b) We know that a decider is not allowed to report on the behavior >>>>>>> computation that itself is contained within.

    No, we don't. There is no such prohibition.


    Turing machines never take actual Turing machines as inputs.
    They only take finite strings as inputs and an actual executing
    Turing machine is not itself a finite string.

    The definition of a Turing machine does not say that a Turing machine
    is not a finite string. It is an abstract mathematical object without
    a specification of its exact nature. It could be a set or a finite
    string. Its exact nature is not relevant to the theory of computation, >>>> which only cares about certain properties of Turing machines.

    Therefore It is not allowed to report on its own behavior.

    Anyway, that does not follow. The theory of Turing machines does not
    prohibit anything.

    Another different TM can take the TM description of this
    machine and thus accurately report on its actual behavior.

    If a Turing machine can take a description of a TM as its input
    or as a part of its input it can also take its own description.
    Every Turing machine can be given its own description as input
    but a Turing machine may interprete it as something else.

    In this case we have two x86utm machines that are identical
    except that DDD calls HHH and DDD does not call HHH1.

    It is empirically proven that this changes their behavior
    and the behavior of DDD.


    You say a lot about things that are "empirically proven" and without
    exception they are never "proven" at all.


    It is empirically proven according to the semantics of the
    x86 machine code of DDD that DDD correctly emulated by HHH
    has different behavior than DDD correctly emulated by HHH1.

    No, you have proven that the *simulation* is different, not that the
    behaviour of the simulated function is different.
    The simulations differ, because one is correct and the other one is
    incorrect.
    The one that skips x86 instructions (by aborting) does not follow the
    semantics of the x86 language. Its simulation is incomplete and
    therefore is wrong.


    _DDD()
    [00002177] 55         push ebp
    [00002178] 8bec       mov ebp,esp
    [0000217a] 6877210000 push 00002177
    [0000217f] e853f4ffff call 000015d7
    [00002184] 83c404     add esp,+04
    [00002187] 5d         pop ebp
    [00002188] c3         ret
    Size in bytes:(0018) [00002188]

    _main()
    [00002197] 55         push ebp
    [00002198] 8bec       mov ebp,esp
    [0000219a] 6877210000 push 00002177
    [0000219f] e863f3ffff call 00001507
    [000021a4] 83c404     add esp,+04
    [000021a7] 33c0       xor eax,eax
    [000021a9] 5d         pop ebp
    [000021aa] c3         ret
    Size in bytes:(0020) [000021aa]

     machine   stack     stack     machine    assembly
     address   address   data      code       language
     ========  ========  ========  =========  ============= [00002197][001037fb][00000000] 55         push ebp [00002198][001037fb][00000000] 8bec       mov ebp,esp [0000219a][001037f7][00002177] 6877210000 push 00002177 ; push DDD [0000219f][001037f3][000021a4] e863f3ffff call 00001507 ; call HHH1
    New slave_stack at:10389f

    Begin Local Halt Decider Simulation   Execution Trace Stored at:1138a7 [00002177][00113897][0011389b] 55         push ebp [00002178][00113897][0011389b] 8bec       mov ebp,esp [0000217a][00113893][00002177] 6877210000 push 00002177 ; push DDD [0000217f][0011388f][00002184] e853f4ffff call 000015d7 ; call HHH
    New slave_stack at:14e2c7

    Begin Local Halt Decider Simulation   Execution Trace Stored at:15e2cf [00002177][0015e2bf][0015e2c3] 55         push ebp [00002178][0015e2bf][0015e2c3] 8bec       mov ebp,esp [0000217a][0015e2bb][00002177] 6877210000 push 00002177 ; push DDD [0000217f][0015e2b7][00002184] e853f4ffff call 000015d7 ; call HHH
    New slave_stack at:198cef
    [00002177][001a8ce7][001a8ceb] 55         push ebp [00002178][001a8ce7][001a8ceb] 8bec       mov ebp,esp [0000217a][001a8ce3][00002177] 6877210000 push 00002177 ; push DDD [0000217f][001a8cdf][00002184] e853f4ffff call 000015d7 ; call HHH
    Local Halt Decider: Infinite Recursion Detected Simulation Stopped

    There is no infinite recursion.
    HEH is simply unable to decide about finite recursions.

    void Finite_Recursion (nit N) {
    if (N > 0) Finite_Recursion (N - 1);
    }

    It decides after N recursions that there is an infinite recursion, which
    is incorrect.


    [00002184][00113897][0011389b] 83c404     add esp,+04 [00002187][0011389b][000015bc] 5d         pop ebp [00002188][0011389f][0003a980] c3         ret [000021a4][001037fb][00000000] 83c404     add esp,+04 [000021a7][001037fb][00000000] 33c0       xor eax,eax [000021a9][001037ff][00000018] 5d         pop ebp [000021aa][00103803][00000000] c3         ret
    Number of Instructions Executed(352831) == 5266 Pages


    DID is a misleading and unneeded complication. It is easy to eliminate DID:

    int main() {
    return HHH(main);
    }

    This has the same problem. This proves that the problem is not in DDD,
    but in HHH, which halts when it aborts the simulation, but it decides
    that the simulation of itself does not halt.
    It shows that HHH cannot possibly simulate itself correctly.

    Olcott's HHH is programmed to abort the simulation after N cycles of
    recursive simulations. Therefore, it is incorrect to abort the
    simulation of HHH when the simulated HHH has performed only N-1 cycles,
    because that changes the behaviour of HHH.
    Since the simulated HHH always runs one cycle behind the simulating HHH,
    it is clear that HHH can never simulate enough cycles for a correct
    simulation, as is required by the x86 language.
    Therefore, the simulation is incorrect according to the criteria olcott stipulated.
    The conclusion is simple:
    HHH cannot possibly simulate itself correctly.

    No matter how much olcott wants it to be correct, or how many times
    olcott repeats that it is correct, it does not change the fact that such
    a simulation is incorrect, because it is unable to reach the end.
    Olcott's own claim that the simulated HHH does not reach its end
    confirms it. The trace he has shown also proves that HHH cannot reach
    the end of its own simulation. So, his own claims prove that it is true
    that HHH cannot possibly simulate itself up to the end, which makes the simulation incorrect.

    Sipser would agree that this incorrect simulation cannot be used to
    detect a non-halting behaviour.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mike Terry@21:1/5 to Fred. Zwarts on Thu Jul 25 17:06:48 2024
    On 25/07/2024 15:27, Fred. Zwarts wrote:
    Op 25.jul.2024 om 15:56 schreef olcott:
    On 7/24/2024 10:29 PM, Mike Terry wrote:
    On 23/07/2024 14:31, olcott wrote:
    On 7/23/2024 1:32 AM, 0 wrote:
    On 2024-07-22 13:46:21 +0000, olcott said:

    On 7/22/2024 2:57 AM, Mikko wrote:
    On 2024-07-21 13:34:40 +0000, olcott said:

    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:

    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    When we use your incorrect reasoning we would conclude >>>>>>>>>>>> that Infinite_Loop() is not an infinite loop because it >>>>>>>>>>>> only repeats until aborted and is aborted.

    You and your HHH can reason or at least conclude correctly about >>>>>>>>>>> Infinite_Loop but not about DDD. Possibly because it prefers to >>>>>>>>>>> say "no", which is correct about Infinte_loop but not about DDD. >>>>>>>>>>>

    *Because this is true I don't understand how you are not simply lying*
    int main
    {
    DDD();
    }

    Calls HHH(DDD) that must abort the emulation of its input
    or {HHH, emulated DDD and executed DDD} never stop running. >>>>>>>>>
    You are the lying one.

    If HHH(DDD) abrots its simulation and returns true it is correct as a >>>>>>>>> halt decider for DDD really halts.


    (b) We know that a decider is not allowed to report on the behavior >>>>>>>> computation that itself is contained within.

    No, we don't. There is no such prohibition.


    Turing machines never take actual Turing machines as inputs.
    They only take finite strings as inputs and an actual executing
    Turing machine is not itself a finite string.

    The definition of a Turing machine does not say that a Turing machine >>>>> is not a finite string. It is an abstract mathematical object without >>>>> a specification of its exact nature. It could be a set or a finite
    string. Its exact nature is not relevant to the theory of computation, >>>>> which only cares about certain properties of Turing machines.

    Therefore It is not allowed to report on its own behavior.

    Anyway, that does not follow. The theory of Turing machines does not >>>>> prohibit anything.

    Another different TM can take the TM description of this
    machine and thus accurately report on its actual behavior.

    If a Turing machine can take a description of a TM as its input
    or as a part of its input it can also take its own description.
    Every Turing machine can be given its own description as input
    but a Turing machine may interprete it as something else.

    In this case we have two x86utm machines that are identical
    except that DDD calls HHH and DDD does not call HHH1.

    It is empirically proven that this changes their behavior
    and the behavior of DDD.


    You say a lot about things that are "empirically proven" and without exception they are never
    "proven" at all.


    It is empirically proven according to the semantics of the
    x86 machine code of DDD that DDD correctly emulated by HHH
    has different behavior than DDD correctly emulated by HHH1.

    No, you have proven that the *simulation* is different, not that the behaviour of the simulated
    function is different.
    The simulations differ, because one is correct and the other one is incorrect.
    The one that skips x86 instructions (by aborting) does not follow the semantics of the x86 language.
    Its simulation is incomplete and therefore is wrong.

    But the point is that PO alleges HHH and HHH1 are identical copies. If that were the case, why
    would one abort while the other does not?

    The answer is obviously that they are NOT proper copies, just like PO's earlier H/H1. Or PO has
    cheated with misuse of global variables or similar. (PO has previously insisted these functions are
    "pure", but that is probably his own wishful thinking rather than fact... so who knows?)

    I would like PO to come clean and explain why HHH1 behaves differently to HHH, in terms of the
    actual code. Instead he just says stuff like "HHH1 does not /need/ to abort because [blah blah]",
    as though he believes program behaviour is determined by their "needs" rather than by their coding.

    This is a perfectly "concrete" problem - two bits of code behave differently; why? Even PO should
    be able to properly understand (and investigate by himself) the answer to this question. Instead he
    falls back on nonsense "magical" explanations based on the programs "understanding their needs" or
    "seeing things" they obviously /don't/ "see" [either literally or figuratively], and somehow
    changing their behaviour as a result.

    Mike.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mike Terry@21:1/5 to olcott on Thu Jul 25 22:03:53 2024
    On 25/07/2024 14:56, olcott wrote:
    On 7/24/2024 10:29 PM, Mike Terry wrote:
    On 23/07/2024 14:31, olcott wrote:
    On 7/23/2024 1:32 AM, 0 wrote:
    On 2024-07-22 13:46:21 +0000, olcott said:

    On 7/22/2024 2:57 AM, Mikko wrote:
    On 2024-07-21 13:34:40 +0000, olcott said:

    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:

    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    When we use your incorrect reasoning we would conclude
    that Infinite_Loop() is not an infinite loop because it
    only repeats until aborted and is aborted.

    You and your HHH can reason or at least conclude correctly about >>>>>>>>>> Infinite_Loop but not about DDD. Possibly because it prefers to >>>>>>>>>> say "no", which is correct about Infinte_loop but not about DDD. >>>>>>>>>>

    *Because this is true I don't understand how you are not simply lying*
    int main
    {
    DDD();
    }

    Calls HHH(DDD) that must abort the emulation of its input
    or {HHH, emulated DDD and executed DDD} never stop running.

    You are the lying one.

    If HHH(DDD) abrots its simulation and returns true it is correct as a >>>>>>>> halt decider for DDD really halts.


    (b) We know that a decider is not allowed to report on the behavior >>>>>>> computation that itself is contained within.

    No, we don't. There is no such prohibition.


    Turing machines never take actual Turing machines as inputs.
    They only take finite strings as inputs and an actual executing
    Turing machine is not itself a finite string.

    The definition of a Turing machine does not say that a Turing machine
    is not a finite string. It is an abstract mathematical object without
    a specification of its exact nature. It could be a set or a finite
    string. Its exact nature is not relevant to the theory of computation, >>>> which only cares about certain properties of Turing machines.

    Therefore It is not allowed to report on its own behavior.

    Anyway, that does not follow. The theory of Turing machines does not
    prohibit anything.

    Another different TM can take the TM description of this
    machine and thus accurately report on its actual behavior.

    If a Turing machine can take a description of a TM as its input
    or as a part of its input it can also take its own description.
    Every Turing machine can be given its own description as input
    but a Turing machine may interprete it as something else.

    In this case we have two x86utm machines that are identical
    except that DDD calls HHH and DDD does not call HHH1.

    It is empirically proven that this changes their behavior
    and the behavior of DDD.


    You say a lot about things that are "empirically proven" and without exception they are never
    "proven" at all.


    It is empirically proven according to the semantics of the
    x86 machine code of DDD that DDD correctly emulated by HHH
    has different behavior than DDD correctly emulated by HHH1.

    Perhaps your actual code does behave differently!

    The questions are:
    a) are HHH and HHH1 "identical copies", in the TM machine sense of incorporating
    the algorithm of one TM inside another TM? (As Linz incorporates H
    inside H^, meaning that the behaviours of H and embedded_H MUST be identical for any
    input.)
    [You claim HHH and HHH1 /are/ proper copies, and yet give different results for
    input (D), which is impossible.]
    b) If the two behaviours HHH/HHH1 are indeed different, WHAT precisely is the coding
    difference that accounts for that different behaviour? (Like, with your H/H1 the
    difference was that H used H's address as part of its algorithm, while H1 used H1's
    address.)


    _DDD()
    [00002177] 55 push ebp
    [00002178] 8bec mov ebp,esp
    [0000217a] 6877210000 push 00002177
    [0000217f] e853f4ffff call 000015d7
    [00002184] 83c404 add esp,+04
    [00002187] 5d pop ebp
    [00002188] c3 ret
    Size in bytes:(0018) [00002188]

    _main()
    [00002197] 55 push ebp
    [00002198] 8bec mov ebp,esp
    [0000219a] 6877210000 push 00002177
    [0000219f] e863f3ffff call 00001507
    [000021a4] 83c404 add esp,+04
    [000021a7] 33c0 xor eax,eax
    [000021a9] 5d pop ebp
    [000021aa] c3 ret
    Size in bytes:(0020) [000021aa]

    machine stack stack machine assembly
    address address data code language
    ======== ======== ======== ========= ============= [00002197][001037fb][00000000] 55 push ebp [00002198][001037fb][00000000] 8bec mov ebp,esp [0000219a][001037f7][00002177] 6877210000 push 00002177 ; push DDD [0000219f][001037f3][000021a4] e863f3ffff call 00001507 ; call HHH1
    New slave_stack at:10389f

    Begin Local Halt Decider Simulation Execution Trace Stored at:1138a7 [00002177][00113897][0011389b] 55 push ebp [00002178][00113897][0011389b] 8bec mov ebp,esp [0000217a][00113893][00002177] 6877210000 push 00002177 ; push DDD [0000217f][0011388f][00002184] e853f4ffff call 000015d7 ; call HHH
    New slave_stack at:14e2c7

    Begin Local Halt Decider Simulation Execution Trace Stored at:15e2cf [00002177][0015e2bf][0015e2c3] 55 push ebp [00002178][0015e2bf][0015e2c3] 8bec mov ebp,esp [0000217a][0015e2bb][00002177] 6877210000 push 00002177 ; push DDD [0000217f][0015e2b7][00002184] e853f4ffff call 000015d7 ; call HHH
    New slave_stack at:198cef
    [00002177][001a8ce7][001a8ceb] 55 push ebp [00002178][001a8ce7][001a8ceb] 8bec mov ebp,esp [0000217a][001a8ce3][00002177] 6877210000 push 00002177 ; push DDD [0000217f][001a8cdf][00002184] e853f4ffff call 000015d7 ; call HHH
    Local Halt Decider: Infinite Recursion Detected Simulation Stopped

    [00002184][00113897][0011389b] 83c404 add esp,+04 [00002187][0011389b][000015bc] 5d pop ebp [00002188][0011389f][0003a980] c3 ret
    [000021a4][001037fb][00000000] 83c404 add esp,+04 [000021a7][001037fb][00000000] 33c0 xor eax,eax [000021a9][001037ff][00000018] 5d pop ebp [000021aa][00103803][00000000] c3 ret
    Number of Instructions Executed(352831) == 5266 Pages


    that seems to be a (partial) trace of HHH1(D). It's not clear exactly what's happening - for
    example, who produces the message "Local Halt Decider: Infinite Recursion Detected Simulation
    Stopped"? It might be outer HHH1 or one of the inner HHH's. And what result did HHH1 report?

    And more to the point what did HHH(D) do, and what is the difference?

    AND WHAT CODING within HHH/HHH1 ACCOUNTS FOR THAT DIFFERENCE?

    You previously claimed that H and H1 behaviours were different as evidence that "copies of
    routines" don't necessarily produce the same behaviour as the original routine, due to magical
    pathelogical relationships. But if the copies are done properly of course they will produce the
    same behaviour, because the x86 language is deterministic. I'm assuming you're not just cheating
    and using the mutable global data trick! or similar...


    If you care study the code that I just provided
    (and don't just ignore this and assume that I must be wrong)
    you can see that when DDD is correctly emulated by HHH that
    DDD does correctly have different behavior than DDD correctly
    emulated by HHH1.

    All I see above is a partial trace of HHH1(DDD). No behaviour is traced for HHH1, and there is no
    comparison with HHH(DDD).

    Suggestion: make a post starting afresh with both traces, and a statement of how the behaviours
    differ, and ideally with your explanation of how the coding of HHH1/HHH accounts for that
    difference. [I suspect you don't actually know the answer to the last question, but you ought to be
    able to work it out.]


    You could have seen this three years ago yet everyone simply
    assumes that I must be wrong thus makes sure to ignore the
    verified facts that N steps of DDD are correctly emulated by
    HHH and M steps of DDD are correctly emulated by HHH1.

    They guess that these steps are wrong entirely on the basis
    of not bothering to check.

    So what had you messed up with H/H1? H and H1 internally both used their /own/ addresses for
    comparisons with simulated code addresses. So

    They do not do this.

    H/H1 did that.

    When HHH emulates itself emulating DDD is has no
    idea that it is emulating itself. Likewise for when HHH1 emulates DDD
    calling HHH(DDD) it does not know that it is not emulating itself.

    Well that's great, you've not made the exact same mistake twice! :)

    So by what you're saying, on the face of it we'd expect HHH/HHH1 behaviour to be the same - unless
    perhaps you've made some other mistake, of course...


    they are not copies of each other - if they were, H1 would have used H's address (effectively this
    address is like a const global variable, and

    That is the same as saying the identical twins have the exact same body
    not two different bodies in two different locations.

    HHH1 and HHH are essentially identical and the only reason why
    DDD correctly emulated by HHH has different behavior than DDD
    correctly emulated by HHH1 is that DDD does call HHH in recursive
    emulation and DDD does not call HHH1 in recursive emulation.

    No. In both cases we are discussing the (partial) simulation of DDD(). Since HHH and HHH1 are
    allegedly correct copies of each other, the simulation each performs should be identical, but for
    some reason it is not. Your supposed explanation simply does not address any possible cause of
    this. All you are saying is

    1. the behaviour /is/ different, and
    2. one difference in the setup is that DDD calls HHH, not HHH1,
    3. therefore (2) causes the behaviour to be different.

    (But (3) is not logic, and (2) would not explain why or how the behaviour could be different.)

    [..snip silly OT stuff..]

    When DDD calls HHH in recursive emulation
    (as I have proven that it does**) and DDD does not call HHH1
    in recursive simulation (as I have proven that it does not**)
    then DDD will have different behavior.

    No. In both cases we are talking of partial simulations of DDD(), and there is only one "DDD()
    behaviour" which is the FULL trace of computation DDD().

    Different partial simulations may simulate more or less steps of DDD() according to their abort
    logic, but every single such simulation is simply calculating the steps [state transitions] of the
    one DDD() behaviour. And in the HHH/HHH1 scenario even that difference cannot occur, because
    HHH/HHH1 have /the same/ abort criteria, so must necessarily simulate THE SAME NUMBER OF STEPS.


    **According to the semantics of the x86 machine code
    provided above.

    out to be just a case of naff programming on your part - nothing "magical" about pathelogical
    relationships between H/D which aren't present for H1/D; just naff coding. [H1 using a different
    algorithm meant it never matched H's abort decision, so effectively reverted to UTM behaviour that
    simulated (D,D) to completion, including the final return.]


    Both HHH and HHH1 use the same algorithm. The input to HHH(DDD)
    must be aborted to prevent the non-halting behavior of HHH, and DDD.

    The input to HHH1(DDD) need not be aborted because the input to
    HHH(DDD) already has been aborted.

    The DDD of HHH(DDD) is in the different process state of needing
    to be aborted than the DDD of HHH1(DDD) of *not* needing to be
    aborted.

    DDD needing to be aborted before any DDD has been aborted is
    like being hungry before one has eaten.

    DDD not needing to be aborted after some DDD has been aborted
    is like *not* being hungry after one has eaten.

    All this needing/not needing is rubbish - HHH and HHH1 do what they do because of how they are
    coded, not due to their "needs".

    You claim they behave differently, so WHY (at the coding level) do they behave differently. The
    same code given the same input always behave the same, so you simply fail to understand something
    very basic here.

    [..snip..]

    It's your code so you should be the one to explain anomalies like this at the coding level. Why
    /exactly/ does HHH1 produce a different result to HHH?

    Why does finite recursion halt and infinite recursion not halt?

    I'm sure you know the answer to this. More to the point, both HHH and HHH1 are simulating the SAME
    computation DDD(), and so calculate the SAME computation steps. I.e. they are both simulating
    finite recursion, so your question is irrelevant.


    HHH does see recursive emulation that will never stop unless aborted.
    HHH1 does not see this.

    HHH and HHH1 see exactly the same computation steps, and they have [according to you] the same logic
    evaluating those steps, and so should make the same halting decision.

    Neither of them "sees" that "emulation will never stop unless aborted"! They don't have eyes, and
    can't see the future, and can't evaluate the alternative realities implied by your "unless".

    In fact, what HHH and HHH1 both do is scan the same trace [of computation DDD()] looking for the
    same pattern of previous states, and if the pattern is found, they abort. So again the question is
    WHY DOES ONE OF THEM DECIDE TO ABORT AND NOT THE OTHER?

    Don't answer this by explaining their "needs"; answer by explaining what code difference causes
    this. [Except you've claimed there /is/ no code difference, so you've got a challenge here!]

    Mike.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mike Terry@21:1/5 to olcott on Fri Jul 26 04:35:09 2024
    On 26/07/2024 01:53, olcott wrote:
    On 7/25/2024 4:03 PM, Mike Terry wrote:
    On 25/07/2024 14:56, olcott wrote:
    On 7/24/2024 10:29 PM, Mike Terry wrote:
    On 23/07/2024 14:31, olcott wrote:
    On 7/23/2024 1:32 AM, 0 wrote:
    On 2024-07-22 13:46:21 +0000, olcott said:

    On 7/22/2024 2:57 AM, Mikko wrote:
    On 2024-07-21 13:34:40 +0000, olcott said:

    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:

    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    When we use your incorrect reasoning we would conclude >>>>>>>>>>>>> that Infinite_Loop() is not an infinite loop because it >>>>>>>>>>>>> only repeats until aborted and is aborted.

    You and your HHH can reason or at least conclude correctly about >>>>>>>>>>>> Infinite_Loop but not about DDD. Possibly because it prefers to >>>>>>>>>>>> say "no", which is correct about Infinte_loop but not about DDD. >>>>>>>>>>>>

    *Because this is true I don't understand how you are not simply lying*
    int main
    {
    DDD();
    }

    Calls HHH(DDD) that must abort the emulation of its input >>>>>>>>>>> or {HHH, emulated DDD and executed DDD} never stop running. >>>>>>>>>>
    You are the lying one.

    If HHH(DDD) abrots its simulation and returns true it is correct as a
    halt decider for DDD really halts.


    (b) We know that a decider is not allowed to report on the behavior >>>>>>>>> computation that itself is contained within.

    No, we don't. There is no such prohibition.


    Turing machines never take actual Turing machines as inputs.
    They only take finite strings as inputs and an actual executing
    Turing machine is not itself a finite string.

    The definition of a Turing machine does not say that a Turing machine >>>>>> is not a finite string. It is an abstract mathematical object without >>>>>> a specification of its exact nature. It could be a set or a finite >>>>>> string. Its exact nature is not relevant to the theory of computation, >>>>>> which only cares about certain properties of Turing machines.

    Therefore It is not allowed to report on its own behavior.

    Anyway, that does not follow. The theory of Turing machines does not >>>>>> prohibit anything.

    Another different TM can take the TM description of this
    machine and thus accurately report on its actual behavior.

    If a Turing machine can take a description of a TM as its input
    or as a part of its input it can also take its own description.
    Every Turing machine can be given its own description as input
    but a Turing machine may interprete it as something else.

    In this case we have two x86utm machines that are identical
    except that DDD calls HHH and DDD does not call HHH1.

    It is empirically proven that this changes their behavior
    and the behavior of DDD.


    You say a lot about things that are "empirically proven" and without exception they are never
    "proven" at all.


    It is empirically proven according to the semantics of the
    x86 machine code of DDD that DDD correctly emulated by HHH
    has different behavior than DDD correctly emulated by HHH1.

    Perhaps your actual code does behave differently!



    OK great, we are making headway.

    The questions are:
    a) are HHH and HHH1 "identical copies", in the TM machine sense of incorporating
    the algorithm of one TM inside another TM? (As Linz incorporates H
    inside H^, meaning that the behaviours of H and embedded_H MUST be identical for any
    input.)
    [You claim HHH and HHH1 /are/ proper copies, and yet give different results for
    input (D), which is impossible.]

    They are identical in the that have identical x86 machine
    code except for the x86 quirk that function calls are to
    a relative rather than absolute address. So when HHH calls
    the same function that HHH1 calls the machine code is not
    the same. The only other case where the machine code of
    HHH1 and HHH is not identical is the way for slave instances
    of HHH to pass its execution trace up to the master.

    The relative addressing is to be expected as a difference, and is fine provided the actual target is
    the same. [Which it seems to be...]

    The whole thing with the slave instances might well be where the bug lies! That would be slightly
    funny, as I pointed out that problem on some completely unrelated post, and this could be a
    follow-on issue where it has caused observable misbehavior in the code. (Needs a bit more
    investigation...)


    Although it seems that I have been correct all along about the
    idea that slave instances can pass their execution trace up to
    the master without breaking computability this is not the way
    it has been actually encoded.

    Message-ID: <rLmcnQQ3-N_tvH_4nZ2dnZfqnPGdnZ2d@brightview.co.uk>
    On 3/1/2024 12:41 PM, Mike Terry wrote:

    Obviously a simulator has access to the internal state
    (tape contents etc.) of the simulated machine. No problem there.


    b) If the two behaviours HHH/HHH1 are indeed different, WHAT precisely is the coding
    difference that accounts for that different behaviour? (Like, with your H/H1 the
    difference was that H used H's address as part of its algorithm, while H1 used H1's
    address.)


    *I have said this about 500 times in the last three years*
    DDD calls HHH(DDD) in recursive simulation and does
    not call HHH1(DDD) in recursive simulation.

    You may have said it 500 times, but it doesn't answer my question!

    Look, here is a rough sketch of the two traces side by side just done by hand:

    [VIEW WITH FIXED FONT!!]

    HHH1 (DDD) HHH (DDD)
    -----------------------------------------------------------------
    1 main () main ()
    2 HHH1 (DDD) HHH (DDD)
    4 Simulate (DDD) Simulate (DDD)
    5 | DDD() | DDD()
    6 | HHH (DDD) | HHH (DDD)
    7 | Simulate (DDD) | Simulate (DDD)
    8 | | DDD() | DDD()
    9 | | HHH (DDD) | HHH (DDD)
    10 | | Simulate (DDD) Abort
    11 | | DDD() ret 0
    12 | | HHH (DDD) ret 0
    13 | Abort
    14 | ret 0
    15 | ret
    16 ret 1
    17 ret 0

    So HHH/HHH1 behaviour is different, but shouldn't be if HHH1 is a correct copy of HHH.

    Your explanation makes NO SENSE AT ALL. It's just one of those things you repeat 500 times, and
    nobody bothers to call you out.

    You say DDD calls HHH(DDD) in recursive simulation and does not call HHH1 in recursive simulation.

    Well that's correct [lines 6,9,12] - but it's irrelevant, because IT'S THE SAME ON BOTH SIDES ABOVE.
    Both HHH/HHH1 simulate DDD [line 4] and BOTH of those simulations call HHH in recursive
    simulation, so BOTH SIDES MUST HAVE THE SAME BEHAVIOUR.

    If HHH/HHH1 were just arbitrary emulators, we'd be thinking one of them might abort earlier in the
    computation than the other, so left/right behaviours above would just match up until the first side
    aborts. That is exactly what we see above in my trace comparison.

    BUT HHH/HHH1 have identical code and you've said that HHH/HHH1 have no "coding knowledge" of whether
    they are simulating themselves or something else, e.g. in their abort logic. So the left/right
    behaviour should match /all the way down/ since if one side aborts the other side will do so at the
    same time. [IF your code copy has been done properly.]

    OK, so now for the obvious question! :)

    In the diagram above HHH aborts at line 10. But HHH1 which has seen exactly the same trace entries
    [including the two calls to H at lines 6,9] and has the same abort logic [without knowledge of
    whether it is simulating itself or something else etc.] somehow *decides NOT to abort*. *WHAT CODE
    IN HHH/HHH1 IS RESPONSIBLE FOR THAT DIFFERENCE?*



    _DDD()
    [00002177] 55 push ebp
    [00002178] 8bec mov ebp,esp
    [0000217a] 6877210000 push 00002177
    [0000217f] e853f4ffff call 000015d7
    [00002184] 83c404 add esp,+04
    [00002187] 5d pop ebp
    [00002188] c3 ret
    Size in bytes:(0018) [00002188]

    _main()
    [00002197] 55 push ebp
    [00002198] 8bec mov ebp,esp
    [0000219a] 6877210000 push 00002177
    [0000219f] e863f3ffff call 00001507
    [000021a4] 83c404 add esp,+04
    [000021a7] 33c0 xor eax,eax
    [000021a9] 5d pop ebp
    [000021aa] c3 ret
    Size in bytes:(0020) [000021aa]

    machine stack stack machine assembly
    address address data code language
    ======== ======== ======== ========= =============
    [00002197][001037fb][00000000] 55 push ebp
    [00002198][001037fb][00000000] 8bec mov ebp,esp
    [0000219a][001037f7][00002177] 6877210000 push 00002177 ; push DDD
    [0000219f][001037f3][000021a4] e863f3ffff call 00001507 ; call HHH1
    New slave_stack at:10389f

    Begin Local Halt Decider Simulation Execution Trace Stored at:1138a7
    [00002177][00113897][0011389b] 55 push ebp
    [00002178][00113897][0011389b] 8bec mov ebp,esp
    [0000217a][00113893][00002177] 6877210000 push 00002177 ; push DDD
    [0000217f][0011388f][00002184] e853f4ffff call 000015d7 ; call HHH
    New slave_stack at:14e2c7

    Begin Local Halt Decider Simulation Execution Trace Stored at:15e2cf
    [00002177][0015e2bf][0015e2c3] 55 push ebp
    [00002178][0015e2bf][0015e2c3] 8bec mov ebp,esp
    [0000217a][0015e2bb][00002177] 6877210000 push 00002177 ; push DDD
    [0000217f][0015e2b7][00002184] e853f4ffff call 000015d7 ; call HHH
    New slave_stack at:198cef
    [00002177][001a8ce7][001a8ceb] 55 push ebp
    [00002178][001a8ce7][001a8ceb] 8bec mov ebp,esp
    [0000217a][001a8ce3][00002177] 6877210000 push 00002177 ; push DDD
    [0000217f][001a8cdf][00002184] e853f4ffff call 000015d7 ; call HHH
    Local Halt Decider: Infinite Recursion Detected Simulation Stopped

    [00002184][00113897][0011389b] 83c404 add esp,+04
    [00002187][0011389b][000015bc] 5d pop ebp
    [00002188][0011389f][0003a980] c3 ret
    [000021a4][001037fb][00000000] 83c404 add esp,+04
    [000021a7][001037fb][00000000] 33c0 xor eax,eax
    [000021a9][001037ff][00000018] 5d pop ebp
    [000021aa][00103803][00000000] c3 ret
    Number of Instructions Executed(352831) == 5266 Pages


    that seems to be a (partial) trace of HHH1(D). It's not clear exactly what's happening - for
    example, who produces the message "Local Halt Decider: Infinite Recursion Detected Simulation
    Stopped"? It might be outer HHH1 or one of the inner HHH's. And what result did HHH1 report?


    It is supposed to be the outer most (thus directly executed) HHH.

    HHH is not directly executed in this trace - HHH1 is. But the message is not from HHH1, it's from
    the 1st level of emulation HHH is being emulated. (line 7 in my trace above) That is not easy to
    deduce from your trace log - you should include an "emulation level" column to make this clear, like
    I suggested a couple of years ago!


    And more to the point what did HHH(D) do, and what is the difference?


    *I have said this about 500 times in the last three years*
    DDD calls HHH(DDD) in recursive simulation and does
    not call HHH1(DDD) in recursive simulation.

    When a function unconditionally calls itself this is infinite
    recursion.

    When a function unconditionally calls its own simulator this is
    infinite recursive simulation. HHH sees this as infinite recursion
    because HHH does not know that DDD is calling itself.

    First off, it need not be /infinite/ recursive simulation, because you have neglected the
    conditional logic in H which determines whether or not to abort a simulation. It makes no
    difference to termination analysis if the conditionals are in DDD or HHH - the latter is a direct
    extension of the former. In your terminology we might say it is "part of the finite string
    representing the DDD machine".

    Secondly, if HHH sees what it thinks is "infinite recursion", then the same pattern occured when
    HHH1 was simulating, and so HHH1 should have seen the pattern and aborted at the same point. *Why
    didn't it do that?*

    LOL, given your earlier remark above about your faulty implentation of "slave" emulators passing
    stuff to the "master" emulator, and together with my [super-clear!] trace comparison, I've worked
    out what's happening!

    I'll let you think it through first though.

    Mike.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Fri Jul 26 10:00:45 2024
    Op 25.jul.2024 om 20:45 schreef olcott:
    On 7/25/2024 11:06 AM, Mike Terry wrote:
    On 25/07/2024 15:27, Fred. Zwarts wrote:
    Op 25.jul.2024 om 15:56 schreef olcott:
    On 7/24/2024 10:29 PM, Mike Terry wrote:
    On 23/07/2024 14:31, olcott wrote:
    On 7/23/2024 1:32 AM, 0 wrote:
    On 2024-07-22 13:46:21 +0000, olcott said:

    On 7/22/2024 2:57 AM, Mikko wrote:
    On 2024-07-21 13:34:40 +0000, olcott said:

    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:

    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    When we use your incorrect reasoning we would conclude >>>>>>>>>>>>>> that Infinite_Loop() is not an infinite loop because it >>>>>>>>>>>>>> only repeats until aborted and is aborted.

    You and your HHH can reason or at least conclude correctly >>>>>>>>>>>>> about
    Infinite_Loop but not about DDD. Possibly because it >>>>>>>>>>>>> prefers to
    say "no", which is correct about Infinte_loop but not about >>>>>>>>>>>>> DDD.


    *Because this is true I don't understand how you are not >>>>>>>>>>>> simply lying*
    int main
    {
       DDD();
    }

    Calls HHH(DDD) that must abort the emulation of its input >>>>>>>>>>>> or {HHH, emulated DDD and executed DDD} never stop running. >>>>>>>>>>>
    You are the lying one.

    If HHH(DDD) abrots its simulation and returns true it is >>>>>>>>>>> correct as a
    halt decider for DDD really halts.


    (b) We know that a decider is not allowed to report on the >>>>>>>>>> behavior
    computation that itself is contained within.

    No, we don't. There is no such prohibition.


    Turing machines never take actual Turing machines as inputs.
    They only take finite strings as inputs and an actual executing >>>>>>>> Turing machine is not itself a finite string.

    The definition of a Turing machine does not say that a Turing
    machine
    is not a finite string. It is an abstract mathematical object
    without
    a specification of its exact nature. It could be a set or a finite >>>>>>> string. Its exact nature is not relevant to the theory of
    computation,
    which only cares about certain properties of Turing machines.

    Therefore It is not allowed to report on its own behavior.

    Anyway, that does not follow. The theory of Turing machines does not >>>>>>> prohibit anything.

    Another different TM can take the TM description of this
    machine and thus accurately report on its actual behavior.

    If a Turing machine can take a description of a TM as its input
    or as a part of its input it can also take its own description.
    Every Turing machine can be given its own description as input
    but a Turing machine may interprete it as something else.

    In this case we have two x86utm machines that are identical
    except that DDD calls HHH and DDD does not call HHH1.

    It is empirically proven that this changes their behavior
    and the behavior of DDD.


    You say a lot about things that are "empirically proven" and
    without exception they are never "proven" at all.


    It is empirically proven according to the semantics of the
    x86 machine code of DDD that DDD correctly emulated by HHH
    has different behavior than DDD correctly emulated by HHH1.

    No, you have proven that the *simulation* is different, not that the
    behaviour of the simulated function is different.
    The simulations differ, because one is correct and the other one is
    incorrect.
    The one that skips x86 instructions (by aborting) does not follow the
    semantics of the x86 language. Its simulation is incomplete and
    therefore is wrong.

    But the point is that PO alleges HHH and HHH1 are identical copies.
    If that were the case, why would one abort while the other does not?


    I explain that most completely by providing the full execution trace.
    I have done that many times over the last three years. You are so
    sure that I must be incorrect that you don't bother to examine this
    trace that has consistently proven that I am correct for three years.

    The answer is obviously that they are NOT proper copies, just like
    PO's earlier H/H1.  Or PO has cheated with misuse of global variables
    or similar.  (PO has previously insisted these functions are "pure",
    but that is probably his own wishful thinking rather than fact... so
    who knows?)


    If you understand the semantics of the x86 language then you
    can see that N instructions of DDD are correctly emulated by
    HHH.

    You would also see that HHH skips M instructions of the X86 code, when
    it aborts. That makes the simulation incomplete and incorrect. It has
    been pointed out many times that the semantics of the x86 language does
    not allow skipping instructions and then claim that it will still show
    the behaviour of the program.

    You can also see by the repeating state of DDD correctly
    emulated by HHH that HHH must abort it emulation of DDD or
    DDD and HHH would never terminate.

    And when it aborts, it aborts too soon, because one cycle later the
    simulated HHH would abort and halt, so the abort by the simulating HHH
    was premature.
    It is clear that HHH cannot possibly simulate itself correctly, because
    the simulated HHH runs one cycle behind the simulating HHH. The
    simulating HHH, when it aborts, always one cycle too soon.


    From understanding the semantics of the x86 language you can
    also see that after HHH(DDD) has aborted the emulation of its
    input that the correct emulation of a different process instance
    of DDD by HHH1 does terminate normally.

    Yes. HHH1 does a correct simulation of an incorrect simulation by HHH.

    DDD is a misleading and unneeded complication. It is easy to eliminate DDD:

    int main() {
    return HHH(main);
    }

    This has the same problem. This proves that the problem is not in DDD,
    but in HHH, which halts when it aborts the simulation, but it decides
    that the simulation of itself does not halt.
    It shows that HHH cannot possibly simulate itself correctly.



    I would like PO to come clean and explain why HHH1 behaves differently
    to HHH, in terms of the actual code.  Instead he just says stuff like
    "HHH1 does not /need/ to abort because [blah blah]", as though he
    believes program behaviour is determined by their "needs" rather than
    by their coding.

    This is a perfectly "concrete" problem - two bits of code behave
    differently; why?  Even PO should be able to properly understand (and
    investigate by himself) the answer to this question.  Instead he falls
    back on nonsense "magical" explanations based on the programs
    "understanding their needs" or "seeing things" they obviously /don't/
    "see" [either literally or figuratively], and somehow changing their
    behaviour as a result.

    Mike.


    typedef void (*ptr)();
    int HHH(ptr P);
    int HHH1(ptr P);

    void DDD()
    {
      HHH(DDD);
    }

    int main()
    {
      HHH1(DDD);
    }

    _DDD()
    [00002177] 55         push ebp
    [00002178] 8bec       mov ebp,esp
    [0000217a] 6877210000 push 00002177
    [0000217f] e853f4ffff call 000015d7
    [00002184] 83c404     add esp,+04
    [00002187] 5d         pop ebp
    [00002188] c3         ret
    Size in bytes:(0018) [00002188]

    _main()
    [00002197] 55         push ebp
    [00002198] 8bec       mov ebp,esp
    [0000219a] 6877210000 push 00002177
    [0000219f] e863f3ffff call 00001507
    [000021a4] 83c404     add esp,+04
    [000021a7] 33c0       xor eax,eax
    [000021a9] 5d         pop ebp
    [000021aa] c3         ret
    Size in bytes:(0020) [000021aa]

     machine   stack     stack     machine    assembly
     address   address   data      code       language
     ========  ========  ========  =========  ============= [00002197][001037fb][00000000] 55         push ebp [00002198][001037fb][00000000] 8bec       mov ebp,esp [0000219a][001037f7][00002177] 6877210000 push 00002177 ; push DDD [0000219f][001037f3][000021a4] e863f3ffff call 00001507 ; call HHH1
    New slave_stack at:10389f

    Begin Local Halt Decider Simulation   Execution Trace Stored at:1138a7 [00002177][00113897][0011389b] 55         push ebp [00002178][00113897][0011389b] 8bec       mov ebp,esp [0000217a][00113893][00002177] 6877210000 push 00002177 ; push DDD [0000217f][0011388f][00002184] e853f4ffff call 000015d7 ; call HHH
    New slave_stack at:14e2c7

    Begin Local Halt Decider Simulation   Execution Trace Stored at:15e2cf [00002177][0015e2bf][0015e2c3] 55         push ebp [00002178][0015e2bf][0015e2c3] 8bec       mov ebp,esp [0000217a][0015e2bb][00002177] 6877210000 push 00002177 ; push DDD [0000217f][0015e2b7][00002184] e853f4ffff call 000015d7 ; call HHH
    New slave_stack at:198cef
    [00002177][001a8ce7][001a8ceb] 55         push ebp [00002178][001a8ce7][001a8ceb] 8bec       mov ebp,esp [0000217a][001a8ce3][00002177] 6877210000 push 00002177 ; push DDD [0000217f][001a8cdf][00002184] e853f4ffff call 000015d7 ; call HHH
    Local Halt Decider: Infinite Recursion Detected Simulation Stopped

    This is the error in HHH. It is coded to print an erroneous remark about
    an infinite recursion when it has seen only two recursions and aborts
    and halts. One cycle later the simulated HHH would halt by its own, but
    the simulating HHH is programmed to not try another cycle.

    HHH is simply unable to decide about finite recursions.

    void Finite_Recursion (int N) {
    if (N > 0) Finite_Recursion (N - 1);
    }

    It does not see the difference between a finite recursion and an
    infinite recursion.


    [00002184][00113897][0011389b] 83c404     add esp,+04 [00002187][0011389b][000015bc] 5d         pop ebp [00002188][0011389f][0003a980] c3         ret [000021a4][001037fb][00000000] 83c404     add esp,+04 [000021a7][001037fb][00000000] 33c0       xor eax,eax [000021a9][001037ff][00000018] 5d         pop ebp [000021aa][00103803][00000000] c3         ret
    Number of Instructions Executed(352831) == 5266 Pages

    I just proved that DDD correctly emulated by HHH does
    have non-terminating behavior that HHH aborts and DDD
    correctly emulated by HHH1 does terminate.

    No, you have not even shown a correct simulation of HHH by itself. Since
    there is no correct simulation, the proof is missing. Only HHH1 does a
    correct simulation, which proves that a correct simulation HHH (and DDD)
    do terminate.


    If you "disagree" with this proof on the basis that
    (a) You do not know the x86 language well enough
    (b) Did not bother to carefully examine the steps

    Since there is no proof, this is incorrect. Your claim is based on a
    erroneous understanding of the x86 language, as if it allows the
    skipping of instructions to determine the behaviour of a program.


    then your "disagreement" would be a reckless disregard of the truth.

    2 : a reckless lack of attention to the truth that misleads or deceives another https://dictionary.findlaw.com/definition/reckless-disregard-of-the-truth.html


    I know that olcott will not understand the logic of what I say, but I
    find his psychology intriguing.
    He misses the mental intelligence to even consider the possibility that
    there is an error in his ideas. If it is proved to him that such an
    error is present, he does not bother (or is blocked) to think about it,
    because is unable to accept it. But he needs an excuse to ignore the
    proofs presented by several people. His only way to come away with it,
    is by saying that other people do not speak the truth, i.e. are lying.
    Maybe he really believes that, when he does not understand those proofs
    and keeps convinced that there is no error in his ideas.
    He does not understand that no matter how much olcott wants it to be
    correct, or how many times olcott repeats that it is correct, it does
    not change the fact that such a simulation is incorrect.
    Therefore he simply keeps repeating his claims without any evidence, or
    with evidence that has already been proved to be wrong many times.
    He keeps begging for support, even when almost everyone understands that
    there is no hope to prove something correct when it has been proven
    incorrect.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Fri Jul 26 08:50:36 2024
    Am Thu, 25 Jul 2024 23:25:59 -0500 schrieb olcott:
    On 7/25/2024 10:35 PM, Mike Terry wrote:
    On 26/07/2024 01:53, olcott wrote:
    On 7/25/2024 4:03 PM, Mike Terry wrote:
    On 25/07/2024 14:56, olcott wrote:
    On 7/24/2024 10:29 PM, Mike Terry wrote:
    On 23/07/2024 14:31, olcott wrote:
    On 7/23/2024 1:32 AM, 0 wrote:
    On 2024-07-22 13:46:21 +0000, olcott said:
    On 7/22/2024 2:57 AM, Mikko wrote:
    On 2024-07-21 13:34:40 +0000, olcott said:
    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:
    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    (b) We know that a decider is not allowed to report on the >>>>>>>>>>> behavior computation that itself is contained within.
    No, we don't. There is no such prohibition.

    Therefore It is not allowed to report on its own behavior.
    Anyway, that does not follow. The theory of Turing machines does >>>>>>>> not prohibit anything.

    In this case we have two x86utm machines that are identical except >>>>>>> that DDD calls HHH and DDD does not call HHH1.
    I don't see how the outside use of a function can influence it.

    It is empirically proven according to the semantics of the x86
    machine code of DDD that DDD correctly emulated by HHH has different >>>>> behavior than DDD correctly emulated by HHH1.
    Perhaps your actual code does behave differently!
    OK great, we are making headway.
    Thanks, Mike, for the detailed analysis.

    The questions are:
    a)  are HHH and HHH1 "identical copies", in the TM machine sense of
    incorporating
         the algorithm of one TM inside another TM?  (As Linz
         incorporates H inside H^, meaning that the behaviours of H
         and embedded_H MUST be identical for any input.)
         [You claim HHH and HHH1 /are/ proper copies, and yet give
    different results for input (D), which is impossible.]

    They are identical in the that have identical x86 machine code except
    for the x86 quirk that function calls are to a relative rather than
    absolute address. So when HHH calls the same function that HHH1 calls
    the machine code is not the same.  The only other case where the
    machine code of HHH1 and HHH is not identical is the way for slave
    instances of HHH to pass its execution trace up to the master.
    How is the trace passed?

    The relative addressing is to be expected as a difference, and is fine
    provided the actual target is the same. [Which it seems to be...]
    The whole thing with the slave instances might well be where the bug
    lies!  That would be slightly funny, as I pointed out that problem on
    some completely unrelated post, and this could be a follow-on issue
    where it has caused observable misbehavior in the code.  (Needs a bit
    more investigation...)

    There never is any actual bug with the simulation.
    I bet my nonexistent soul that there are bugs left in libx86. Apart
    from that, your use of the library may be buggy.

    Although it seems that I have been correct all along about the idea
    that slave instances can pass their execution trace up to the master
    without breaking computability this is not the way it has been
    actually encoded.
    How is it coded?

    b)  If the two behaviours HHH/HHH1 are indeed different, WHAT
    precisely is the coding
         difference that accounts for that different behaviour? 
         (Like, with your H/H1 the
         difference was that H used H's address as part of its
         algorithm, while H1 used H1's address.)
    DDD calls HHH(DDD) in recursive simulation and does not call HHH1(DDD)
    in recursive simulation.
    You may have said it 500 times, but it doesn't answer my question!
    The problem is that the code itself has already answered this question
    500 times in three years and people just ignore it.
    When DDD emulated by HHH calls HHH(DDD) this call cannot possibly
    return. When DDD emulated by HHH1 calls HHH(DDD) this call DOES return.
    But whyyy?

    Look, here is a rough sketch of the two traces side by side just done
    by hand:
    So HHH/HHH1 behaviour is different, but shouldn't be if HHH1 is a
    correct copy of HHH.
    And by your same reasoning 2 + 3 shouldn't = 5.
    No, 2+3 = 3+2. You have two copies of the same function that behave differently. How is that possible?
    Try to find one x86 instruction that is emulated incorrectly.
    Can you please point us to where they diverge?
    _DDD()
    [00002177] 55 push ebp
    [00002178] 8bec mov ebp,esp
    [0000217a] 6877210000 push 00002177 ; push DDD
    [0000217f] e853f4ffff call 000015d7 ; call HHH
    [00002184] 83c404 add esp,+04
    [00002187] 5d pop ebp
    [00002188] c3 ret
    Maybe you think that push 00002177 should jmp 00002188?

    Well that's correct [lines 6,9,12] - but it's irrelevant, because IT'S
    THE SAME ON BOTH SIDES ABOVE.  Both HHH/HHH1 simulate DDD [line 4] and
    BOTH of those simulations call HHH in recursive simulation, so BOTH
    SIDES MUST HAVE THE SAME BEHAVIOUR.
    In other words you are totally incompetent with the x86 language or
    disagree with this language.
    _DDD()
    [00002177] 55 push ebp
    [00002178] 8bec mov ebp,esp
    [0000217a] 6877210000 push 00002177 ; push DDD
    [0000217f] e853f4ffff call 000015d7 ; call HHH

    DDD emulated by HHH endlessly repeats as if it was infinite recursion
    such that DDD emulated by HHH cannot possibly reach past 0000217f no
    matter what HHH does.
    I thought HHH aborts?

    --
    Am Sat, 20 Jul 2024 12:35:31 +0000 schrieb WM in sci.math:
    It is not guaranteed that n+1 exists for every n.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Fri Jul 26 11:45:43 2024
    On 2024-07-24 13:33:55 +0000, olcott said:

    On 7/24/2024 3:57 AM, Mikko wrote:
    On 2024-07-23 13:31:35 +0000, olcott said:

    On 7/23/2024 1:32 AM, 0 wrote:
    On 2024-07-22 13:46:21 +0000, olcott said:

    On 7/22/2024 2:57 AM, Mikko wrote:
    On 2024-07-21 13:34:40 +0000, olcott said:

    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:

    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    When we use your incorrect reasoning we would conclude
    that Infinite_Loop() is not an infinite loop because it
    only repeats until aborted and is aborted.

    You and your HHH can reason or at least conclude correctly about >>>>>>>>>> Infinite_Loop but not about DDD. Possibly because it prefers to >>>>>>>>>> say "no", which is correct about Infinte_loop but not about DDD. >>>>>>>>>>

    *Because this is true I don't understand how you are not simply lying*
    int main
    {
       DDD();
    }

    Calls HHH(DDD) that must abort the emulation of its input
    or {HHH, emulated DDD and executed DDD} never stop running.

    You are the lying one.

    If HHH(DDD) abrots its simulation and returns true it is correct as a >>>>>>>> halt decider for DDD really halts.


    (b) We know that a decider is not allowed to report on the behavior >>>>>>> computation that itself is contained within.

    No, we don't. There is no such prohibition.


    Turing machines never take actual Turing machines as inputs.
    They only take finite strings as inputs and an actual executing
    Turing machine is not itself a finite string.

    The definition of a Turing machine does not say that a Turing machine
    is not a finite string. It is an abstract mathematical object without
    a specification of its exact nature. It could be a set or a finite
    string. Its exact nature is not relevant to the theory of computation, >>>> which only cares about certain properties of Turing machines.

    Therefore It is not allowed to report on its own behavior.

    Anyway, that does not follow. The theory of Turing machines does not
    prohibit anything.

    Another different TM can take the TM description of this
    machine and thus accurately report on its actual behavior.

    If a Turing machine can take a description of a TM as its input
    or as a part of its input it can also take its own description.
    Every Turing machine can be given its own description as input
    but a Turing machine may interprete it as something else.

    In this case we have two x86utm machines that are identical
    except that DDD calls HHH and DDD does not call HHH1.

    That DDD calls HHH and DDD does not call HHH1 is not a difference
    between two unnamed turing machines.


    The same thing happens at the Peter Linz Turing Machine level
    I will provide that more difficult example if and only if you
    prove that you understand this one.

    However, Peter Linz does not call taht same thing a difference.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Fri Jul 26 07:40:52 2024
    On 7/26/24 12:25 AM, olcott wrote:
    On 7/25/2024 10:35 PM, Mike Terry wrote:
    On 26/07/2024 01:53, olcott wrote:
    On 7/25/2024 4:03 PM, Mike Terry wrote:
    On 25/07/2024 14:56, olcott wrote:
    On 7/24/2024 10:29 PM, Mike Terry wrote:
    On 23/07/2024 14:31, olcott wrote:
    On 7/23/2024 1:32 AM, 0 wrote:
    On 2024-07-22 13:46:21 +0000, olcott said:

    On 7/22/2024 2:57 AM, Mikko wrote:
    On 2024-07-21 13:34:40 +0000, olcott said:

    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:

    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    When we use your incorrect reasoning we would conclude >>>>>>>>>>>>>>> that Infinite_Loop() is not an infinite loop because it >>>>>>>>>>>>>>> only repeats until aborted and is aborted.

    You and your HHH can reason or at least conclude correctly >>>>>>>>>>>>>> about
    Infinite_Loop but not about DDD. Possibly because it >>>>>>>>>>>>>> prefers to
    say "no", which is correct about Infinte_loop but not >>>>>>>>>>>>>> about DDD.


    *Because this is true I don't understand how you are not >>>>>>>>>>>>> simply lying*
    int main
    {
       DDD();
    }

    Calls HHH(DDD) that must abort the emulation of its input >>>>>>>>>>>>> or {HHH, emulated DDD and executed DDD} never stop running. >>>>>>>>>>>>
    You are the lying one.

    If HHH(DDD) abrots its simulation and returns true it is >>>>>>>>>>>> correct as a
    halt decider for DDD really halts.


    (b) We know that a decider is not allowed to report on the >>>>>>>>>>> behavior
    computation that itself is contained within.

    No, we don't. There is no such prohibition.


    Turing machines never take actual Turing machines as inputs. >>>>>>>>> They only take finite strings as inputs and an actual executing >>>>>>>>> Turing machine is not itself a finite string.

    The definition of a Turing machine does not say that a Turing
    machine
    is not a finite string. It is an abstract mathematical object
    without
    a specification of its exact nature. It could be a set or a finite >>>>>>>> string. Its exact nature is not relevant to the theory of
    computation,
    which only cares about certain properties of Turing machines.

    Therefore It is not allowed to report on its own behavior.

    Anyway, that does not follow. The theory of Turing machines does >>>>>>>> not
    prohibit anything.

    Another different TM can take the TM description of this
    machine and thus accurately report on its actual behavior.

    If a Turing machine can take a description of a TM as its input >>>>>>>> or as a part of its input it can also take its own description. >>>>>>>> Every Turing machine can be given its own description as input >>>>>>>> but a Turing machine may interprete it as something else.

    In this case we have two x86utm machines that are identical
    except that DDD calls HHH and DDD does not call HHH1.

    It is empirically proven that this changes their behavior
    and the behavior of DDD.


    You say a lot about things that are "empirically proven" and
    without exception they are never "proven" at all.


    It is empirically proven according to the semantics of the
    x86 machine code of DDD that DDD correctly emulated by HHH
    has different behavior than DDD correctly emulated by HHH1.

    Perhaps your actual code does behave differently!



    OK great, we are making headway.

    The questions are:
    a)  are HHH and HHH1 "identical copies", in the TM machine sense of
    incorporating
         the algorithm of one TM inside another TM?  (As Linz
    incorporates H
         inside H^, meaning that the behaviours of H and embedded_H MUST >>>> be identical for any
         input.)
         [You claim HHH and HHH1 /are/ proper copies, and yet give
    different results for
         input (D), which is impossible.]

    They are identical in the that have identical x86 machine
    code except for the x86 quirk that function calls are to
    a relative rather than absolute address. So when HHH calls
    the same function that HHH1 calls the machine code is not
    the same.  The only other case where the machine code of
    HHH1 and HHH is not identical is the way for slave instances
    of HHH to pass its execution trace up to the master.

    The relative addressing is to be expected as a difference, and is fine
    provided the actual target is the same. [Which it seems to be...]

    The whole thing with the slave instances might well be where the bug
    lies!  That would be slightly funny, as I pointed out that problem on
    some completely unrelated post, and this could be a follow-on issue
    where it has caused observable misbehavior in the code.  (Needs a bit
    more investigation...)


    There never is any actual bug with the simulation.

    That is just a LIE.

    My system uses libx86emu with decades of development
    experience. The current maintainer upgraded the system
    to operate in 32-bit mode for me.

    But you have added code that has bugs to it.

    The instructions that it simulates, it does correctly, except for the
    fact that you stop the simulation.

    Also, when it is ready to simulate the call instruction, you don't
    follow it simulation, but invent you own LIES about what that
    instruction will do.


    Whether or not my implementation of the decider portion is a
    computable function is moot as long as some code can see the
    repeating state behavior pattern that we can all see where
    the first four lines of DDD emulated by HHH repeat.

    Nope, since you have broken the simulation part, and don't let it just simulate, you whole program is buggy.



    Although it seems that I have been correct all along about the
    idea that slave instances can pass their execution trace up to
    the master without breaking computability this is not the way
    it has been actually encoded.

    Message-ID: <rLmcnQQ3-N_tvH_4nZ2dnZfqnPGdnZ2d@brightview.co.uk>
    On 3/1/2024 12:41 PM, Mike Terry wrote:
    ;
    Obviously a simulator has access to the internal state
    (tape contents etc.) of the simulated machine. No problem there.


    b)  If the two behaviours HHH/HHH1 are indeed different, WHAT
    precisely is the coding
         difference that accounts for that different behaviour?  (Like, >>>> with your H/H1 the
         difference was that H used H's address as part of its
    algorithm, while H1 used H1's
         address.)


    *I have said this about 500 times in the last three years*
    DDD calls HHH(DDD) in recursive simulation and does
    not call HHH1(DDD) in recursive simulation.

    You may have said it 500 times, but it doesn't answer my question!


    The problem is that the code itself has already answered this
    question 500 times in three years and people just ignore it.

    Nope, you have LIED that 500 times.


    Blah, Blah , Blah I know you must be wrong so I will not look
    at anything that you say.

    Nope, we point your error, and YOU ignord it


    When DDD emulated by HHH calls HHH(DDD) this call cannot possibly
    return. When DDD emulated by HHH1 calls HHH(DDD) this call DOES return.

    Nope, you use of dishonest words just proves you are a liar.

    It is the emulation of DDD by HHH that can not reach the return.

    The full behavior of the DDD (that happens to be partially observed by
    HHH's emulation of it) does reach that point.



    I have showed this 500 times with H(D,D) and H1(D,D) or with
    H(P,P) and H1(P,P).

    Nope, just repeated your lies.



    Look, here is a rough sketch of the two traces side by side just done
    by hand:

    [VIEW WITH FIXED FONT!!]

       HHH1 (DDD)                          HHH (DDD) >>    -----------------------------------------------------------------
    1 main ()                             main ()
    2   HHH1 (DDD)                          HHH (DDD) >> 4     Simulate (DDD)                      Simulate (DDD)
    5     | DDD()                             | DDD()
    6     |   HHH (DDD)                       |   HHH (DDD)
    7     |     Simulate (DDD)                |     Simulate (DDD)
    8     |     | DDD()                       |       DDD()
    9     |     |   HHH (DDD)                 |         HHH (DDD)
    10    |     |     Simulate (DDD)          Abort
    11    |     |       DDD()                 ret 0 >> 12    |     |         HHH (DDD)         ret 0
    13    |     Abort
    14    |     ret 0
    15    |   ret
    16    ret 1
    17  ret 0

    So HHH/HHH1 behaviour is different, but shouldn't be if HHH1 is a
    correct copy of HHH.


    And by your same reasoning 2 + 3 shouldn't = 5.
    Try to find one x86 instruction that is emulated incorrectly.

    Noope, you just show that your logic is broken.


    _DDD()
    [00002177] 55         push ebp
    [00002178] 8bec       mov ebp,esp
    [0000217a] 6877210000 push 00002177 ; push DDD
    [0000217f] e853f4ffff call 000015d7 ; call HHH
    [00002184] 83c404     add esp,+04
    [00002187] 5d         pop ebp
    [00002188] c3         ret

    Maybe you think that push 00002177 should jmp 00002188?

    No, only you might say that.

    Why does your "Call 000015d7" not go to 000015d7"

    Until you answer that, you are just admitting to the whole world you are
    a liar.

    YOu claim you emulation follows the semantics of the x86, and then don't
    follow that definition.

    YOU LIE. PERIOD.


    Your explanation makes NO SENSE AT ALL.  It's just one of those things
    you repeat 500 times, and nobody bothers to call you out.


    When people disagree with the semantics of the x86 instructions
    that is no actual rebuttal at all and merely proves their own
    technical incompetence.

    No, YOU DISAGREE. Call 000015d7 must go to 000015d7, not "create a new
    stack frame" at a totally new memory address.


    You say DDD calls HHH(DDD) in recursive simulation and does not call
    HHH1 in recursive simulation.


    Right and 2 + 3 = 5.

    and call HHH goes into HHH.


    Well that's correct [lines 6,9,12] - but it's irrelevant, because IT'S
    THE SAME ON BOTH SIDES ABOVE.  Both HHH/HHH1 simulate DDD [line 4] and
    BOTH of those simulations call HHH in recursive simulation, so BOTH
    SIDES MUST HAVE THE SAME BEHAVIOUR.


    In other words you are totally incompetent with the x86
    language or disagree with this language.


    No, you are. CALL Instructions are followed by the code of the
    subroutine called.

    when the instruction says mov eax, 5
    and you "interpret" that add edx, 10 YOU ARE WRONG

    No, when the instruction says CALL HHH, you think it means start an
    immulation of the program at the top of the stack.


    _DDD()
    [00002177] 55         push ebp
    [00002178] 8bec       mov ebp,esp
    [0000217a] 6877210000 push 00002177 ; push DDD
    [0000217f] e853f4ffff call 000015d7 ; call HHH

    DDD emulated by HHH endlessly repeats as if it was infinite
    recursion such that DDD emulated by HHH cannot possibly reach
    past 0000217f no matter what HHH does.

    Nope, because HHH aborts its emulation and returns to it.

    Thus every DDD gets there, it is only the PARTIAL emulation of HHH that
    doesn't see that.



    *This version is better annotated*
    Because I have repeated this same point 500 times in the last three
    years...


    You are just learning to lie better, but you are still wrong, and still
    lying.

    My guess is you are going to be stuck doing this for eternity.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Fri Jul 26 16:02:50 2024
    Op 26.jul.2024 om 15:54 schreef olcott:
    On 7/26/2024 3:50 AM, joes wrote:
    Am Thu, 25 Jul 2024 23:25:59 -0500 schrieb olcott:
    On 7/25/2024 10:35 PM, Mike Terry wrote:
    On 26/07/2024 01:53, olcott wrote:
    On 7/25/2024 4:03 PM, Mike Terry wrote:
    On 25/07/2024 14:56, olcott wrote:
    On 7/24/2024 10:29 PM, Mike Terry wrote:
    On 23/07/2024 14:31, olcott wrote:
    On 7/23/2024 1:32 AM, 0 wrote:
    On 2024-07-22 13:46:21 +0000, olcott said:
    On 7/22/2024 2:57 AM, Mikko wrote:
    On 2024-07-21 13:34:40 +0000, olcott said:
    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:
    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    (b) We know that a decider is not allowed to report on the >>>>>>>>>>>>> behavior computation that itself is contained within. >>>>>>>>>>>> No, we don't. There is no such prohibition.

    Therefore It is not allowed to report on its own behavior. >>>>>>>>>> Anyway, that does not follow. The theory of Turing machines does >>>>>>>>>> not prohibit anything.

    In this case we have two x86utm machines that are identical except >>>>>>>>> that DDD calls HHH and DDD does not call HHH1.
    I don't see how the outside use of a function can influence it.

    It is empirically proven according to the semantics of the x86
    machine code of DDD that DDD correctly emulated by HHH has different >>>>>>> behavior than DDD correctly emulated by HHH1.
    Perhaps your actual code does behave differently!
    OK great, we are making headway.
    Thanks, Mike, for the detailed analysis.

    The questions are:
    a)  are HHH and HHH1 "identical copies", in the TM machine sense of >>>>>> incorporating
          the algorithm of one TM inside another TM?  (As Linz
          incorporates H inside H^, meaning that the behaviours of H >>>>>>       and embedded_H MUST be identical for any input.)
          [You claim HHH and HHH1 /are/ proper copies, and yet give >>>>>> different results for input (D), which is impossible.]

    They are identical in the that have identical x86 machine code except >>>>> for the x86 quirk that function calls are to a relative rather than
    absolute address. So when HHH calls the same function that HHH1 calls >>>>> the machine code is not the same.  The only other case where the
    machine code of HHH1 and HHH is not identical is the way for slave
    instances of HHH to pass its execution trace up to the master.
    How is the trace passed?


    That does not matter. As long as we understand that Mike is correct
    about this:

    Message-ID: <rLmcnQQ3-N_tvH_4nZ2dnZfqnPGdnZ2d@brightview.co.uk>
    On 3/1/2024 12:41 PM, Mike Terry wrote:

    Obviously a simulator has access to the internal state
    (tape contents etc.) of the simulated machine. No problem there.

    Then we know that HHH can see the the first four instructions of
    DDD have no conditional code that could prevent them from endlessly repeating.

    This is the exact same pattern with Infinite_Recursion()
    where there are no conditional branch instructions that
    would prevent the first three instructions of
    Infinite_Recursion() from endlessly repeating.

    _Infinite_Recursion()
    [0000215a] 55               push ebp
    [0000215b] 8bec             mov ebp,esp
    [0000215d] e8f8ffffff       call 0000215a ; recursive call
    [00002162] 5d               pop ebp
    [00002163] c3               ret
    Size in bytes:(0010) [00002163]

    Begin Local Halt Decider Simulation   Execution Trace Stored at:113934 Decide_Halting_HH:1
    [0000215a][00113924][00113928] 55               push ebp [0000215b][00113924][00113928] 8bec             mov ebp,esp [0000215d][00113920][00002162] e8f8ffffff       call 0000215a [0000215a][0011391c][00113924] 55               push ebp [0000215b][0011391c][00113924] 8bec             mov ebp,esp [0000215d][00113918][00002162] e8f8ffffff       call 0000215a
    Local Halt Decider: Infinite Recursion Detected Simulation Stopped

    The relative addressing is to be expected as a difference, and is fine >>>> provided the actual target is the same. [Which it seems to be...]
    The whole thing with the slave instances might well be where the bug
    lies!  That would be slightly funny, as I pointed out that problem on >>>> some completely unrelated post, and this could be a follow-on issue
    where it has caused observable misbehavior in the code.  (Needs a bit >>>> more investigation...)

    There never is any actual bug with the simulation.

    I bet my nonexistent soul that there are bugs left in libx86. Apart
    from that, your use of the library may be buggy.


    That is irrelevant. We can see by the execution trace of
    DDD emulated by HHH that this emulation does precisely
    match the semantics of the first four x86 machine language
    instructions of DDD.

    We can also see that DDD emulated by HHH1 does precisely
    match the semantics of the x86 machine language instructions
    of DDD.

    People have been saying that I am wrong about the for three
    years never bothering to notice that I have always proved
    that I am correct about this.

    But you have been told that it is not enough to simulate only four
    instructions of a halting program. The simulation is aborted when the
    simulated HHH has only one cycle to go. This makes the simulation
    incomplete and incorrect, because it does not show the full behaviour of DDD/HHH.

    It seems you do not have the mental intelligence to even consider that
    you could be wrong, so you ignore all errors pointed out to you and
    repeat the same half truth again. Since you cannot show and error in the rebuttals, you use the excuse, without any evidence, that they are
    stupid or lying.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Fri Jul 26 15:13:23 2024
    Am Fri, 26 Jul 2024 08:54:32 -0500 schrieb olcott:
    On 7/26/2024 3:50 AM, joes wrote:
    Am Thu, 25 Jul 2024 23:25:59 -0500 schrieb olcott:
    On 7/25/2024 10:35 PM, Mike Terry wrote:
    On 26/07/2024 01:53, olcott wrote:
    On 7/25/2024 4:03 PM, Mike Terry wrote:
    On 25/07/2024 14:56, olcott wrote:
    On 7/24/2024 10:29 PM, Mike Terry wrote:
    On 23/07/2024 14:31, olcott wrote:
    On 7/23/2024 1:32 AM, 0 wrote:
    On 2024-07-22 13:46:21 +0000, olcott said:
    On 7/22/2024 2:57 AM, Mikko wrote:
    On 2024-07-21 13:34:40 +0000, olcott said:
    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:
    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    In this case we have two x86utm machines that are identical
    except that DDD calls HHH and DDD does not call HHH1.
    I don't see how the outside use of a function can influence it.

    Then we know that HHH can see the the first four instructions of DDD
    have no conditional code that could prevent them from endlessly
    repeating.
    True, but HHH does have a conditional abort. It should be coded to
    recognise that, because one knows that at compile time already.

    The relative addressing is to be expected as a difference, and is
    fine provided the actual target is the same. [Which it seems to
    be...]
    The whole thing with the slave instances might well be where the bug
    lies!  That would be slightly funny, as I pointed out that problem on >>>> some completely unrelated post, and this could be a follow-on issue
    where it has caused observable misbehavior in the code.  (Needs a bit >>>> more investigation...)
    There never is any actual bug with the simulation.
    I bet my nonexistent soul that there are bugs left in libx86. Apart
    from that, your use of the library may be buggy.
    That is irrelevant. We can see by the execution trace of DDD emulated by
    HHH that this emulation does precisely match the semantics of the first
    four x86 machine language instructions of DDD.
    But not what comes afterwards, and HHH makes the incorrect assumption
    that another instance of itself wouldn't abort.

    b)  If the two behaviours HHH/HHH1 are indeed different, WHAT
    precisely is the coding
         difference that accounts for that different behaviour?
         (Like, with your H/H1 the difference was that H used H's >>>>>>      address as part of its algorithm, while H1 used H1's
         address.)
    DDD calls HHH(DDD) in recursive simulation and does not call
    HHH1(DDD)
    in recursive simulation.
    You may have said it 500 times, but it doesn't answer my question!
    The problem is that the code itself has already answered this question
    500 times in three years and people just ignore it.
    When DDD emulated by HHH calls HHH(DDD) this call cannot possibly
    return. When DDD emulated by HHH1 calls HHH(DDD) this call DOES
    return.
    How can the same code return when called once and not another time?

    Look, here is a rough sketch of the two traces side by side just done
    by hand:
    So HHH/HHH1 behaviour is different, but shouldn't be if HHH1 is a
    correct copy of HHH.
    And by your same reasoning 2 + 3 shouldn't = 5.
    No, 2+3 = 3+2. You have two copies of the same function that behave
    differently. How is that possible?

    Try to find one x86 instruction that is emulated incorrectly.
    Can you please point us to where they diverge?

    --
    Am Sat, 20 Jul 2024 12:35:31 +0000 schrieb WM in sci.math:
    It is not guaranteed that n+1 exists for every n.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Fri Jul 26 17:36:38 2024
    Op 26.jul.2024 om 16:19 schreef olcott:
    On 7/26/2024 9:02 AM, Fred. Zwarts wrote:
    Op 26.jul.2024 om 15:54 schreef olcott:
    On 7/26/2024 3:50 AM, joes wrote:
    Am Thu, 25 Jul 2024 23:25:59 -0500 schrieb olcott:
    On 7/25/2024 10:35 PM, Mike Terry wrote:
    On 26/07/2024 01:53, olcott wrote:
    On 7/25/2024 4:03 PM, Mike Terry wrote:
    On 25/07/2024 14:56, olcott wrote:
    On 7/24/2024 10:29 PM, Mike Terry wrote:
    On 23/07/2024 14:31, olcott wrote:
    On 7/23/2024 1:32 AM, 0 wrote:
    On 2024-07-22 13:46:21 +0000, olcott said:
    On 7/22/2024 2:57 AM, Mikko wrote:
    On 2024-07-21 13:34:40 +0000, olcott said:
    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:
    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    (b) We know that a decider is not allowed to report on the >>>>>>>>>>>>>>> behavior computation that itself is contained within. >>>>>>>>>>>>>> No, we don't. There is no such prohibition.

    Therefore It is not allowed to report on its own behavior. >>>>>>>>>>>> Anyway, that does not follow. The theory of Turing machines >>>>>>>>>>>> does
    not prohibit anything.

    In this case we have two x86utm machines that are identical >>>>>>>>>>> except
    that DDD calls HHH and DDD does not call HHH1.
    I don't see how the outside use of a function can influence it.

    It is empirically proven according to the semantics of the x86 >>>>>>>>> machine code of DDD that DDD correctly emulated by HHH has
    different
    behavior than DDD correctly emulated by HHH1.
    Perhaps your actual code does behave differently!
    OK great, we are making headway.
    Thanks, Mike, for the detailed analysis.

    The questions are:
    a)  are HHH and HHH1 "identical copies", in the TM machine sense of >>>>>>>> incorporating
          the algorithm of one TM inside another TM?  (As Linz >>>>>>>>       incorporates H inside H^, meaning that the behaviours of H >>>>>>>>       and embedded_H MUST be identical for any input.)
          [You claim HHH and HHH1 /are/ proper copies, and yet give >>>>>>>> different results for input (D), which is impossible.]

    They are identical in the that have identical x86 machine code
    except
    for the x86 quirk that function calls are to a relative rather than >>>>>>> absolute address. So when HHH calls the same function that HHH1
    calls
    the machine code is not the same.  The only other case where the >>>>>>> machine code of HHH1 and HHH is not identical is the way for slave >>>>>>> instances of HHH to pass its execution trace up to the master.
    How is the trace passed?


    That does not matter. As long as we understand that Mike is correct
    about this:

    Message-ID: <rLmcnQQ3-N_tvH_4nZ2dnZfqnPGdnZ2d@brightview.co.uk>
    On 3/1/2024 12:41 PM, Mike Terry wrote:
    ;
    Obviously a simulator has access to the internal state
    (tape contents etc.) of the simulated machine. No problem there.

    Then we know that HHH can see the the first four instructions of
    DDD have no conditional code that could prevent them from endlessly
    repeating.

    This is the exact same pattern with Infinite_Recursion()
    where there are no conditional branch instructions that
    would prevent the first three instructions of
    Infinite_Recursion() from endlessly repeating.

    _Infinite_Recursion()
    [0000215a] 55               push ebp
    [0000215b] 8bec             mov ebp,esp
    [0000215d] e8f8ffffff       call 0000215a ; recursive call
    [00002162] 5d               pop ebp
    [00002163] c3               ret
    Size in bytes:(0010) [00002163]

    Begin Local Halt Decider Simulation   Execution Trace Stored at:113934 >>> Decide_Halting_HH:1
    [0000215a][00113924][00113928] 55               push ebp
    [0000215b][00113924][00113928] 8bec             mov ebp,esp
    [0000215d][00113920][00002162] e8f8ffffff       call 0000215a
    [0000215a][0011391c][00113924] 55               push ebp
    [0000215b][0011391c][00113924] 8bec             mov ebp,esp
    [0000215d][00113918][00002162] e8f8ffffff       call 0000215a
    Local Halt Decider: Infinite Recursion Detected Simulation Stopped

    The relative addressing is to be expected as a difference, and is
    fine
    provided the actual target is the same. [Which it seems to be...]
    The whole thing with the slave instances might well be where the bug >>>>>> lies!  That would be slightly funny, as I pointed out that problem on >>>>>> some completely unrelated post, and this could be a follow-on issue >>>>>> where it has caused observable misbehavior in the code.  (Needs a bit >>>>>> more investigation...)

    There never is any actual bug with the simulation.

    I bet my nonexistent soul that there are bugs left in libx86. Apart
    from that, your use of the library may be buggy.


    That is irrelevant. We can see by the execution trace of
    DDD emulated by HHH that this emulation does precisely
    match the semantics of the first four x86 machine language
    instructions of DDD.

    We can also see that DDD emulated by HHH1 does precisely
    match the semantics of the x86 machine language instructions
    of DDD.

    People have been saying that I am wrong about the for three
    years never bothering to notice that I have always proved
    that I am correct about this.

    But you have been told that it is not enough to simulate only four
    instructions of a halting program. The simulation is aborted when the
    simulated HHH has only one cycle to go.

    *This is merely your own software engineering incompetence*
    Unless the outermost HHH (having seen the longest execution
    trace sequence) aborts its own simulation of DDD then none of
    them, ever abort.


    You start dreaming again about a HHH that does not abort. We are talking
    about a HHH that *does* abort.
    The HHH that does not abort is irrelevant (and wrong, as well).
    Again, you cannot point to an error and since you are do not able to
    consider the possibility that you are wrong, you choose to repeat your
    dreams and ignore your errors, again with the excuse, without any
    evidence, that what I say is stupid or untrue.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Fri Jul 26 19:20:03 2024
    Am Fri, 26 Jul 2024 10:20:58 -0500 schrieb olcott:
    On 7/26/2024 10:13 AM, joes wrote:
    Am Fri, 26 Jul 2024 08:54:32 -0500 schrieb olcott:
    On 7/26/2024 3:50 AM, joes wrote:
    Am Thu, 25 Jul 2024 23:25:59 -0500 schrieb olcott:
    On 7/25/2024 10:35 PM, Mike Terry wrote:
    On 26/07/2024 01:53, olcott wrote:
    On 7/25/2024 4:03 PM, Mike Terry wrote:
    On 25/07/2024 14:56, olcott wrote:
    On 7/24/2024 10:29 PM, Mike Terry wrote:
    On 23/07/2024 14:31, olcott wrote:
    On 7/23/2024 1:32 AM, 0 wrote:
    On 2024-07-22 13:46:21 +0000, olcott said:
    On 7/22/2024 2:57 AM, Mikko wrote:
    On 2024-07-21 13:34:40 +0000, olcott said:
    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:
    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    Then we know that HHH can see the the first four instructions of DDD
    have no conditional code that could prevent them from endlessly
    repeating.
    True, but HHH does have a conditional abort. It should be coded to
    recognise that, because one knows that at compile time already.

    The whole thing with the slave instances might well be where the
    bug lies!  That would be slightly funny, as I pointed out that
    problem on some completely unrelated post, and this could be a
    follow-on issue where it has caused observable misbehavior in the
    code.  (Needs a bit more investigation...)
    There never is any actual bug with the simulation.
    I bet my nonexistent soul that there are bugs left in libx86. Apart
    from that, your use of the library may be buggy.
    That is irrelevant. We can see by the execution trace of DDD emulated
    by HHH that this emulation does precisely match the semantics of the
    first four x86 machine language instructions of DDD.
    But not what comes afterwards, and HHH makes the incorrect assumption
    that another instance of itself wouldn't abort.
    That it is beyond your technical competence to understand that unless
    the first HHH aborts then none of them do is less than no rebuttal at
    all.
    Fuck your insults. I know that. Like you say, if the first one aborts,
    all of them do, therefore the first one can't say it was simulating
    something that didn't halt.

    --
    Am Sat, 20 Jul 2024 12:35:31 +0000 schrieb WM in sci.math:
    It is not guaranteed that n+1 exists for every n.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Sat Jul 27 10:21:05 2024
    On 2024-07-26 14:08:11 +0000, olcott said:

    On 7/26/2024 3:45 AM, Mikko wrote:
    On 2024-07-24 13:33:55 +0000, olcott said:

    On 7/24/2024 3:57 AM, Mikko wrote:
    On 2024-07-23 13:31:35 +0000, olcott said:

    On 7/23/2024 1:32 AM, 0 wrote:
    On 2024-07-22 13:46:21 +0000, olcott said:

    On 7/22/2024 2:57 AM, Mikko wrote:
    On 2024-07-21 13:34:40 +0000, olcott said:

    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:

    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    When we use your incorrect reasoning we would conclude >>>>>>>>>>>>> that Infinite_Loop() is not an infinite loop because it >>>>>>>>>>>>> only repeats until aborted and is aborted.

    You and your HHH can reason or at least conclude correctly about >>>>>>>>>>>> Infinite_Loop but not about DDD. Possibly because it prefers to >>>>>>>>>>>> say "no", which is correct about Infinte_loop but not about DDD. >>>>>>>>>>>>

    *Because this is true I don't understand how you are not simply lying*
    int main
    {
       DDD();
    }

    Calls HHH(DDD) that must abort the emulation of its input >>>>>>>>>>> or {HHH, emulated DDD and executed DDD} never stop running. >>>>>>>>>>
    You are the lying one.

    If HHH(DDD) abrots its simulation and returns true it is correct as a
    halt decider for DDD really halts.


    (b) We know that a decider is not allowed to report on the behavior >>>>>>>>> computation that itself is contained within.

    No, we don't. There is no such prohibition.


    Turing machines never take actual Turing machines as inputs.
    They only take finite strings as inputs and an actual executing
    Turing machine is not itself a finite string.

    The definition of a Turing machine does not say that a Turing machine >>>>>> is not a finite string. It is an abstract mathematical object without >>>>>> a specification of its exact nature. It could be a set or a finite >>>>>> string. Its exact nature is not relevant to the theory of computation, >>>>>> which only cares about certain properties of Turing machines.

    Therefore It is not allowed to report on its own behavior.

    Anyway, that does not follow. The theory of Turing machines does not >>>>>> prohibit anything.

    Another different TM can take the TM description of this
    machine and thus accurately report on its actual behavior.

    If a Turing machine can take a description of a TM as its input
    or as a part of its input it can also take its own description.
    Every Turing machine can be given its own description as input
    but a Turing machine may interprete it as something else.

    In this case we have two x86utm machines that are identical
    except that DDD calls HHH and DDD does not call HHH1.

    That DDD calls HHH and DDD does not call HHH1 is not a difference
    between two unnamed turing machines.


    The same thing happens at the Peter Linz Turing Machine level
    I will provide that more difficult example if and only if you
    prove that you understand this one.

    However, Peter Linz does not call taht same thing a difference.

    We can call everything "late for dinner" with a unique integer
    index and the properties that I assert exist still exist.

    That you can say all sorts stupid things does not mean that it be a
    good idea to do so.

    Some of the properties you assert exsit actually do exist, some don't.

    When Ĥ is applied to ⟨Ĥ⟩
    Ĥ.q0 ⟨Ĥ⟩ ⊢* embedded_H ⟨Ĥ⟩ ⟨Ĥ⟩ ⊢* Ĥ.qy ∞
    Ĥ.q0 ⟨Ĥ⟩ ⊢* embedded_H ⟨Ĥ⟩ ⟨Ĥ⟩ ⊢* Ĥ.qn

    That does not specify a time or a situation.

    (a) Ĥ copies its input ⟨Ĥ⟩
    (b) Ĥ invokes embedded_H ⟨Ĥ⟩ ⟨Ĥ⟩

    Its not really an invocation. Ĥ imitates H with ⟨Ĥ⟩ ⟨Ĥ⟩.

    (c) embedded_H simulates ⟨Ĥ⟩ ⟨Ĥ⟩

    Imitating H, Ĥ simulates ⟨Ĥ⟩ ⟨Ĥ⟩.

    (d) simulated ⟨Ĥ⟩ copies its input ⟨Ĥ⟩

    Ĥ, as a part of the simulation of what its input specifecs, simulates
    the specifiec copying of the simulated input ⟨Ĥ⟩.

    (e) simulated ⟨Ĥ⟩ invokes simulated embedded_H ⟨Ĥ⟩ ⟨Ĥ⟩

    Again, this is not really an invocation. Imitating H, Ĥ simulates
    the simulation of H with ⟨Ĥ⟩ ⟨Ĥ⟩.

    (f) simulated embedded_H simulates ⟨Ĥ⟩ ⟨Ĥ⟩
    (g) goto (d) with one more level of simulation

    Two complete simulations show a pair of identical TMD's are
    simulating a pair of identical inputs. We can see this thus
    proving recursive simulation.

    Detection that the simulated simulation is identical to the simulating simulation is not trivial. In particular, it requires that the
    simulator is able to identify a part of the simulated process as a
    simulation.

    When embedded_H is accountable for the behavior of its
    input and not accountable for the behavior of the
    computation that it is contained within then embedded_H
    is necessarily correct to transition to its own Ĥ.qn state.

    Embedded_H is not accountable for anything. It just is there and does
    whatever it does. There is no requirements on Ĥ so whatever it does
    it can do no wrong.

    H is required to predict whether Ĥ ⟨Ĥ⟩, it executed, will terminate.
    H is not a halt decider if it says "yes" and Ĥ ⟨Ĥ⟩ does not terminate, nor if it says "no" and terminates.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Sun Jul 28 11:02:48 2024
    On 2024-07-27 14:08:10 +0000, olcott said:

    On 7/27/2024 2:21 AM, Mikko wrote:
    On 2024-07-26 14:08:11 +0000, olcott said:

    On 7/26/2024 3:45 AM, Mikko wrote:
    On 2024-07-24 13:33:55 +0000, olcott said:

    On 7/24/2024 3:57 AM, Mikko wrote:
    On 2024-07-23 13:31:35 +0000, olcott said:

    On 7/23/2024 1:32 AM, 0 wrote:
    On 2024-07-22 13:46:21 +0000, olcott said:

    On 7/22/2024 2:57 AM, Mikko wrote:
    On 2024-07-21 13:34:40 +0000, olcott said:

    On 7/21/2024 4:34 AM, Mikko wrote:
    On 2024-07-20 13:11:03 +0000, olcott said:

    On 7/20/2024 3:21 AM, Mikko wrote:
    On 2024-07-19 14:08:24 +0000, olcott said:

    When we use your incorrect reasoning we would conclude >>>>>>>>>>>>>>> that Infinite_Loop() is not an infinite loop because it >>>>>>>>>>>>>>> only repeats until aborted and is aborted.

    You and your HHH can reason or at least conclude correctly about >>>>>>>>>>>>>> Infinite_Loop but not about DDD. Possibly because it prefers to >>>>>>>>>>>>>> say "no", which is correct about Infinte_loop but not about DDD. >>>>>>>>>>>>>>

    *Because this is true I don't understand how you are not simply lying*
    int main
    {
       DDD();
    }

    Calls HHH(DDD) that must abort the emulation of its input >>>>>>>>>>>>> or {HHH, emulated DDD and executed DDD} never stop running. >>>>>>>>>>>>
    You are the lying one.

    If HHH(DDD) abrots its simulation and returns true it is correct as a
    halt decider for DDD really halts.


    (b) We know that a decider is not allowed to report on the behavior >>>>>>>>>>> computation that itself is contained within.

    No, we don't. There is no such prohibition.


    Turing machines never take actual Turing machines as inputs. >>>>>>>>> They only take finite strings as inputs and an actual executing >>>>>>>>> Turing machine is not itself a finite string.

    The definition of a Turing machine does not say that a Turing machine >>>>>>>> is not a finite string. It is an abstract mathematical object without >>>>>>>> a specification of its exact nature. It could be a set or a finite >>>>>>>> string. Its exact nature is not relevant to the theory of computation, >>>>>>>> which only cares about certain properties of Turing machines.

    Therefore It is not allowed to report on its own behavior.

    Anyway, that does not follow. The theory of Turing machines does not >>>>>>>> prohibit anything.

    Another different TM can take the TM description of this
    machine and thus accurately report on its actual behavior.

    If a Turing machine can take a description of a TM as its input >>>>>>>> or as a part of its input it can also take its own description. >>>>>>>> Every Turing machine can be given its own description as input >>>>>>>> but a Turing machine may interprete it as something else.

    In this case we have two x86utm machines that are identical
    except that DDD calls HHH and DDD does not call HHH1.

    That DDD calls HHH and DDD does not call HHH1 is not a difference
    between two unnamed turing machines.


    The same thing happens at the Peter Linz Turing Machine level
    I will provide that more difficult example if and only if you
    prove that you understand this one.

    However, Peter Linz does not call taht same thing a difference.

    We can call everything "late for dinner" with a unique integer
    index and the properties that I assert exist still exist.

    That you can say all sorts stupid things does not mean that it be a
    good idea to do so.

    Some of the properties you assert exsit actually do exist, some don't.

    When Ĥ is applied to ⟨Ĥ⟩
    Ĥ.q0 ⟨Ĥ⟩ ⊢* embedded_H ⟨Ĥ⟩ ⟨Ĥ⟩ ⊢* Ĥ.qy ∞
    Ĥ.q0 ⟨Ĥ⟩ ⊢* embedded_H ⟨Ĥ⟩ ⟨Ĥ⟩ ⊢* Ĥ.qn


    The above is merely simplified syntax for the top of page 3 https://www.liarparadox.org/Linz_Proof.pdf
    The above is the whole original Linz proof.

    And even more simplified semantics.

    (a) Ĥ copies its input ⟨Ĥ⟩
    (b) Ĥ invokes embedded_H ⟨Ĥ⟩ ⟨Ĥ⟩
    (c) embedded_H simulates ⟨Ĥ⟩ ⟨Ĥ⟩
    (d) simulated ⟨Ĥ⟩ copies its input ⟨Ĥ⟩
    (e) simulated ⟨Ĥ⟩ invokes simulated embedded_H ⟨Ĥ⟩ ⟨Ĥ⟩
    (f) simulated embedded_H simulates ⟨Ĥ⟩ ⟨Ĥ⟩
    (g) goto (d) with one more level of simulation

    You are supposed to evaluate the above as a contiguous
    sequence of moves such that non-halting behavior is
    identified.

    The above is an obvious tight loop of (d), (e), (f), and (g).
    Its relevance (it any) to the topic of the discussion is not
    obvious.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)