• Re: Correct simulation of DDD by HHH is proven --- Heathfield tells the

    From Richard Heathfield@21:1/5 to olcott on Tue Aug 19 00:46:07 2025
    On 19/08/2025 00:28, olcott wrote:
    On 8/18/2025 6:05 PM, Richard Heathfield wrote:

    <snip>

    It is an easily verified fact, as you love to say, that if DD
    calls HHH (as it does) and HHH calls DD (as, through
    simulation, it effectively does) that HHH(DD) can never halt
    naturally, so it will have to abort the recursion and report
    its result as 0 - didn't halt.


    Good.

    Precisely /because/ that fact is so easily verified, it is safe
    and correct for HHH to replace a simulated call to HHH(DD) with
    a 0, catch that 0 return value, and continue with the simulation.


    *That is cheating and you know it* Why lie?

    Cheating?

    What are you talking about? Don't be so bloody ridiculous.

    "Hey, if we gave our pilots big hankies, when the enemy broke
    their planes they could float down to earth instead of falling
    down. Save a lot of lives."

    "But that's cheating!"

    Whatever works, dude. Do you want to know if DD halts or don't you?

    Getting the right answer isn't cheating; it's engineering. My
    suggestion doesn't require any static data, multi-threading,
    anything weird like that - just step by step, plod by plod
    program code. Bright programming isn't cheating - it's *solving
    the problem*!

    You are artificially making your simulator stupider than it needs
    to be, as a direct result of which it is failing properly to
    analyse your DD function.

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to olcott on Tue Aug 19 01:29:27 2025
    On 19/08/2025 01:21, olcott wrote:
    On 8/18/2025 6:46 PM, Richard Heathfield wrote:
    On 19/08/2025 00:28, olcott wrote:
    On 8/18/2025 6:05 PM, Richard Heathfield wrote:

    <snip>

    It is an easily verified fact, as you love to say, that if DD
    calls HHH (as it does) and HHH calls DD (as, through
    simulation, it effectively does) that HHH(DD) can never halt
    naturally, so it will have to abort the recursion and report
    its result as 0 - didn't halt.


    Good.

    Precisely /because/ that fact is so easily verified, it is
    safe and correct for HHH to replace a simulated call to
    HHH(DD) with a 0, catch that 0 return value, and continue
    with the simulation.


    *That is cheating and you know it* Why lie?

    Cheating?

    What are you talking about? Don't be so bloody ridiculous.

    If you didn't already know it is cheating

    Of course it's not cheating. It's engineering.

    you
    would not have said the prior paragraph.

    Wrong. And it isn't a question of not knowing it's cheating; I
    know damn well it isn't. You should be seeking every way possible
    of improving HHH, and rejecting this obvious win is highly
    suspicious.

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to calculation. I can just on Tue Aug 19 08:06:41 2025
    Am Mon, 18 Aug 2025 18:28:06 -0500 schrieb olcott:
    On 8/18/2025 6:05 PM, Richard Heathfield wrote:
    On 18/08/2025 23:46, olcott wrote:
    On 8/18/2025 5:13 PM, Richard Heathfield wrote:


    It is an easily verified fact, as you love to say, that if DD calls HHH
    (as it does) and HHH calls DD (as, through simulation, it effectively
    does) that HHH(DD) can never halt naturally, so it will have to abort
    the recursion and report its result as 0 - didn't halt.
    Good.

    Precisely /because/ that fact is so easily verified, it is safe and
    correct for HHH to replace a simulated call to HHH(DD) with a 0, catch
    that 0 return value, and continue with the simulation.

    *That is cheating and you know it* Why lie?
    The rest of what you say is based on this same cheat.

    It’s not cheating. If we know the result, we can skip the whole
    calculation. I can just write return 4 instead of 2+2.

    Since it is therefore possible for the simulation to continue after
    all, it is erroneous to refrain.
    HHH is therefore compelled to conclude:

    (a) that the recursion will never halt unless aborted;
    (b) the recursion must yield 0;
    (c) DD must therefore skip the if and return 0 (meaning that it never
    halts) while in the very act of halting.

    In other words, even when/if you fix your simulator, it will still get
    the answer wrong.
    --
    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 Richard Heathfield@21:1/5 to olcott on Tue Aug 19 15:36:23 2025
    On 19/08/2025 15:29, olcott wrote:
    On 8/19/2025 3:06 AM, joes wrote:
    Am Mon, 18 Aug 2025 18:28:06 -0500 schrieb olcott:
    On 8/18/2025 6:05 PM, Richard Heathfield wrote:
    On 18/08/2025 23:46, olcott wrote:
    On 8/18/2025 5:13 PM, Richard Heathfield wrote:


    It is an easily verified fact, as you love to say, that if DD
    calls HHH
    (as it does) and HHH calls DD (as, through simulation, it
    effectively
    does) that HHH(DD) can never halt naturally, so it will have
    to abort
    the recursion and report its result as 0 - didn't halt.
    Good.

    Precisely /because/ that fact is so easily verified, it is
    safe and
    correct for HHH to replace a simulated call to HHH(DD) with a
    0, catch
    that 0 return value, and continue with the simulation.

    *That is cheating and you know it* Why lie?
    The rest of what you say is based on this same cheat.

    It’s not cheating. If we know the result, we can skip the whole
    calculation. I can just write return 4 instead of 2+2.


    That is the kind of changing the input that
    changes the behavior specified by this input
    that is cheating.

    How does it change the behaviour of DD?

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Tue Aug 19 14:56:34 2025
    Am Tue, 19 Aug 2025 09:29:19 -0500 schrieb olcott:
    On 8/19/2025 3:06 AM, joes wrote:
    Am Mon, 18 Aug 2025 18:28:06 -0500 schrieb olcott:
    On 8/18/2025 6:05 PM, Richard Heathfield wrote:
    On 18/08/2025 23:46, olcott wrote:
    On 8/18/2025 5:13 PM, Richard Heathfield wrote:

    Precisely /because/ that fact is so easily verified, it is safe and
    correct for HHH to replace a simulated call to HHH(DD) with a 0,
    catch that 0 return value, and continue with the simulation.

    *That is cheating and you know it* Why lie?
    The rest of what you say is based on this same cheat.

    It’s not cheating. If we know the result, we can skip the whole
    calculation. I can just write return 4 instead of 2+2.

    That is the kind of changing the input that changes the behavior
    specified by this input that is cheating.

    Cheating is that HHH returns that DD would not halt *if it called
    a non-aborting simulator*.

    --
    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 Richard Heathfield@21:1/5 to olcott on Tue Aug 19 16:24:02 2025
    On 19/08/2025 16:08, olcott wrote:
    On 8/19/2025 9:36 AM, Richard Heathfield wrote:
    On 19/08/2025 15:29, olcott wrote:
    On 8/19/2025 3:06 AM, joes wrote:
    Am Mon, 18 Aug 2025 18:28:06 -0500 schrieb olcott:
    On 8/18/2025 6:05 PM, Richard Heathfield wrote:
    On 18/08/2025 23:46, olcott wrote:
    On 8/18/2025 5:13 PM, Richard Heathfield wrote:


    It is an easily verified fact, as you love to say, that if
    DD calls HHH
    (as it does) and HHH calls DD (as, through simulation, it
    effectively
    does) that HHH(DD) can never halt naturally, so it will
    have to abort
    the recursion and report its result as 0 - didn't halt.
    Good.

    Precisely /because/ that fact is so easily verified, it is
    safe and
    correct for HHH to replace a simulated call to HHH(DD) with
    a 0, catch
    that 0 return value, and continue with the simulation.

    *That is cheating and you know it* Why lie?
    The rest of what you say is based on this same cheat.

    It’s not cheating. If we know the result, we can skip the whole
    calculation. I can just write return 4 instead of 2+2.


    That is the kind of changing the input that
    changes the behavior specified by this input
    that is cheating.

    How does it change the behaviour of DD?


    It lets it reach unreachable code.

    If the code is unreachable, it can't be reached, so you're wrong.

    If the code is reached, it isn't unreachable, so you're wrong.

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to olcott on Tue Aug 19 16:40:05 2025
    On 19/08/2025 16:34, olcott wrote:
    On 8/19/2025 10:24 AM, Richard Heathfield wrote:
    On 19/08/2025 16:08, olcott wrote:
    On 8/19/2025 9:36 AM, Richard Heathfield wrote:
    On 19/08/2025 15:29, olcott wrote:
    On 8/19/2025 3:06 AM, joes wrote:
    Am Mon, 18 Aug 2025 18:28:06 -0500 schrieb olcott:
    On 8/18/2025 6:05 PM, Richard Heathfield wrote:
    On 18/08/2025 23:46, olcott wrote:
    On 8/18/2025 5:13 PM, Richard Heathfield wrote:


    It is an easily verified fact, as you love to say, that
    if DD calls HHH
    (as it does) and HHH calls DD (as, through simulation, it
    effectively
    does) that HHH(DD) can never halt naturally, so it will
    have to abort
    the recursion and report its result as 0 - didn't halt.
    Good.

    Precisely /because/ that fact is so easily verified, it
    is safe and
    correct for HHH to replace a simulated call to HHH(DD)
    with a 0, catch
    that 0 return value, and continue with the simulation.

    *That is cheating and you know it* Why lie?
    The rest of what you say is based on this same cheat.

    It’s not cheating. If we know the result, we can skip the
    whole
    calculation. I can just write return 4 instead of 2+2.


    That is the kind of changing the input that
    changes the behavior specified by this input
    that is cheating.

    How does it change the behaviour of DD?


    It lets it reach unreachable code.

    If the code is unreachable, it can't be reached, so you're wrong.

    If the code is reached, it isn't unreachable, so you're wrong.


    _Infinite_Loop()
    [00002112] 55             push ebp
    [00002113] 8bec           mov ebp,esp
    [00002115] ebfe           jmp 00002115
    [00002117] 5d             pop ebp
    [00002118] c3             ret
    Size in bytes:(0007) [00002118]

    Its "return" statement is unreachable without cheating.


    int DD()
    {
    int Halt_Status = HHH(DD);
    if (Halt_Status)
    HERE: goto HERE;
    return Halt_Status;
    }


    HHH returns 0.

    DD's return statement is clearly reachable.

    It only becomes unreachable if you cheat by changing the input to
    abort, when it *clearly* doesn't abort.

    Calling an end to runaway recursion is all very well, but
    changing the behaviour of the code is not.

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Wed Aug 20 11:09:54 2025
    Op 19.aug.2025 om 17:16 schreef olcott:
    On 8/19/2025 9:56 AM, joes wrote:
    Am Tue, 19 Aug 2025 09:29:19 -0500 schrieb olcott:
    On 8/19/2025 3:06 AM, joes wrote:
    Am Mon, 18 Aug 2025 18:28:06 -0500 schrieb olcott:
    On 8/18/2025 6:05 PM, Richard Heathfield wrote:
    On 18/08/2025 23:46, olcott wrote:
    On 8/18/2025 5:13 PM, Richard Heathfield wrote:

    Precisely /because/ that fact is so easily verified, it is safe and >>>>>> correct for HHH to replace a simulated call to HHH(DD) with a 0,
    catch that 0 return value, and continue with the simulation.

    *That is cheating and you know it* Why lie?
    The rest of what you say is based on this same cheat.

    It’s not cheating. If we know the result, we can skip the whole
    calculation. I can just write return 4 instead of 2+2.

    That is the kind of changing the input that changes the behavior
    specified by this input that is cheating.

    Cheating is that HHH returns that DD would not halt *if it called
    a non-aborting simulator*.


    When 0 to ∞ instructions of DD are correctly
    simulated by HHH this simulated DD never reaches
    its own simulated "return" statement final halt state.

    Indeed, for all those different HHH we can construct a different DD for
    which HHH fails to reach the final halt state.
    We can also show that each of these different DD have a final halt
    state, which can be reached by a correct simulator.
    This is expected and is additional support for the halting theorem.



    *This code correctly predicts that behavior*
    Lines 996 through 1006 matches the
    *recursive simulation non-halting behavior pattern* https://github.com/plolcott/x86utm/blob/master/Halt7.c



    No, the assumption that it sees a non-termination behaviour patter is incorrect. It fails to see that it is only a finite pattern.
    It fails to analyse the conditional branch instructions correctly during
    the simulation. It did not prove that the conditions for the alternate
    branches will never be met when the simulation would be continued.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Fri Aug 22 11:38:27 2025
    On 8/19/25 10:29 AM, olcott wrote:
    On 8/19/2025 3:06 AM, joes wrote:
    Am Mon, 18 Aug 2025 18:28:06 -0500 schrieb olcott:
    On 8/18/2025 6:05 PM, Richard Heathfield wrote:
    On 18/08/2025 23:46, olcott wrote:
    On 8/18/2025 5:13 PM, Richard Heathfield wrote:


    It is an easily verified fact, as you love to say, that if DD calls HHH >>>> (as it does) and HHH calls DD (as, through simulation, it effectively
    does) that HHH(DD) can never halt naturally, so it will have to abort
    the recursion and report its result as 0 - didn't halt.
    Good.

    Precisely /because/ that fact is so easily verified, it is safe and
    correct for HHH to replace a simulated call to HHH(DD) with a 0, catch >>>> that 0 return value, and continue with the simulation.

    *That is cheating and you know it* Why lie?
    The rest of what you say is based on this same cheat.

    It’s not cheating. If we know the result, we can skip the whole
    calculation. I can just write return 4 instead of 2+2.


    That is the kind of changing the input that
    changes the behavior specified by this input
    that is cheating.

    That isn't changing the input, it is not going through work that you
    know the answer for.

    What IS cheating is changing the code of the input from calling the
    decider that aborts to the other one that doesn't.



    Since it is therefore possible for the simulation to continue after
    all, it is erroneous to refrain.
    HHH is therefore compelled to conclude:

    (a) that the recursion will never halt unless aborted;
    (b) the recursion must yield 0;
    (c) DD must therefore skip the if and return 0 (meaning that it never
    halts) while in the very act of halting.

    In other words, even when/if you fix your simulator, it will still get >>>> the answer wrong.



    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)