• Re: How is this answer not self-evident ? --- Recursive simulation

    From Mr Flibble@21:1/5 to olcott on Sat Aug 23 17:01:12 2025
    On Sat, 23 Aug 2025 11:56:28 -0500, olcott wrote:

    On 8/23/2025 11:41 AM, Mr Flibble wrote:
    On Sat, 23 Aug 2025 11:23:51 -0500, olcott wrote:

    On 8/23/2025 10:33 AM, Mr Flibble wrote:
    On Sat, 23 Aug 2025 10:25:29 -0500, olcott wrote:

    On 8/23/2025 9:26 AM, Bonita Montero wrote:
    Am 23.08.2025 um 16:16 schrieb olcott:

    The actual case is that you are too f-cking stupid to find any
    mistake in my work.

    I wonder why one has to pursue such a question so paranoidly for
    years.
    I mean, it's nothing that has practical relevance. And I can't
    understand why others here are arguing so vehemently against it.
    It's obvious that Pete is crazy. It's best not to respond at all,
    then maybe it will calm down.

    The analog of the technology applied to the HP proofs equally
    applies to the Tarski Undecidability theorem thus enabling a Boolean >>>>> True(Language L, Expression E)
    to return TRUE for all expressions E of language L that are proven
    true on the basis of their meaning.

    True("English", "Donald Trump lied about election fraud")==TRUE
    True("English", "Severe climate change is caused by humans")==TRUE

    True("English", "Halting Problem proofs have not been refuted by
    Olcott")==TRUE

    /Flibble

    True("English",
    "Halting Problem proofs have not"
    "yet been completely refuted by Olcott")==TRUE

    *This is proven entirely true on the sole basis of its meaning*
    When 0 to ∞ instructions of DD are correctly simulated by HHH this
    simulated DD never reaches its own simulated "return" statement final
    halt state.

    The simulated DD may never reach its final state but nobody cares about
    what your simulation does,

    *Unless they pay attention to this*
    Turing machine deciders only compute the mapping from their inputs...

    and also realize that DD correctly simulated by HHH does correctly
    measure the actual behavior actually specified by the actual input...

    what actually matters is what HHH reports (and

    Not at all. Not in the least little bit.

    It is all that matters as far as the Halting Problem is concerned: a halt decider must report a decision to its caller. Why don't you just admit
    that you are not working on the Halting Problem and its proofs at all?

    What matters is what HHH(DD) should report on the basis of the actual behavior that the actual input actually specifies as correctly measured
    by DD correctly simulated by HHH.

    Thus we can know that HHH(DD)==0 is correct.

    If HHH(DD) reports non-halting to its CALLER, DD(), then DD() will halt
    thus confirming that HHH gave the incorrect answer and that the extant
    Haling Problem proofs remain unrefuted by you.

    /Flibble

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mr Flibble@21:1/5 to olcott on Sat Aug 23 17:07:23 2025
    On Sat, 23 Aug 2025 12:04:00 -0500, olcott wrote:

    On 8/23/2025 12:01 PM, Mr Flibble wrote:
    On Sat, 23 Aug 2025 11:56:28 -0500, olcott wrote:

    On 8/23/2025 11:41 AM, Mr Flibble wrote:
    On Sat, 23 Aug 2025 11:23:51 -0500, olcott wrote:

    On 8/23/2025 10:33 AM, Mr Flibble wrote:
    On Sat, 23 Aug 2025 10:25:29 -0500, olcott wrote:

    On 8/23/2025 9:26 AM, Bonita Montero wrote:
    Am 23.08.2025 um 16:16 schrieb olcott:

    The actual case is that you are too f-cking stupid to find any >>>>>>>>> mistake in my work.

    I wonder why one has to pursue such a question so paranoidly for >>>>>>>> years.
    I mean, it's nothing that has practical relevance. And I can't >>>>>>>> understand why others here are arguing so vehemently against it. >>>>>>>> It's obvious that Pete is crazy. It's best not to respond at all, >>>>>>>> then maybe it will calm down.

    The analog of the technology applied to the HP proofs equally
    applies to the Tarski Undecidability theorem thus enabling a
    Boolean True(Language L, Expression E)
    to return TRUE for all expressions E of language L that are proven >>>>>>> true on the basis of their meaning.

    True("English", "Donald Trump lied about election fraud")==TRUE
    True("English", "Severe climate change is caused by humans")==TRUE >>>>>>
    True("English", "Halting Problem proofs have not been refuted by
    Olcott")==TRUE

    /Flibble

    True("English",
    "Halting Problem proofs have not"
    "yet been completely refuted by Olcott")==TRUE

    *This is proven entirely true on the sole basis of its meaning*
    When 0 to ∞ instructions of DD are correctly simulated by HHH this >>>>> simulated DD never reaches its own simulated "return" statement
    final halt state.

    The simulated DD may never reach its final state but nobody cares
    about what your simulation does,

    *Unless they pay attention to this*
    Turing machine deciders only compute the mapping from their inputs...

    and also realize that DD correctly simulated by HHH does correctly
    measure the actual behavior actually specified by the actual input...

    what actually matters is what HHH reports (and

    Not at all. Not in the least little bit.

    It is all that matters as far as the Halting Problem is concerned: a
    halt decider must report a decision to its caller. Why don't you just
    admit that you are not working on the Halting Problem and its proofs at
    all?


    Because that would be false.

    What matters is what HHH(DD) should report on the basis of the actual
    behavior that the actual input actually specifies as correctly
    measured by DD correctly simulated by HHH.

    Thus we can know that HHH(DD)==0 is correct.

    If HHH(DD) reports non-halting to its CALLER, DD(), then DD() will halt
    thus confirming that HHH gave the incorrect answer and that the extant
    Haling Problem proofs remain unrefuted by you.

    /Flibble

    Do I need to repeat this 100 million times before you ever notice that I
    said it at least once?

    Turing machine deciders only compute the mapping from their inputs..

    How many times must I repeat to you that DD(), the caller of HHH, should
    pass a *description* of itself to HHH; it is quite valid for DD to take on
    two roles: caller and input.

    /Flibble

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to olcott on Sat Aug 23 18:44:02 2025
    On 23/08/2025 18:12, olcott wrote:
    On 8/23/2025 12:07 PM, Mr Flibble wrote:
    On Sat, 23 Aug 2025 12:04:00 -0500, olcott wrote:

    <80-odd lines snipped>

    Turing machine deciders only compute the mapping from their
    inputs..

    How many times must I repeat to you that DD(), the caller of
    HHH, should
    pass a *description* of itself to HHH; it is quite valid for DD
    to take on
    two roles: caller and input.

    /Flibble

    In the same way that when Bill's identical twin brother
    Bob robs a liquor store that Bill is equally guilty
    because he looks the same as Bob.

    Please explain what you imagine your analogy clarifies about your
    claim.

    --
    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 Damon@21:1/5 to olcott on Sat Aug 23 14:17:00 2025
    On 8/23/25 1:25 PM, olcott wrote:
    On 8/23/2025 12:17 PM, dbush wrote:
    On 8/23/2025 1:04 PM, olcott wrote:
    On 8/23/2025 12:01 PM, Mr Flibble wrote:
    On Sat, 23 Aug 2025 11:56:28 -0500, olcott wrote:

    On 8/23/2025 11:41 AM, Mr Flibble wrote:
    On Sat, 23 Aug 2025 11:23:51 -0500, olcott wrote:

    On 8/23/2025 10:33 AM, Mr Flibble wrote:
    On Sat, 23 Aug 2025 10:25:29 -0500, olcott wrote:

    On 8/23/2025 9:26 AM, Bonita Montero wrote:
    Am 23.08.2025 um 16:16 schrieb olcott:

    The actual case is that you are too f-cking stupid to find any >>>>>>>>>>> mistake in my work.

    I wonder why one has to pursue such a question so paranoidly for >>>>>>>>>> years.
    I mean, it's nothing that has practical relevance. And I can't >>>>>>>>>> understand why others here are arguing so vehemently against it. >>>>>>>>>> It's obvious that Pete is crazy. It's best not to respond at all, >>>>>>>>>> then maybe it will calm down.

    The analog of the technology applied to the HP proofs equally >>>>>>>>> applies to the Tarski Undecidability theorem thus enabling a >>>>>>>>> Boolean
    True(Language L, Expression E)
    to return TRUE for all expressions E of language L that are proven >>>>>>>>> true on the basis of their meaning.

    True("English", "Donald Trump lied about election fraud")==TRUE >>>>>>>>> True("English", "Severe climate change is caused by humans")==TRUE >>>>>>>>
    True("English", "Halting Problem proofs have not been refuted by >>>>>>>> Olcott")==TRUE

    /Flibble

    True("English",
    "Halting Problem proofs have not"
    "yet been completely refuted by Olcott")==TRUE

    *This is proven entirely true on the sole basis of its meaning*
    When 0 to ∞ instructions of DD are correctly simulated by HHH this >>>>>>> simulated DD never reaches its own simulated "return" statement
    final
    halt state.

    The simulated DD may never reach its final state but nobody cares
    about
    what your simulation does,

    *Unless they pay attention to this*
    Turing machine deciders only compute the mapping from their inputs... >>>>>
    and also realize that DD correctly simulated by HHH does correctly
    measure the actual behavior actually specified by the actual input... >>>>>
    what actually matters is what HHH reports (and

    Not at all. Not in the least little bit.

    It is all that matters as far as the Halting Problem is concerned: a
    halt
    decider must report a decision to its caller.  Why don't you just admit >>>> that you are not working on the Halting Problem and its proofs at all? >>>>

    Because that would be false.


    Yet you claimed the opposite as shown below:



    Liar


    So, you didn't make that claim and think it is wrong?

    Note, trimming what you claim to be the lie is a common technique of pathological liars

    That statement was:


    On 8/19/2025 6:01 PM, olcott wrote:
    On 8/19/2025 4:42 PM, dbush wrote:
    His argument is that the decision that X(Y) is making is not "does
    algorithm Y halt", but basically "does there exist an implementation
    of function X that can simulate function call Y() to completion?"


    Yes.

    This happens to coincide with the halting function in cases where

    Yes

    function Y does not call function X at some point, but not in cases
    where it does.


    Note, either you think that "Halting" and "Non-Halting" are determined
    by the definition of the running of the program specified as defined in
    the halting problem,

    or, as was stated here, based on does there exist an inplementation of
    the function X that can simulate function Y to completion, where Y's
    reference to "X" changes based on that representation,

    or. something else you haven't stated.

    If you call that quote a lie, you must agree that the behavior of the
    iinput *IS* defined by the behavior of the program it represents, which includes the code of the exact decider that it was built on (and is the
    one that is being shown to give the wrong answer).

    And thus, you are agreeing that since that DD() halts, your HHH(DD)
    returning 0 is just wrong.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Sat Aug 23 14:28:15 2025
    On 8/23/25 1:52 PM, olcott wrote:
    On 8/23/2025 12:46 PM, Waldek Hebisch wrote:
    In comp.lang.c Bonita Montero <Bonita.Montero@gmail.com> wrote:
    Am 23.08.2025 um 16:41 schrieb Richard Heathfield:
    On 23/08/2025 15:26, Bonita Montero wrote:
    Am 23.08.2025 um 16:16 schrieb olcott:

    The actual case is that you are too f-cking
    stupid to find any mistake in my work.

    I wonder why one has to pursue such a question so paranoidly
    for years. I mean, it's nothing that has practical relevance.

    I beg your pardon?

    If he's right, the conventional proof of the undecidability of the
    Halting Problem is flawed. You don't think that matters?

    That has no practical relevance.

    It has more relevance than you want to admit.  If Pete had working
    halting decider he would not waste time on newsgroups.  He would
    be making money, possibly as a service to business.  Or he would
    generate a lot of bitcoins.  Or turn to illegal activity, for
    example break encryption and use the break to hijack money flowing
    in electronic exchanges.

    Note that basically one call to halting decider gives you one
    bit towards solution of arbitrary problem, with cost depending
    only on length of problem description.  Few thousends of calls
    and you have broken RSA as it is currently used.

    But Pete does not have working halting decider, so instead he tries
    to get some attention in newsgroups.  And that works quite well,
    for many years he gets many replies.  It is not clear if he has
    psychic problem.  Maybe he just has fun wasting others time
    (which you could argue is a psychic problem too, but relatively
    light compared to first alternative).


    I have conclusively proved that in the conventional
    halting problem proofs the decider H would be correct
    to reject its input P on the basis that P correctly
    simulated by H cannot possibly reach its own simulated
    final halt state.

    That people ignore this verified fact as the basis
    for denigrating my work and my character is the
    kind of reckless disregard for the truth that loses
    defamation cases.


    No, you have proved yourself a LIAR, as the criteria for the Halting
    Problem is NOT the nonsense condition of "the input correctly simulated
    by the decider", unless THAT decide is the one that actually does the
    correct simulation, and that can NEVER indicate non-halting.

    The fact that your claim is ACTUALLY about some other input, based on a different decider than this one, being simulated by some other program.

    Since the inputs are not the same, except in your category error world
    where neighter the decider or the input are based on programs, it is
    just invalid.

    That you call your LIES to be "Verified Facts" just shows you to be a pathological liar.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to olcott on Sat Aug 23 21:36:01 2025
    On 2025-08-23, olcott <polcott333@gmail.com> wrote:
    On 8/23/2025 12:07 PM, Mr Flibble wrote:
    How many times must I repeat to you that DD(), the caller of HHH, should
    pass a *description* of itself to HHH; it is quite valid for DD to take on >> two roles: caller and input.

    /Flibble

    In the same way that when Bill's identical twin brother
    Bob robs a liquor store that Bill is equally guilty
    because he looks the same as Bob.

    That's silly. Two copies (or even different implementations) of exactly
    the same algorithm are one and the same in the same way that identical
    twins are not.

    It seems as if your reasoning about entity equivalence has not reached maturity.

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @Kazinator@mstdn.ca

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Sat Aug 23 19:00:59 2025
    On 8/23/25 5:45 PM, olcott wrote:
    On 8/23/2025 4:36 PM, Kaz Kylheku wrote:
    On 2025-08-23, olcott <polcott333@gmail.com> wrote:
    On 8/23/2025 12:07 PM, Mr Flibble wrote:
    How many times must I repeat to you that DD(), the caller of HHH,
    should
    pass a *description* of itself to HHH; it is quite valid for DD to
    take on
    two roles: caller and input.

    /Flibble

    In the same way that when Bill's identical twin brother
    Bob robs a liquor store that Bill is equally guilty
    because he looks the same as Bob.

    That's silly. Two copies (or even different implementations) of exactly
    the same algorithm are one and the same in the same way that identical
    twins are not.


    Not when one of these identical two functions has
    an input that calls itself HHH(DD) in recursive
    simulation and the other one HHH1(DD) does not have
    an input that calls itself in recursive simulation.

    But a "function" includes all of the code it uses. You are just
    confusing your problem domains. "Functions" in Computation Theory (more properly called algorithms) include ALL the code they use, including
    anything they "call".


    In this case it is obvious that DD correctly simulated
    by HHH specifies a different sequence of steps than DD
    correctly simulated by HHH1.

    Nopw, just shows you stop your logic too soon.


    *Between you and Mike I may actually get closure on this*
    I am still working out how HHH(DD) can see the repeating
    state of its correct simulation of its input without static
    data.



    You mean when it doesn't do it, so the statement is a contadiction?

    Remember, it needs to see the correct simulation of the PROGRAM that the
    input represents, which means it has the code of the HHH that is giving
    the answer, not the non-existant version that does an unaborted simulation.


    It seems as if your reasoning about entity equivalence has not reached
    maturity.



    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Sun Aug 24 05:53:23 2025
    Am Sat, 23 Aug 2025 16:45:30 -0500 schrieb olcott:
    On 8/23/2025 4:36 PM, Kaz Kylheku wrote:

    That's silly. Two copies (or even different implementations) of exactly
    the same algorithm are one and the same in the same way that identical
    twins are not.
    Not when one of these identical two functions has an input that calls
    itself HHH(DD) in recursive simulation and the other one HHH1(DD) does
    not have an input that calls itself in recursive simulation.

    Not when they are actually the same! There is no notion of „itself”.
    They both get the same input and produce indistinguishable traces.

    In this case it is obvious that DD correctly simulated by HHH specifies
    a different sequence of steps than DD correctly simulated by HHH1.

    *Between you and Mike I may actually get closure on this* I am still
    working out how HHH(DD) can see the repeating state of its correct
    simulation of its input without static data.
    I’m not a C programmer, but what’s the problem? What do you need the
    static data *for*?

    --
    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 Richard Damon on Sun Aug 24 12:34:40 2025
    On 24/08/2025 12:19, Richard Damon wrote:
    On 8/24/25 1:53 AM, joes wrote:

    <snip>

    I’m not a C programmer, but what’s the problem? What do you
    need the
    static data *for*?


    To do something that he can't do without it, his outer simulator
    can't figure out what the inner version is doing without its help.

    That's fair enough, though, surely? It's not as if it's doing
    anything that couldn't be done with a pointer argument?

    HHH could palm off the recursive bit to an HHHH - what's another
    H? - as in HHHH(DD, &state), where state is a struct containing
    HHH's world, his dog, and his oyster, and then every invocation
    can happily share state with every other invocation. Shit design,
    but I don't quite see how it could be considered "cheating". I
    see a lot of cheating in his thinking, but somehow I can't see
    myself as adding that one to the list.

    --
    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 Damon@21:1/5 to joes on Sun Aug 24 07:19:33 2025
    On 8/24/25 1:53 AM, joes wrote:
    Am Sat, 23 Aug 2025 16:45:30 -0500 schrieb olcott:
    On 8/23/2025 4:36 PM, Kaz Kylheku wrote:

    That's silly. Two copies (or even different implementations) of exactly
    the same algorithm are one and the same in the same way that identical
    twins are not.
    Not when one of these identical two functions has an input that calls
    itself HHH(DD) in recursive simulation and the other one HHH1(DD) does
    not have an input that calls itself in recursive simulation.

    Not when they are actually the same! There is no notion of „itself”.
    They both get the same input and produce indistinguishable traces.

    In this case it is obvious that DD correctly simulated by HHH specifies
    a different sequence of steps than DD correctly simulated by HHH1.

    *Between you and Mike I may actually get closure on this* I am still
    working out how HHH(DD) can see the repeating state of its correct
    simulation of its input without static data.
    I’m not a C programmer, but what’s the problem? What do you need the static data *for*?


    To do something that he can't do without it, his outer simulator can't
    figure out what the inner version is doing without its help.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to Richard Heathfield on Sun Aug 24 07:52:35 2025
    On 8/24/25 7:34 AM, Richard Heathfield wrote:
    On 24/08/2025 12:19, Richard Damon wrote:
    On 8/24/25 1:53 AM, joes wrote:

    <snip>

    I’m not a C programmer, but what’s the problem? What do you need the >>> static data *for*?


    To do something that he can't do without it, his outer simulator can't
    figure out what the inner version is doing without its help.

    That's fair enough, though, surely? It's not as if it's doing anything
    that couldn't be done with a pointer argument?

    HHH could palm off the recursive bit to an HHHH - what's another H? - as
    in HHHH(DD, &state), where state is a struct containing HHH's world, his
    dog, and his oyster, and then every invocation can happily share state
    with every other invocation. Shit design, but I don't quite see how it
    could be considered "cheating". I see a lot of cheating in his thinking,
    but somehow I can't see myself as adding that one to the list.


    Yes, but then he makes his deception explicit and can't lie that he is
    doing things per the proof.

    A Halt decider (or other program) doesn't take a pointer argument to a
    data space for a simulated halt decider to put information in.

    The problem is HHH doesn't control the code of DD, so it can't add that parameter to the call.

    Olcott NEEDS his claimed decider to be able to do things programs can't
    do to try to pull of his claims.

    If he even tried to make real Turing Machines to form his proof, he
    would find it totally impossible, as his proof is based on non-Turing compatible behavior, making it less than Turing Complete.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Richard Damon on Sun Aug 24 14:25:05 2025
    On 24/08/2025 12:52, Richard Damon wrote:
    On 8/24/25 7:34 AM, Richard Heathfield wrote:

    <snip>

    HHH could palm off the recursive bit to an HHHH - what's
    another H? - as in HHHH(DD, &state), where state is a struct
    containing HHH's world, his dog, and his oyster, and then every
    invocation can happily share state with every other invocation.
    Shit design, but I don't quite see how it could be considered
    "cheating". I see a lot of cheating in his thinking, but
    somehow I can't see myself as adding that one to the list.


    Yes, but then he makes his deception explicit and can't lie that
    he is doing things per the proof.

    Well, we already know that, so I don't think he has anything to lose.

    A Halt decider (or other program) doesn't take a pointer argument
    to a data space for a simulated halt decider to put information in.

    What says so? Surely a halt decider that Gets The Job Done would
    be good enough, as long as it remains a state machine?

    The problem is HHH doesn't control the code of DD, so it can't
    add that parameter to the call.

    Doesn't have to. That's why the extra H. You move all the heavy
    lifting into HHHH, and HHH becomes a mere wrapper to be called by DD.

    int HHH(ptr P)
    {
    State state = {0};

    return HHHH(P, &state);
    }

    Olcott NEEDS his claimed decider to be able to do things programs
    can't do to try to pull of his claims.

    Are you claiming that he's talking BS? No argument here, I assure
    you; *of course* he's talking BS, but I don't see why people are
    beating him up over static data when it's so easy in C to share
    information across functions when you need to.

    If he even tried to make real Turing Machines to form his proof,
    he would find it totally impossible, as his proof is based on
    non-Turing compatible behavior, making it less than Turing Complete.

    For as long as his "proof" depends on simulating one line of DD
    and ignoring the other three, he doesn't have a proof that holds
    water and he's deluding himself[1] if he thinks otherwise, but as
    far as I'm concerned he can have all the static he can drink.

    [1] Who knew?

    --
    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 Andy Walker@21:1/5 to Richard Heathfield on Sun Aug 24 16:44:29 2025
    On 24/08/2025 14:25, Richard Heathfield wrote:
    [...] I don't see why people are
    beating [PO] up over static data when it's so easy in C to share
    information across functions when you need to.

    I don't see why people are beating him up over anything to do
    with his programs, beyond their technical correctness and results.
    We don't need to write [putative] halt deciders as TMs, nor under any restrictions as to what features of C [or Algol or ...] may or may
    not be used. PO would become famous [beyond being the record holder
    for most posts in a career] for any program that actually solved the
    HP, no matter how it did it [short of magic]; and almost as famous
    for establishing that one of the standard proofs was significantly
    in error.

    --
    Andy Walker, Nottingham.
    Andy's music pages: www.cuboid.me.uk/andy/Music
    Composer of the day: www.cuboid.me.uk/andy/Music/Composers/Leybach

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to olcott on Sun Aug 24 17:55:36 2025
    On 24/08/2025 17:19, olcott wrote:
    On 8/24/2025 10:44 AM, Andy Walker wrote:
    On 24/08/2025 14:25, Richard Heathfield wrote:
    [...] I don't see why people are
    beating [PO] up over static data when it's so easy in C to share
    information across functions when you need to.

         I don't see why people are beating him up over anything to do
    with his programs, beyond their technical correctness and results.
    We don't need to write [putative] halt deciders as TMs, nor
    under any
    restrictions as to what features of C [or Algol or ...] may or may
    not be used.  PO would become famous [beyond being the record
    holder
    for most posts in a career] for any program that actually
    solved the
    HP, no matter how it did it [short of magic];  and almost as
    famous
    for establishing that one of the standard proofs was significantly
    in error.


    For these cases, we can turn to our second weapon -- emulation.

    You should have quit while you were ahead. Andy makes a good
    point above; if only you were right, nobody would care how you
    got there.


    We want to know whether a program halts, so we try it. If it
    halts, then we know the answer.

    And yet DD halts, but your decider claims that it doesn't.
    Knowing the answer ain't much good if it's the wrong answer.

    <snip>

    --
    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 Mr Flibble@21:1/5 to olcott on Sun Aug 24 16:24:15 2025
    On Sun, 24 Aug 2025 11:19:28 -0500, olcott wrote:

    On 8/24/2025 10:44 AM, Andy Walker wrote:
    On 24/08/2025 14:25, Richard Heathfield wrote:
    [...] I don't see why people are beating [PO] up over static data when
    it's so easy in C to share information across functions when you need
    to.

        I don't see why people are beating him up over anything to do
    with his programs, beyond their technical correctness and results. We
    don't need to write [putative] halt deciders as TMs, nor under any
    restrictions as to what features of C [or Algol or ...] may or may not
    be used.  PO would become famous [beyond being the record holder for
    most posts in a career] for any program that actually solved the HP, no
    matter how it did it [short of magic];  and almost as famous for
    establishing that one of the standard proofs was significantly in
    error.


    For these cases, we can turn to our second weapon -- emulation. We want
    to know whether a program halts, so we try it. If it halts, then we know
    the answer. If it doesn't halt, then `it must be in a loop', so we
    monitor its state and `detect the loop'. Sadly, although this is in one
    sense correct, it is a false dichotomy. At any given moment as the
    emulation proceeds, we are in one of not two but three states: the
    program has halted, or it is looping, or it is still running and has not
    yet entered a loop. It's the third case that kills us -- we just have to
    keep going, and wait for one of the other two things to happen. The
    trouble is that it may be that neither of them ever happens -- which is
    why `it must be in a loop' was in quotes above. https://www.cuboid.me.uk/anw/G12FCO/lect18.html

    *Repeating state detected in the execution trace of the emulated input*
    The execution trace of the input is watched in DebugStep() mode.

    *Summed up concisely here* https://claude.ai/share/da9e56ba-f4e9-45ee-9f2c-dc5ffe10f00c

    In the diagonalization proofs it doesn't matter what halting decision a
    halt decider, given a *description* of its caller as in input, reports to
    its caller because its caller will proceed to do the exact opposite
    causing a logical contradiction.

    /Flibble



    --
    meet ever shorter deadlines, known as "beat the clock"

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Sun Aug 24 14:49:08 2025
    On 8/24/25 12:19 PM, olcott wrote:
    On 8/24/2025 10:44 AM, Andy Walker wrote:
    On 24/08/2025 14:25, Richard Heathfield wrote:
    [...] I don't see why people are
    beating [PO] up over static data when it's so easy in C to share
    information across functions when you need to.

         I don't see why people are beating him up over anything to do
    with his programs, beyond their technical correctness and results.
    We don't need to write [putative] halt deciders as TMs, nor under any
    restrictions as to what features of C [or Algol or ...] may or may
    not be used.  PO would become famous [beyond being the record holder
    for most posts in a career] for any program that actually solved the
    HP, no matter how it did it [short of magic];  and almost as famous
    for establishing that one of the standard proofs was significantly
    in error.


    For these cases, we can turn to our second weapon -- emulation. We want
    to know whether a program halts, so we try it. If it halts, then we know
    the answer. If it doesn't halt, then `it must be in a loop', so we
    monitor its state and `detect the loop'. Sadly, although this is in one
    sense correct, it is a false dichotomy. At any given moment as the
    emulation proceeds, we are in one of not two but three states: the
    program has halted, or it is looping, or it is still running and has not
    yet entered a loop. It's the third case that kills us -- we just have to
    keep going, and wait for one of the other two things to happen. The
    trouble is that it may be that neither of them ever happens -- which is
    why `it must be in a loop' was in quotes above. https://www.cuboid.me.uk/anw/G12FCO/lect18.html

    *Repeating state detected in the execution trace of the emulated input*
    The execution trace of the input is watched in DebugStep() mode.

    *Summed up concisely here* https://claude.ai/share/da9e56ba-f4e9-45ee-9f2c-dc5ffe10f00c



    Except you can't always detect if it *IS* in a loop, as the state never repeats.

    Note, your claim of repeated state is actually a LIE, as no process has
    reach a state IT was previously in. The problem is you ignore that the
    first process created WILL abort its simulation and halt, because you
    ignore that possibility by using wrong definitions.

    This is proven to NOT be a non-halting state, as the program halts when
    actualy correctly simulated.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to Andy Walker on Sun Aug 24 14:58:30 2025
    On 8/24/25 11:44 AM, Andy Walker wrote:
    On 24/08/2025 14:25, Richard Heathfield wrote:
    [...] I don't see why people are
    beating [PO] up over static data when it's so easy in C to share
    information across functions when you need to.

        I don't see why people are beating him up over anything to do
    with his programs, beyond their technical correctness and results.
    We don't need to write [putative] halt deciders as TMs, nor under any restrictions as to what features of C [or Algol or ...] may or may
    not be used.  PO would become famous [beyond being the record holder
    for most posts in a career] for any program that actually solved the
    HP, no matter how it did it [short of magic];  and almost as famous
    for establishing that one of the standard proofs was significantly
    in error.


    The problem is that a Halt Decider, by definition, must be the
    equivalent of a "Computation", as since a given input will always
    represent a Computation, and thus always do the same thing, the correct
    answer for that computation must be consistant, and thus the Halt
    Decider can't change its answer based on context.

    His "trick" breaks the simplified version of the input that allows the non-compuatation to possible get a correct answer for that given input
    (though his answer isn't). But, if we built the input program actually
    be the proofs definition so it IS a computation by using an independent
    copy of HHH that doesn't provide the back channel, which breaks his
    attempt at an argument of changing the instance of HHH changing the
    input (since it no longer is refers to that instance, but a fresh copy
    of the original)

    He tries to prevent that by a "rule" that you can't actually make a copy
    of his HHH, which is just an admission that his system is not Turing
    Complete, and for non-Turing Complete system, the halting problem just
    isn't interesting, as many non-Turing Complete systems support full Halt Deciding.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to Richard Heathfield on Sun Aug 24 14:41:25 2025
    On 8/24/25 9:25 AM, Richard Heathfield wrote:
    On 24/08/2025 12:52, Richard Damon wrote:
    On 8/24/25 7:34 AM, Richard Heathfield wrote:

    <snip>

    HHH could palm off the recursive bit to an HHHH - what's another H? -
    as in HHHH(DD, &state), where state is a struct containing HHH's
    world, his dog, and his oyster, and then every invocation can happily
    share state with every other invocation. Shit design, but I don't
    quite see how it could be considered "cheating". I see a lot of
    cheating in his thinking, but somehow I can't see myself as adding
    that one to the list.


    Yes, but then he makes his deception explicit and can't lie that he is
    doing things per the proof.

    Well, we already know that, so I don't think he has anything to lose.

    A Halt decider (or other program) doesn't take a pointer argument to a
    data space for a simulated halt decider to put information in.

    What says so? Surely a halt decider that Gets The Job Done would be good enough, as long as it remains a state machine?

    Because the problem states the "API" of the decider. Since the answer is
    only a function of the program to be decided, and that programs input
    (in this case nothing) that is all it gets.


    The problem is HHH doesn't control the code of DD, so it can't add
    that parameter to the call.

    Doesn't have to. That's why the extra H. You move all the heavy lifting
    into HHHH, and HHH becomes a mere wrapper to be called by DD.

    But, that doesn't do anything, as by definition, the decider that is
    being refuted is HHH, and thus the two instances of HHHH are given
    different "state" variables since they are called by two different
    instances of HHH.


    int HHH(ptr P)
    {
      State state = {0};

      return HHHH(P, &state);
    }

    Olcott NEEDS his claimed decider to be able to do things programs
    can't do to try to pull of his claims.

    Are you claiming that he's talking BS? No argument here, I assure you;
    *of course* he's talking BS, but I don't see why people are beating him
    up over static data when it's so easy in C to share information across functions when you need to.

    Because the problem isn't about C functions, but computations, which
    can't do that.

    C functions that share data like that can be part of the SAME
    computation, since then the sharing is within the computation, which is allowed. >
    If he even tried to make real Turing Machines to form his proof, he
    would find it totally impossible, as his proof is based on non-Turing
    compatible behavior, making it less than Turing Complete.

    For as long as his "proof" depends on simulating one line of DD and
    ignoring the other three, he doesn't have a proof that holds water and
    he's deluding himself[1] if he thinks otherwise, but as far as I'm
    concerned he can have all the static he can drink.

    [1] Who knew?

    The static data doesn't affect the problem as actuallly stated, because
    that refers to HHH(DD) needing to return the behavior of DD directly run.

    But, if the criteria is changed to the "correct simulation of the input"
    (which isn't required to be a computation) then the HHH called by DD
    might return a different value in the simulation as the diffectly called
    HHH, and it can be built to return a correct answer by having the call
    to HHH in DD be affected by the fact that it is being simulated.

    Of course, he rejects that solution as it makes the correct answer the
    wrong one for his argument.

    Note also, part of his use of static data is to get information that the decider can't actually get otherwise in a proper Turing Complete system,
    which his whole system depends on. The problem is if his decider
    actually took in a full representation of another program, he can't as
    easily detect the "recursive" call, as it is no longer actually
    recursive, as HHH will simulated DD calling another DIFFERENT instance
    of a functionally identical HHH, the detecting of which is functionally
    an unsolvable problem. (you can detect only some instance that do it in
    a specific way, and can't if the caller makes an effort to hide it).

    This just totally breaks his method.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Richard Damon on Sun Aug 24 20:26:14 2025
    On 24/08/2025 19:58, Richard Damon wrote:
    He tries to prevent that by a "rule" that you can't actually make
    a copy of his HHH

    Curiouser and curiouser. How does he enforce it? Copyright?

    He doesn't get to choose the rules of Turing's game.

    (If he wants to invent his own game, fine, but who cares?)

    --
    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 Damon@21:1/5 to Richard Heathfield on Sun Aug 24 15:30:41 2025
    On 8/24/25 3:26 PM, Richard Heathfield wrote:
    On 24/08/2025 19:58, Richard Damon wrote:
    He tries to prevent that by a "rule" that you can't actually make a
    copy of his HHH

    Curiouser and curiouser. How does he enforce it? Copyright?

    He doesn't get to choose the rules of Turing's game.

    (If he wants to invent his own game, fine, but who cares?)


    Because it is HIS argument, and he refuses to acknowledge the ability to
    do it. If you ask what happens if you do that, he says it isn't allowed.

    And, because of the restrictions of the C language, you can't have two
    copies of a function named "HHH" in one module, you will need to name it something else, but in his logic the name is important.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to olcott on Sun Aug 24 21:03:23 2025
    On 2025-08-23, olcott <polcott333@gmail.com> wrote:
    On 8/23/2025 4:36 PM, Kaz Kylheku wrote:
    On 2025-08-23, olcott <polcott333@gmail.com> wrote:
    On 8/23/2025 12:07 PM, Mr Flibble wrote:
    How many times must I repeat to you that DD(), the caller of HHH, should >>>> pass a *description* of itself to HHH; it is quite valid for DD to take on >>>> two roles: caller and input.

    /Flibble

    In the same way that when Bill's identical twin brother
    Bob robs a liquor store that Bill is equally guilty
    because he looks the same as Bob.

    That's silly. Two copies (or even different implementations) of exactly
    the same algorithm are one and the same in the same way that identical
    twins are not.


    Not when one of these identical two functions has
    an input that calls itself HHH(DD) in recursive
    simulation and the other one HHH1(DD) does not have
    an input that calls itself in recursive simulation.

    In this case it is obvious that DD correctly simulated
    by HHH specifies a different sequence of steps than DD
    correctly simulated by HHH1.

    But how can you not see that this is hokey. DD is a procedure invoked
    with no arguments, If two invocations DD() are found to execute
    different steps, then DD is not a function or Turing machine. You are
    working with the wrong category of object. If you do that, your work
    doesn't say anything about a proof which restricts itself to a different category of entities.

    *Between you and Mike I may actually get closure on this*
    I am still working out how HHH(DD) can see the repeating
    state of its correct simulation of its input without static
    data.

    I don't see how you can code your way around an established theorem
    without doing something invalid (like, currently, the static data)
    and then deceiving yourself into believing that it is valid.

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @Kazinator@mstdn.ca

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andy Walker@21:1/5 to All on Sun Aug 24 23:49:04 2025
    On 24/08/2025 19:58, Richard Damon wrote:
    [I wrote:]
    [...]
         I don't see why people are beating him up over anything to do
    with his programs, beyond their technical correctness and results.
    [...]
    The problem is that a Halt Decider, by definition, must be the
    equivalent of a "Computation", as since a given input will always
    represent a Computation, and thus always do the same thing, the
    correct answer for that computation must be consistant, and thus the
    Halt Decider can't change its answer based on context.

    Again, why are you so hung up on this? If a putative halt
    decider P is given input Q that sometimes halts and sometimes doesn't,
    then I don't greatly care which answer it gives. There's no kudos at
    all in P being sometimes right and sometimes wrong; and if P is always
    right despite the right answer depending on [eg] a coin toss or the
    phase of the moon, then good for P. What would really count is if P
    always gets the right answer for Q that does have consistent behaviour.
    Equally if P is inconsistent, that just means it's sometimes wrong,
    and is therefore not interesting. If some actual P always gets the
    right answer, that either breaks the HP proofs, or disproves the
    Church-Turing thesis in an effective way, either of which would make
    the name of its perpetrator, or shows an unreasonable limitation on Q.

    His "trick" breaks the simplified version of the input that allows
    the non-compuatation to possible get a correct answer for that given
    input (though his answer isn't). [...]

    So what? Either the possible values for Q are sufficiently
    simple for the HP to be solvable for them, or they aren't. The
    results are one of

    -- of no interest at all, or
    -- a minor extension to knowledge by showing the restricted inputs
    to be, or not to be, Turing-complete, or
    -- a major surprise by breaking the HP proofs for a T-C language.

    None of this depends on whether P is, or Q describes, a "computation".

    He tries to prevent that by a "rule" that you can't actually make a
    copy of his HHH, which is just an admission that his system is not
    Turing Complete, and for non-Turing Complete system, the halting
    problem just isn't interesting, as many non-Turing Complete systems
    support full Halt Deciding.

    Yes, but it seems to me that you and others are barking up
    completely the wrong tree. There are plenty of more interesting
    trees to bark up, even if you insist on banging your head against
    the PO brick wall.

    --
    Andy Walker, Nottingham.
    Andy's music pages: www.cuboid.me.uk/andy/Music
    Composer of the day: www.cuboid.me.uk/andy/Music/Composers/Leybach

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Sun Aug 24 19:01:55 2025
    On 8/24/25 6:32 PM, olcott wrote:
    On 8/24/2025 4:03 PM, Kaz Kylheku wrote:
    On 2025-08-23, olcott <polcott333@gmail.com> wrote:
    On 8/23/2025 4:36 PM, Kaz Kylheku wrote:
    On 2025-08-23, olcott <polcott333@gmail.com> wrote:
    On 8/23/2025 12:07 PM, Mr Flibble wrote:
    How many times must I repeat to you that DD(), the caller of HHH,
    should
    pass a *description* of itself to HHH; it is quite valid for DD to >>>>>> take on
    two roles: caller and input.

    /Flibble

    In the same way that when Bill's identical twin brother
    Bob robs a liquor store that Bill is equally guilty
    because he looks the same as Bob.

    That's silly. Two copies (or even different implementations) of exactly >>>> the same algorithm are one and the same in the same way that identical >>>> twins are not.


    Not when one of these identical two functions has
    an input that calls itself HHH(DD) in recursive
    simulation and the other one HHH1(DD) does not have
    an input that calls itself in recursive simulation.

    In this case it is obvious that DD correctly simulated
    by HHH specifies a different sequence of steps than DD
    correctly simulated by HHH1.

    But how can you not see that this is hokey. DD is a procedure invoked
    with no arguments, If two invocations DD() are found to execute
    different steps, then DD is not a function or Turing machine.

    It need not be a pure function. It is
    already known that it may not halt thus
    would be no function at all.

    You are
    working with the wrong category of object. If you do that, your work
    doesn't say anything about a proof which restricts itself to a different
    category of entities.

    *Between you and Mike I may actually get closure on this*
    I am still working out how HHH(DD) can see the repeating
    state of its correct simulation of its input without static
    data.

    I don't see how you can code your way around an established theorem
    without doing something invalid (like, currently, the static data)
    and then deceiving yourself into believing that it is valid.


    Or finding an error or something overlooked by the
    proof of the theorem.

    The key most important thing that you repeatedly
    ignore is that when DD is correctly emulated by
    any HHH that can possibly exist this DD cannot
    possibly reach its own simulated "return" statement
    final halt state. This means that HHH(DD)==0 is
    correct even if HHH does not know it.

    *This single page sums it up most succinctly* https://claude.ai/share/da9e56ba-f4e9-45ee-9f2c-dc5ffe10f00c



    Except that you Program HHH doesn't correctly emulate the PROGRAM DD,
    perhaps because neither is a program, so you proof is just a category error.

    If HHH is a program (and thus DD will be too), then it will either
    answer or correctly simulate the input, and doing only one or the other
    isn't a possible statisfaction of your criteria.

    If it answer, but didn't correctly simulate, then your criteria was
    VOIDED as its conditions were not met, and there is no correct answer,
    but if it does correctly simulate the input, that means by definition it doesn't abort, and thus will nevef asnwer, and thus if also fails to
    meet your criteria.

    Thus, you never meet your criteria, and HHH never was correct.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to olcott on Mon Aug 25 01:25:59 2025
    On 24/08/2025 23:32, olcott wrote:
    On 8/24/2025 4:03 PM, Kaz Kylheku wrote:
    On 2025-08-23, olcott <polcott333@gmail.com> wrote:

    <snip>

    In this case it is obvious that DD correctly simulated
    by HHH specifies a different sequence of steps than DD
    correctly simulated by HHH1.

    But how can you not see that this is hokey. DD is a procedure
    invoked
    with no arguments, If two invocations DD() are found to execute
    different steps, then DD is not a function or Turing machine.

    It need not be a pure function. It is
    already known that it may not halt thus
    would be no function at all.

    You're working in C. It is already known that a C function is a
    function. In C, functions don't have terminate to qualify as
    functions.

    <snip>

    The key most important thing that you repeatedly
    ignore is that when DD is correctly emulated by
    any HHH that can possibly exist this DD cannot
    possibly reach its own simulated "return" statement

    DD can and does reach its own return statement. A simulation of
    DD that fails to capture this aspect of DD's behaviour is
    therefore an incorrect simulation.

    --
    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 Damon@21:1/5 to Andy Walker on Sun Aug 24 20:43:35 2025
    On 8/24/25 6:49 PM, Andy Walker wrote:
    On 24/08/2025 19:58, Richard Damon wrote:
    [I wrote:]
    [...]
         I don't see why people are beating him up over anything to do
    with his programs, beyond their technical correctness and results.
    [...]
    The problem is that a Halt Decider, by definition, must be the
    equivalent of a "Computation", as since a given input will always
    represent a Computation, and thus always do the same thing, the
    correct answer for that computation must be consistant, and thus the
    Halt Decider can't change its answer based on context.

        Again, why are  you so hung up on this?  If a putative halt decider P is given input Q that sometimes halts and sometimes doesn't,
    then I don't greatly care which answer it gives.  There's no kudos at
    all in P being sometimes right and sometimes wrong;  and if P is always right despite the right answer depending on [eg] a coin toss or the
    phase of the moon, then good for P.  What would really count is if P
    always gets the right answer for Q that does have consistent behaviour. Equally if P is inconsistent, that just means it's sometimes wrong,
    and is therefore not interesting.  If some actual P always gets the
    right answer, that either breaks the HP proofs, or disproves the Church-Turing thesis in an effective way, either of which would make
    the name of its perpetrator, or shows an unreasonable limitation on Q.

    The issue is that if HHH can shape the behavior of the non-computation,
    it can give an answer correct about "its simulation" that isn't correct
    about the running of said computation directly.

    This can make the wrong answer to seem right.


    His "trick" breaks the simplified version of the input that allows
    the non-compuatation to possible get a correct answer for that given
    input (though his answer isn't). [...]

        So what?  Either the possible values for Q are sufficiently
    simple for the HP to be solvable for them, or they aren't.  The
    results are one of

      -- of no interest at all, or
      -- a minor extension to knowledge by showing the restricted inputs
         to be, or not to be, Turing-complete, or
      -- a major surprise by breaking the HP proofs for a T-C language.

    None of this depends on whether P is, or Q describes, a "computation".

    Except that a "victory" as misdefining halting, will be carried to
    claims about the foundational meaning of "Truth", which is his ultimate
    goal.


    He tries to prevent that by a "rule" that you can't actually make a
    copy of his HHH, which is just an admission that his system is not
    Turing Complete, and for non-Turing Complete system, the halting
    problem just isn't interesting, as many non-Turing Complete systems
    support full Halt Deciding.

        Yes, but it seems to me that you and others are barking up completely the wrong tree.  There are plenty of more interesting
    trees to bark up, even if you insist on banging your head against
    the PO brick wall.


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to Andy Walker on Mon Aug 25 05:48:06 2025
    On 2025-08-24, Andy Walker <anw@cuboid.co.uk> wrote:
    On 24/08/2025 19:58, Richard Damon wrote:
    [I wrote:]
    [...]
         I don't see why people are beating him up over anything to do
    with his programs, beyond their technical correctness and results.
    [...]
    The problem is that a Halt Decider, by definition, must be the
    equivalent of a "Computation", as since a given input will always
    represent a Computation, and thus always do the same thing, the
    correct answer for that computation must be consistant, and thus the
    Halt Decider can't change its answer based on context.

    Again, why are you so hung up on this? If a putative halt
    decider P is given input Q that sometimes halts and sometimes doesn't,
    then I don't greatly care which answer it gives.

    In that situation, Q cannot be a symbol which unambiguously refers to a
    single, specific Turing Machine. Because a TM always calculates the same
    way, starting with the same contents and tape head position.

    Since halting only concerns itself with Turing Machines, and Q is
    not in that category, the behavior of P is neither here nor there.

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @Kazinator@mstdn.ca

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to olcott on Mon Aug 25 05:44:29 2025
    On 2025-08-24, olcott <polcott333@gmail.com> wrote:
    On 8/24/2025 4:03 PM, Kaz Kylheku wrote:
    On 2025-08-23, olcott <polcott333@gmail.com> wrote:
    On 8/23/2025 4:36 PM, Kaz Kylheku wrote:
    On 2025-08-23, olcott <polcott333@gmail.com> wrote:
    On 8/23/2025 12:07 PM, Mr Flibble wrote:
    How many times must I repeat to you that DD(), the caller of HHH, should >>>>>> pass a *description* of itself to HHH; it is quite valid for DD to take on
    two roles: caller and input.

    /Flibble

    In the same way that when Bill's identical twin brother
    Bob robs a liquor store that Bill is equally guilty
    because he looks the same as Bob.

    That's silly. Two copies (or even different implementations) of exactly >>>> the same algorithm are one and the same in the same way that identical >>>> twins are not.


    Not when one of these identical two functions has
    an input that calls itself HHH(DD) in recursive
    simulation and the other one HHH1(DD) does not have
    an input that calls itself in recursive simulation.

    In this case it is obvious that DD correctly simulated
    by HHH specifies a different sequence of steps than DD
    correctly simulated by HHH1.

    But how can you not see that this is hokey. DD is a procedure invoked
    with no arguments, If two invocations DD() are found to execute
    different steps, then DD is not a function or Turing machine.

    It need not be a pure function. It is
    already known that it may not halt thus
    would be no function at all.

    Pure functions can fail to halt, by way of nonterminating recursion.

    ("Pure" is actually unnecessary; we only need to emphasize that because
    of programming langauges that have used the word "function" for
    both procedures and functions.)

    I don't see how you can code your way around an established theorem
    without doing something invalid (like, currently, the static data)
    and then deceiving yourself into believing that it is valid.


    Or finding an error or something overlooked by the
    proof of the theorem.

    Where in such a tiny thing would such a gross error hide?

    The problem is that you are mystified by the theorem, because you don't
    quite understand it, which makes it seem more complicated than it is.

    The key most important thing that you repeatedly
    ignore is that when DD is correctly emulated by
    any HHH that can possibly exist this DD cannot

    In your test apparatus, if you write a main() that begins
    by calling DD(), DD() will terminate.

    That's the ground truth; you have a terminating DD().

    You've written a C function HHH (identifiable as a 'procedure" in
    computer science terms) which acts as a dispatcher for two different
    deciders: one which performs step-by-step execution and monitors for a
    certain non-terminating behavior (returning 0 upon detecting it) and one
    which just performs faithful emulation until the subject hits a return statement.

    When HHH(DD) is called as the first thing in the test case, it embarks
    on behaving as the non-termination detector. Before doing that, it also
    blows a static fuse such that any new subsequent call to HHH (emulated
    or otherwise) instead behaves as a faithful emulator without any non-termination detection.

    The DD which is subsequently emulated becomes based on the new HHH;
    that DD is now nonterminating.

    However, the HHH(DD) call at the top level is still understood
    as deciding the original DD which terminates. For that, the correct
    return value is 1, whereas HHH(DD) returns 0.

    Get it? Your decider can mutate its input all it wants; and even itself.
    But whatever value it returns is understood as pertaining to the
    original input.

    We can determine what the original input does using

    int main() { DD(); puts("DD terminated"); }

    if we see "DD terminated" then we know DD() terminates. Then if
    we run another instance of the x86utm on this case:

    int main() { printf("HHH(DD) -> %d\n", HHH(DD)); }

    we get HHH(DD) -> 0 which is wrong; we know DD terminates (and
    would not do so if HHH(DD) returned 0 to it).

    To keep your system honest, we must use a fresh execution of your x86utm
    in order to evaluate each core truth, so that the static variables
    always start in their initial state.

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @Kazinator@mstdn.ca

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to olcott on Mon Aug 25 06:50:38 2025
    On 25/08/2025 05:36, olcott wrote:
    On 8/24/2025 12:53 AM, joes wrote:
    Am Sat, 23 Aug 2025 16:45:30 -0500 schrieb olcott:
    On 8/23/2025 4:36 PM, Kaz Kylheku wrote:

    That's silly. Two copies (or even different implementations)
    of exactly
    the same algorithm are one and the same in the same way that
    identical
    twins are not.
    Not when one of these identical two functions has an input
    that calls
    itself HHH(DD) in recursive simulation and the other one
    HHH1(DD) does
    not have an input that calls itself in recursive simulation.

    Not when they are actually the same! There is no notion of
    „itself”.
    They both get the same input and produce indistinguishable traces.


    Counter-factual.

    "Tisn't" is not an intelligent observation. It can begin one, but
    to leave it there and omit an explanation of /why/ you think it's "counter-factual" is, quite simply, puerile.

    --
    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 Mon Aug 25 07:35:06 2025
    On 25/08/2025 06:49, olcott wrote:
    On 8/25/2025 12:44 AM, Kaz Kylheku wrote:

    <snip>

    In your test apparatus, if you write a main() that begins
    by calling DD(), DD() will terminate.

    That's the ground truth; you have a terminating DD().


    Counter-factual. When we get rid of the static data
    then DD() only stops running on OOM error, it never halts.

    Some of us have tried it and watched it halt. How long are you
    going to pretend otherwise?

    --
    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 Damon@21:1/5 to olcott on Mon Aug 25 07:11:46 2025
    On 8/25/25 12:36 AM, olcott wrote:
    On 8/24/2025 12:53 AM, joes wrote:
    Am Sat, 23 Aug 2025 16:45:30 -0500 schrieb olcott:
    On 8/23/2025 4:36 PM, Kaz Kylheku wrote:

    That's silly. Two copies (or even different implementations) of exactly >>>> the same algorithm are one and the same in the same way that identical >>>> twins are not.
    Not when one of these identical two functions has an input that calls
    itself HHH(DD) in recursive simulation and the other one HHH1(DD) does
    not have an input that calls itself in recursive simulation.

    Not when they are actually the same! There is no notion of „itself”.
    They both get the same input and produce indistinguishable traces.


    Counter-factual.

    Show proof with sources.

    In your world, computers can't be reliably used as programs are allowed
    to act differently every time they are run.


    In this case it is obvious that DD correctly simulated by HHH specifies
    a different sequence of steps than DD correctly simulated by HHH1.

    *Between you and Mike I may actually get closure on this* I am still
    working out how HHH(DD) can see the repeating state of its correct
    simulation of its input without static data.
    I’m not a C programmer, but what’s the problem? What do you need the
    static data *for*?




    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Mon Aug 25 07:12:26 2025
    On 8/25/25 1:49 AM, olcott wrote:
    On 8/25/2025 12:44 AM, Kaz Kylheku wrote:
    On 2025-08-24, olcott <polcott333@gmail.com> wrote:
    On 8/24/2025 4:03 PM, Kaz Kylheku wrote:
    On 2025-08-23, olcott <polcott333@gmail.com> wrote:
    On 8/23/2025 4:36 PM, Kaz Kylheku wrote:
    On 2025-08-23, olcott <polcott333@gmail.com> wrote:
    On 8/23/2025 12:07 PM, Mr Flibble wrote:
    How many times must I repeat to you that DD(), the caller of
    HHH, should
    pass a *description* of itself to HHH; it is quite valid for DD >>>>>>>> to take on
    two roles: caller and input.

    /Flibble

    In the same way that when Bill's identical twin brother
    Bob robs a liquor store that Bill is equally guilty
    because he looks the same as Bob.

    That's silly. Two copies (or even different implementations) of
    exactly
    the same algorithm are one and the same in the same way that
    identical
    twins are not.


    Not when one of these identical two functions has
    an input that calls itself HHH(DD) in recursive
    simulation and the other one HHH1(DD) does not have
    an input that calls itself in recursive simulation.

    In this case it is obvious that DD correctly simulated
    by HHH specifies a different sequence of steps than DD
    correctly simulated by HHH1.

    But how can you not see that this is hokey. DD is a procedure invoked
    with no arguments, If two invocations DD() are found to execute
    different steps, then DD is not a function or Turing machine.

    It need not be a pure function. It is
    already known that it may not halt thus
    would be no function at all.

    Pure functions can fail to halt, by way of nonterminating recursion.

    ("Pure" is actually unnecessary; we only need to emphasize that because
    of programming langauges that have used the word "function" for
    both procedures and functions.)

    I don't see how you can code your way around an established theorem
    without doing something invalid (like, currently, the static data)
    and then deceiving yourself into believing that it is valid.


    Or finding an error or something overlooked by the
    proof of the theorem.

    Where in such a tiny thing would such a gross error hide?

    The problem is that you are mystified by the theorem, because you don't
    quite understand it, which makes it seem more complicated than it is.

    The key most important thing that you repeatedly
    ignore is that when DD is correctly emulated by
    any HHH that can possibly exist this DD cannot

    In your test apparatus, if you write a main() that begins
    by calling DD(), DD() will terminate.

    That's the ground truth; you have a terminating DD().


    Counter-factual. When we get rid of the static data
    then DD() only stops running on OOM error, it never halts.


    Which shows that your algorithm can't work as a computation, and only
    works when it is a category error.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andy Walker@21:1/5 to All on Mon Aug 25 13:04:17 2025
    On 25/08/2025 06:48, Kaz Kylheku wrote:
    [I wrote (in reply to RD):]
    [...]
    Again, why are you so hung up on this? If a putative halt
    decider P is given input Q that sometimes halts and sometimes doesn't,
    then I don't greatly care which answer it gives.
    In that situation, Q cannot be a symbol which unambiguously refers to a single, specific Turing Machine. Because a TM always calculates the same
    way, starting with the same contents and tape head position.

    True. Why are people so hung up on this? ...

    Since halting only concerns itself with Turing Machines, and Q is
    not in that category, the behavior of P is neither here nor there.

    ... (a) Although "the" HP is about TMs, I suspect that people
    are also interested in the analysis of C [etc] programs, even if they
    contain references [eg] to the phase of the Moon. If P gets the right
    answer /despite/ such references, is that not more rather than less
    impressive? (b) How does "neither here nor there" differ usefully
    from "I don't greatly care"? People seem to me to be getting heated
    about something that simply doesn't matter.

    --
    Andy Walker, Nottingham.
    Andy's music pages: www.cuboid.me.uk/andy/Music
    Composer of the day: www.cuboid.me.uk/andy/Music/Composers/Kontski

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andy Walker@21:1/5 to Richard Damon on Mon Aug 25 13:18:53 2025
    On 25/08/2025 01:43, Richard Damon wrote:
    The issue is that if HHH can shape the behavior of the non-
    computation, it can give an answer correct about "its simulation"
    that isn't correct about the running of said computation directly.
    This can make the wrong answer to seem right.

    Then that is a proof that the simulation is incorrect. /That/
    is the important point, not the fact that the input does not describe
    a [fixed] computation. After all, we would all be mightily impressed
    if some putative halt decider always got the right answer /despite/
    depending on the phase of the Moon.

    [...]
    Except that a "victory" as misdefining halting, will be carried to
    claims about the foundational meaning of "Truth", which is his ultimate
    goal.

    So to prevent PO claiming "victory", you're happy to spend hours writing ~25 articles /every day/ in an attempt to rebut him. Someone is lacking a sense of proportion.

    --
    Andy Walker, Nottingham.
    Andy's music pages: www.cuboid.me.uk/andy/Music
    Composer of the day: www.cuboid.me.uk/andy/Music/Composers/Kontski

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to olcott on Mon Aug 25 15:28:51 2025
    On 25/08/2025 15:22, olcott wrote:
    On 8/25/2025 7:18 AM, Andy Walker wrote:
    On 25/08/2025 01:43, Richard Damon wrote:
    The issue is that if HHH can shape the behavior of the non-
    computation, it can give an answer correct about "its simulation"
    that isn't correct about the running of said computation
    directly.
    This can make the wrong answer to seem right.

         Then that is a proof that the simulation is incorrect.
    /That/
    is the important point, not the fact that the input does not
    describe
    a [fixed] computation.  After all, we would all be mightily
    impressed
    if some putative halt decider always got the right answer
    /despite/
    depending on the phase of the Moon.


    HHH and HHH1 have identical source-code as measured by DIFF.
    DD correctly simulated by HHH1 has the same behavior as DD().

    Except that HHH claims it doesn't halt, but we've all seen it halt.

    "Correct" means getting the answer right. 0/1 is not a pass mark.

    --
    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 Mon Aug 25 16:31:20 2025
    On 25/08/2025 16:21, olcott wrote:
    On 8/25/2025 1:35 AM, Richard Heathfield wrote:
    On 25/08/2025 06:49, olcott wrote:
    On 8/25/2025 12:44 AM, Kaz Kylheku wrote:

    <snip>

    In your test apparatus, if you write a main() that begins
    by calling DD(), DD() will terminate.

    That's the ground truth; you have a terminating DD().


    Counter-factual. When we get rid of the static data
    then DD() only stops running on OOM error, it never halts.

    Some of us have tried it and watched it halt. How long are you
    going to pretend otherwise?


    None of you have tried it. I tried it this morning.

    No, you ran a different program. When HHH(DD) returns 0 (as you
    have insisted over and over that it must), DD halts.

    --
    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 Kaz Kylheku@21:1/5 to olcott on Mon Aug 25 15:40:39 2025
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    On 8/25/2025 12:44 AM, Kaz Kylheku wrote:
    In your test apparatus, if you write a main() that begins
    by calling DD(), DD() will terminate.

    That's the ground truth; you have a terminating DD().

    Counter-factual. When we get rid of the static data
    then DD() only stops running on OOM error, it never halts.

    But the reason it then never halts is that HHH(DD) doesn't return;
    DD doesn't even get to "beave opposite" to HHH's verdict.

    And without the static data, you have the situation that HHH and DD are functions: there is one HHH and one DD.

    Thus a top-level call to HHH(DD) also doesn't return.

    The system then doesn't inform us anythnig we didn't know already: that simulating is a poor tool for deciding halting.

    When you introduce the static data which changes the behavior of
    the top-level call to DD to a halting behavior, then the top-level
    expression HHH(DD) must be understood as deciding /that/ DD,
    which makes its zero return value wrong.

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @Kazinator@mstdn.ca

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to olcott on Mon Aug 25 16:43:55 2025
    On 25/08/2025 16:33, olcott wrote:
    On 8/25/2025 10:31 AM, Richard Heathfield wrote:
    On 25/08/2025 16:21, olcott wrote:
    On 8/25/2025 1:35 AM, Richard Heathfield wrote:
    On 25/08/2025 06:49, olcott wrote:
    On 8/25/2025 12:44 AM, Kaz Kylheku wrote:

    <snip>

    In your test apparatus, if you write a main() that begins
    by calling DD(), DD() will terminate.

    That's the ground truth; you have a terminating DD().


    Counter-factual. When we get rid of the static data
    then DD() only stops running on OOM error, it never halts.

    Some of us have tried it and watched it halt. How long are
    you going to pretend otherwise?


    None of you have tried it. I tried it this morning.

    No, you ran a different program. When HHH(DD) returns 0 (as you
    have insisted over and over that it must), DD halts.


    Now that Kaz pointed out that the current HHH(DD)
    may not be a pure function of its inputs we examine
    the behavior of DD correctly simulated by HHH that
    is a pure function of its inputs.


    We know full well that when HHH(DD) yields 0 as you insist, DD
    halts because we've seen it halt. C requires it to halt. So
    HHH(DD) is... correctly if you wish... correctly getting the
    wrong answer.


    You can't hand-wave away a wrong result. If you want your name in
    lights, you have to get past peer review, and you don't have a
    snowball's of doing so as long as you insist that DD doesn't halt
    when it clearly does.

    --
    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 Kaz Kylheku@21:1/5 to olcott on Mon Aug 25 16:06:22 2025
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    HHH and HHH1 have identical source-code as measured by DIFF.

    Obviously false, if you're referring to the GNU diff:

    $ diff -u HHH.txt HHH1.txt
    @@@ -1,3 +1,3 @@
    -u32 HHH(ptr P)
    +u32 HHH1(ptr P)
    {
    u32* Aborted;
    u32* execution_trace;

    In your system, names matter, because every copy of HHH
    under a different name gets its own static fuse.

    When HHH is called the first time, and HHH1 has not yet been called,
    HHH's fuse is blown, while HHH1's is still intact.

    Good thing, then, that diff doesn't ignore the difference in name.

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @Kazinator@mstdn.ca

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mike Terry@21:1/5 to Kaz Kylheku on Mon Aug 25 17:23:26 2025
    On 25/08/2025 17:06, Kaz Kylheku wrote:
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    HHH and HHH1 have identical source-code as measured by DIFF.

    Obviously false, if you're referring to the GNU diff:

    $ diff -u HHH.txt HHH1.txt
    @@@ -1,3 +1,3 @@
    -u32 HHH(ptr P)
    +u32 HHH1(ptr P)
    {
    u32* Aborted;
    u32* execution_trace;

    In your system, names matter, because every copy of HHH
    under a different name gets its own static fuse.

    When HHH is called the first time, and HHH1 has not yet been called,
    HHH's fuse is blown, while HHH1's is still intact.

    Right. That's /exactly/ why HHH(DD) and HHH1(DD) behave differently, producing different results.

    Of course, PO has his own "magical thinking" explanation involving Pathelogical Self Reference or
    what-not. The correct explanation is simply that HHH1 is not a correct clone of HHH. (If he made
    them so, they would agree in their result. E.g. he could make the static vars global, so the same
    are used in both HHH and HHH1.)

    I think PO knows the trick he is attempting to pull here, because he has lately changed his wording
    to talk about "measuring" the difference using DIFF, as a way of trying to /imply/ correct cloning
    without explicitly saying that.

    Mike.



    Good thing, then, that diff doesn't ignore the difference in name.


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to olcott on Mon Aug 25 17:41:51 2025
    On 25/08/2025 17:33, olcott wrote:

    <snip>

    DD correctly simulated by HHH cannot possibly
    reach its own simulated "return" statement
    final halt state is proven by the fact that
    when the abort code is disabled that DD() never
    stops running.


    abort code duly removed.
    HHH(DD) returns 0 as required by P Olcott.

    $ cat dd.c
    #include <stdio.h>

    #define HHH(x) 0

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

    int main()
    {
    int hhh = HHH(DD);
    int dd = DD();

    printf("Because we got here, we know that both HHH and DD
    halted.\n");

    printf("But is that what they claim?\n\n");
    printf("HHH(DD) yields %d (%s).\n", hhh, hhh ? "halted" :
    "incorrect claim of non-halting");
    printf("DD yields %d (%s).\n", dd, dd ? "halted" : "incorrect
    claim of non-halting");

    return 0;
    }
    $ gcc -o dd dd.c
    $ ./dd
    Because we got here, we know that both HHH and DD halted.
    But is that what they claim?

    HHH(DD) yields 0 (incorrect claim of non-halting).
    DD yields 0 (incorrect claim of non-halting).

    --
    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 Mon Aug 25 18:41:29 2025
    On 25/08/2025 18:12, olcott wrote:
    On 8/25/2025 11:41 AM, Richard Heathfield wrote:
    On 25/08/2025 17:33, olcott wrote:

    <snip>

    DD correctly simulated by HHH cannot possibly
    reach its own simulated "return" statement
    final halt state is proven by the fact that
    when the abort code is disabled that DD() never
    stops running.


    abort code duly removed.
    Liar

    Liar? Really? Show me any abort code in the code I posted.

    Here it is again, with no abort code, and with HHH "correctly"
    yielding a 0 as you insist.


    $ cat dd.c
    #include <stdio.h>

    #define HHH(x) 0

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

    int main()
    {
    int hhh = HHH(DD);
    int dd = DD();

    printf("Because we got here, we know that both HHH and DD
    halted.\n");

    printf("But is that what they claim?\n\n");
    printf("HHH(DD) yields %d (%s).\n", hhh, hhh ? "halted" :
    "incorrect claim of non-halting");
    printf("DD yields %d (%s).\n", dd, dd ? "halted" : "incorrect
    claim of non-halting");

    return 0;
    }
    $ gcc -o dd dd.c
    $ ./dd
    Because we got here, we know that both HHH and DD halted.
    But is that what they claim?

    HHH(DD) yields 0 (incorrect claim of non-halting).
    DD yields 0 (incorrect claim of non-halting).



    DD halts. FACTUAL.

    --
    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 Kaz Kylheku@21:1/5 to olcott on Mon Aug 25 18:58:25 2025
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    DD correctly simulated by HHH cannot possibly
    reach its own simulated "return" statement
    final halt state is proven by the fact that
    when the abort code is disabled that DD() never
    stops running.

    When the abort code is disabled HHH(DD) never returns and that's why DD
    never stops running. DD never even gets to execute the logic that
    "behaves opposite" to HHH(DD)'s verdict.

    The fact that HHH(DD) never returns due to runaway recursion shows that
    HHH isn't a universal decider.

    In a version of your test case where the abort logic is disabled,
    you cannot obtain the result HHH(DD) -> 0.

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @Kazinator@mstdn.ca

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to olcott on Mon Aug 25 19:03:21 2025
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    On 8/25/2025 11:06 AM, Kaz Kylheku wrote:
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    HHH and HHH1 have identical source-code as measured by DIFF.

    Obviously false, if you're referring to the GNU diff:


    I am actually using the more effective
    Beyond Compare version 3.0
    Only the names and one comment are different.

    Oh, the names are different?

    So that "identical" word you used there is doing a lot of heavy lifting,
    isn't it.

    Much like when you misuse the word "itself".

    $ diff -u HHH.txt HHH1.txt
    @@@ -1,3 +1,3 @@
    -u32 HHH(ptr P)
    +u32 HHH1(ptr P)
    {
    u32* Aborted;
    u32* execution_trace;

    In your system, names matter, because every copy of HHH
    under a different name gets its own static fuse.


    When I disable to use of static data HHH1(DD)
    HHH(DD) and directly executed DD() never stop running.
    This proves that this static analysis is correct:

    When you disable the static data, then HHH1 and HHH become
    semantically identical; one can be substituted for another.

    In that modified system, things are better from a theoretical point of
    view, but do not contain the underhanded trickery which you need
    in orderto support your false rhetoric around halting.

    Both HHH1(DD) and HHH(DD) do not halt, and therefore do not
    return zero.

    Five different LLM systems formed a consensus on

    LLM is garbage, in the wrong hands, unfortuntaely, and often even in
    the right hands.

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @Kazinator@mstdn.ca

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mr Flibble@21:1/5 to olcott on Mon Aug 25 19:57:12 2025
    On Mon, 25 Aug 2025 14:49:17 -0500, olcott wrote:

    On 8/25/2025 1:58 PM, Kaz Kylheku wrote:
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    DD correctly simulated by HHH cannot possibly reach its own simulated
    "return" statement final halt state is proven by the fact that when
    the abort code is disabled that DD() never stops running.

    When the abort code is disabled HHH(DD) never returns and that's why DD
    never stops running. DD never even gets to execute the logic that
    "behaves opposite" to HHH(DD)'s verdict.


    Finally you are paying attention to this.

    The fact that HHH(DD) never returns due to runaway recursion shows that
    HHH isn't a universal decider.


    *Yes it does show this in this case*
    HHH never even aimed to be a universal decider it only aimed on
    reporting on the behavior of DD correctly simulated by HHH.

    Because HHH(DD) never stops running that does prove that HHH(DD)==0
    would be correct if HHH could return.

    In a version of your test case where the abort logic is disabled,
    you cannot obtain the result HHH(DD) -> 0.


    None-the-less five LLM static code analyzers did correctly determine
    that DD correctly simulated by HHH cannot possibly reach its own
    simulated "return"
    statement final halt state, thus HHH(DD)==0 would be correct.

    In the diagonalization proofs it doesn't matter what halting decision a
    halt decider, given a *description* of its caller as in input, reports to
    its caller because its caller will proceed to do the exact opposite
    causing a logical contradiction.

    /Flibble



    --
    meet ever shorter deadlines, known as "beat the clock"

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to olcott on Mon Aug 25 20:12:06 2025
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    On 8/25/2025 1:58 PM, Kaz Kylheku wrote:
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    DD correctly simulated by HHH cannot possibly
    reach its own simulated "return" statement
    final halt state is proven by the fact that
    when the abort code is disabled that DD() never
    stops running.

    When the abort code is disabled HHH(DD) never returns and that's why DD
    never stops running. DD never even gets to execute the logic that
    "behaves opposite" to HHH(DD)'s verdict.


    Finally you are paying attention to this.

    The fact that HHH(DD) never returns due to runaway recursion shows that
    HHH isn't a universal decider.


    *Yes it does show this in this case*
    HHH never even aimed to be a universal decider
    it only aimed on reporting on the behavior of
    DD correctly simulated by HHH.

    To do that, you first have to blow the fuse that
    pins down the DD which is to be tested. And /then/
    call HHH(DD).

    For instance:

    int main()
    {
    (void) HHH(DD); // warm up the decider; discard the result

    // DD is now the non-halting one; no more changes take place

    if (HHH(DD)) {
    ...
    } else {
    ...
    }
    }

    Because HHH(DD) never stops running that does
    prove that HHH(DD)==0 would be correct if HHH
    could return.

    That's like saying is_prime(4) would be correct if only 4 would be 1
    smaller than it is.

    There is no "would" in math, only "is" or "is not".

    Hey, you know, Escher's Waterfall would be a perpetual motion machine,
    if only the illusion could jump out of the picture.

    In a version of your test case where the abort logic is disabled,
    you cannot obtain the result HHH(DD) -> 0.


    None-the-less five LLM static code analyzers did
    correctly determine that DD correctly simulated by
    HHH cannot possibly reach its own simulated "return"
    statement final halt state, thus HHH(DD)==0 would
    be correct.

    Except that, remember, if HHH(DD) returns 0, what does DD do?
    It immediately halts.

    We cannot think about changing the behavior of HHH to suit a desired
    "would be" return value, without considering that by doing so we are
    changing the definition of DD.

    If you preserve the definition of DD while redesigning HHH to have
    a different return value, it means you now have two deciders:
    the original HHH embedded in DD, and the new decider HHH2
    which is trying to return something else.

    It comes as no surprise that when you allow two deciders, you
    can get the result you want. DD is designed to prove that HHH(DD)
    is incorrect, and that is all it has to do; it doesn't speak
    to (and doesn't have to) to HHH2(DD).

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @Kazinator@mstdn.ca

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to Andy Walker on Mon Aug 25 19:18:56 2025
    On 8/25/25 8:18 AM, Andy Walker wrote:
    On 25/08/2025 01:43, Richard Damon wrote:
    The issue is that if HHH can shape the behavior of the non-
    computation, it can give an answer correct about "its simulation"
    that isn't correct about the running of said computation directly.
    This can make the wrong answer to seem right.

        Then that is a proof that the simulation is incorrect.  /That/
    is the important point, not the fact that the input does not describe
    a [fixed] computation.  After all, we would all be mightily impressed
    if some putative halt decider always got the right answer /despite/
    depending on the phase of the Moon.

    but HHH is built on the premise that it does a correct simulation.


    [...]
    Except that a "victory" as misdefining halting, will be carried to
    claims about the foundational meaning of "Truth", which is his ultimate
    goal.

        So to prevent PO claiming "victory", you're happy to spend hours writing ~25 articles /every day/ in an attempt to rebut him.  Someone is lacking a sense of proportion.


    I only spend what I consider "free" time, and still get my more
    important work done.

    If it keeps someone us from becoming a Mr Flibble, it was worth it.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Mon Aug 25 19:28:36 2025
    On 8/25/25 10:22 AM, olcott wrote:
    On 8/25/2025 7:18 AM, Andy Walker wrote:
    On 25/08/2025 01:43, Richard Damon wrote:
    The issue is that if HHH can shape the behavior of the non-
    computation, it can give an answer correct about "its simulation"
    that isn't correct about the running of said computation directly.
    This can make the wrong answer to seem right.

         Then that is a proof that the simulation is incorrect.  /That/
    is the important point, not the fact that the input does not describe
    a [fixed] computation.  After all, we would all be mightily impressed
    if some putative halt decider always got the right answer /despite/
    depending on the phase of the Moon.


    HHH and HHH1 have identical source-code as measured by DIFF.
    DD correctly simulated by HHH1 has the same behavior as DD().

    DD correctly simulated by HHH has different behavior than
    DD correctly simulated by HHH1 because DD calls HHH(DD)
    in recursive simulation and does not call HHH1(DD) at all.

    No, because HHH doesn't correctly simulate its input.

    You have failed to show HOW the simulations can differ whild both being
    correct x86 simulations.


    A termination analyzer its required to report on the actual
    behavior that its actual input actually specifies. This is
    correctly measured by DD correctly simulated by HHH.

    *IF* it correctly simulates it, which means it doesn't abort its simulation.

    A partial simulation is NEVER a "correct" simulation, and thus never
    says the input is non-halting.


    DD correctly simulated by HHH cannot possibly reach its own
    "return" statement final halt state in any finite number of steps.

    Because *THE* HHH aborts its simulation. You don't seem to understand
    that fact, that HHH is a single machihe at a time, as the input is
    dependent on it, and thus changing HHH changes the input.


    Denying this is like denying that 2 + 3 = 5 because
    you don't believe in numbers.

    Nope, your claim is that 2 + 3 = 7 because 2 becomes 3, and 3 becomes 4.

    *THE* DD calls the HHH that give the answer, and that HHH aborts and
    returns 0, and any other input isn't it, and the only correct simulation
    of that is halting.


    [...]
    Except that a "victory" as misdefining halting, will be carried to
    claims about the foundational meaning of "Truth", which is his ultimate
    goal.

         So to prevent PO claiming "victory", you're happy to spend hours >> writing ~25 articles /every day/ in an attempt to rebut him.  Someone is
    lacking a sense of proportion.




    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Mon Aug 25 19:31:38 2025
    On 8/25/25 3:59 PM, olcott wrote:
    On 8/25/2025 2:03 PM, Kaz Kylheku wrote:
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    On 8/25/2025 11:06 AM, Kaz Kylheku wrote:
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    HHH and HHH1 have identical source-code as measured by DIFF.

    Obviously false, if you're referring to the GNU diff:


    I am actually using the more effective
    Beyond Compare version 3.0
    Only the names and one comment are different.

    Oh, the names are different?

    So that "identical" word you used there is doing a lot of heavy lifting,
    isn't it.


    When I say that HHH and HHH1 have identical source-code
    I very obviously do not mean their name.

    So, they aren't "IDENTICAL".

    I guess you don't know the meaning of the word.


    Much like when you misuse the word "itself".

    $ diff -u HHH.txt HHH1.txt
    @@@ -1,3  +1,3 @@
    -u32 HHH(ptr P)
    +u32 HHH1(ptr P)
       {
         u32* Aborted;
         u32* execution_trace;

    In your system, names matter, because every copy of HHH
    under a different name gets its own static fuse.


    When I disable to use of static data HHH1(DD)
    HHH(DD) and directly executed DD() never stop running.
    This proves that this static analysis is correct:

    When you disable the static data, then HHH1 and HHH become
    semantically identical; one can be substituted for another.


    No they remain semantically different in that DD
    still calls its own simulator HHH(DD) in recursive
    emulation and still does not call HHH1 at all.

    Which doesn't affect the semantics of ANY of the instructions of DD, so
    isn't actually a semantic difference.


    In that modified system, things are better from a theoretical point of
    view, but do not contain the underhanded trickery which you need
    in orderto support your false rhetoric around halting.


    It was never intended as underhanded trickery.
    It was important that I break through the perpetual
    gaslighting on the behavior of DD correctly simulation
    by HHH. If I could not do this then there is no sense
    making HHH a pure function of its inputs because the
    people here would simply lie abut that too.

    By gaslighting yourself by trying to believe your own lies?

    If you need to LIE to "prove" your point, it likely isn't true.


    Both HHH1(DD) and HHH(DD) do not halt, and therefore do not
    return zero.


    Unless HHH(DD) can somehow see the repeating state
    in its simulated input. A static analysis of the
    structure of the relationship between HHH and DD
    does show this. Five LLM systems and I all agree
    that this static analysis of this relationship is
    correct.

    Only because you ignore the actual behavior that HHH would do if it
    followed its rules.


    Five different LLM systems formed a consensus on

    LLM is garbage, in the wrong hands, unfortuntaely, and often even in
    the right hands.


    That they do a correct static analysis of the behavioral
    results of the relationship between HHH and DD cannot be
    correctly refuted.


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to olcott on Tue Aug 26 06:02:56 2025
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    On 8/25/2025 10:40 AM, Kaz Kylheku wrote:
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    On 8/25/2025 12:44 AM, Kaz Kylheku wrote:
    In your test apparatus, if you write a main() that begins
    by calling DD(), DD() will terminate.

    That's the ground truth; you have a terminating DD().

    Counter-factual. When we get rid of the static data
    then DD() only stops running on OOM error, it never halts.

    But the reason it then never halts is that HHH(DD) doesn't return;
    DD doesn't even get to "beave opposite" to HHH's verdict.

    And without the static data, you have the situation that HHH and DD are
    functions: there is one HHH and one DD.

    Thus a top-level call to HHH(DD) also doesn't return.

    The system then doesn't inform us anythnig we didn't know already: that
    simulating is a poor tool for deciding halting.


    No it is more than that.
    That DD correctly simulated by HHH never stops
    running does prove that HHH(DD)==0 is correct.

    If DD is correctly simulated by HHH and doesn't stop running, it means
    HHH doesn't stop running, so it never reaches any return 0.

    If HHH has some loop detecting logic in it, and if DD is
    a test case that doesn't call HHH(DD) and react to its return
    value, then sure:

    If DD is just this;

    void DD(void) { for (;;); }

    then some simulating HHH can simulate that, and while doing so
    detect infinite looping and return 0.

    That's more than anyone else has ever accomplished
    with the HP counter-example input.

    It is no longer both return values from HHH are
    contradicted. The contradictory code becomes
    unreachable.

    But HHH doesn't return, and so fails to decide the case
    that way, showing not to be a universal halt decider.

    A halting decider which tests inputs by executing them to completion
    will only ever halt and return a correct result for those inputs that
    halt. For all inputs that do not halt, it will also fail to halt,
    and thus fail to decide.

    The decider has not evaded the clever opposite-behavior code
    by not reaching it. Rather it has screwed itself so badly that
    that logic isn't even needed.

    If we know that a decider works by simulating inputs to completion,
    that's all we need to know that it's not universal;
    on any non-terminating input whatsoever.

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @Kazinator@mstdn.ca

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to olcott on Tue Aug 26 06:14:31 2025
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    On 8/25/2025 3:12 PM, Kaz Kylheku wrote:
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    On 8/25/2025 1:58 PM, Kaz Kylheku wrote:
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    DD correctly simulated by HHH cannot possibly
    reach its own simulated "return" statement
    final halt state is proven by the fact that
    when the abort code is disabled that DD() never
    stops running.

    When the abort code is disabled HHH(DD) never returns and that's why DD >>>> never stops running. DD never even gets to execute the logic that
    "behaves opposite" to HHH(DD)'s verdict.


    Finally you are paying attention to this.

    The fact that HHH(DD) never returns due to runaway recursion shows that >>>> HHH isn't a universal decider.


    *Yes it does show this in this case*
    HHH never even aimed to be a universal decider
    it only aimed on reporting on the behavior of
    DD correctly simulated by HHH.

    To do that, you first have to blow the fuse that
    pins down the DD which is to be tested. And /then/
    call HHH(DD).

    For instance:

    int main()
    {
    (void) HHH(DD); // warm up the decider; discard the result

    // DD is now the non-halting one; no more changes take place

    if (HHH(DD)) {
    ...
    } else {
    ...
    }
    }


    I don't understand what you are saying.
    I will guess that the first HHH(DD) initializes
    the static data on the basis that HHH tests this
    data to see if it has been initialized.

    This HHH(DD) returns zero, right? It tweaks the static data and then
    begins simulating the procedural entry point DD. It then detects the
    runaway behavior and aborrts the simulation, returning 0.
    Isn't that right?

    Then the second HHH(DD) already has its static data
    initialized and see this. That would be an easy fix.

    Would it be an easy fix in such a way that it keeps your previous
    test cases working?

    Without any fix, this second HHH(DD) thinks it is the the simulated one
    which must not perform the abort check.

    Because HHH(DD) never stops running that does
    prove that HHH(DD)==0 would be correct if HHH
    could return.

    That's like saying is_prime(4) would be correct if only 4 would be 1
    smaller than it is.

    There is no "would" in math, only "is" or "is not".

    Hey, you know, Escher's Waterfall would be a perpetual motion machine,
    if only the illusion could jump out of the picture.


    On the other hand if the original HHH determined
    its halt status for DD by examining the relationship
    between DD and HHH it could correctly return 0
    without static data.

    How can you distinguish "original HHH" from "derived HHH"
    without static data? You can make it a parameter.

    But then you are making it crystal clear that there
    are two deciders.

    If you have two deciders HHH1 and HHH2 such that the DD
    test case calls HHH2(DD), the Halting Theorem DOES NOT SAY
    that HHH1(DD) is necessarily incorrect! It only says that HH2(DD) is necessarily incorrect!

    Once you have two deciders in the picture, such that one
    can decide what the other one cannot, you are not adisproving
    anything.

    We cannot think about changing the behavior of HHH to suit a desired
    "would be" return value, without considering that by doing so we are
    changing the definition of DD.

    Any changes that have no behavioral consequences
    are of no relevant consequence. For example
    appending NOP instructions to DD have no relevant
    consequence.

    You're not doing that though. You're modifying word inside
    the instruction space of HHH which it examines and uses the
    examined value to alter its control flow.

    You don't have to modify the code of DD to change DD
    function because HHH is part of DD, as a helper function.
    Changing the helper changes the parent.

    If you preserve the definition of DD while redesigning HHH to have
    a different return value, it means you now have two deciders:
    the original HHH embedded in DD, and the new decider HHH2
    which is trying to return something else.

    It comes as no surprise that when you allow two deciders, you
    can get the result you want. DD is designed to prove that HHH(DD)
    is incorrect, and that is all it has to do; it doesn't speak
    to (and doesn't have to) to HHH2(DD).


    When any HHH reports that DD correctly simulated
    by HHH cannot possibly reach its own simulated
    "return" statement final halt state then this HHH
    is necessarily correct.

    But then in this piece of rhetoric HHH becomes a metavariable denoting a
    set of deciders. The HHH which reports that DD cannot terminate
    is not the same HHH which DD relies on. /That/ HHH reutrns 0
    for HHH(DD) which makes DD halt, which makes 0 wrong.

    Again, if HHH denotes two deciders, there is there that's
    surprising, interesting or let alone capable of turning the
    Halting Problem on its ear.

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @Kazinator@mstdn.ca

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to olcott on Tue Aug 26 06:21:50 2025
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    On 8/25/2025 2:03 PM, Kaz Kylheku wrote:
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    On 8/25/2025 11:06 AM, Kaz Kylheku wrote:
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    HHH and HHH1 have identical source-code as measured by DIFF.

    Obviously false, if you're referring to the GNU diff:


    I am actually using the more effective
    Beyond Compare version 3.0
    Only the names and one comment are different.

    Oh, the names are different?

    So that "identical" word you used there is doing a lot of heavy lifting,
    isn't it.


    When I say that HHH and HHH1 have identical source-code
    I very obviously do not mean their name.

    But with that difference, they are not identical.

    You cannot substitute HHH1 for HHH or vice versa in any
    program without changing its meaning/behavior.

    When two functions are equivalent, that's how you know;
    that's the thing you can do.

    Much like when you misuse the word "itself".

    $ diff -u HHH.txt HHH1.txt
    @@@ -1,3 +1,3 @@
    -u32 HHH(ptr P)
    +u32 HHH1(ptr P)
    {
    u32* Aborted;
    u32* execution_trace;

    In your system, names matter, because every copy of HHH
    under a different name gets its own static fuse.


    When I disable to use of static data HHH1(DD)
    HHH(DD) and directly executed DD() never stop running.
    This proves that this static analysis is correct:

    When you disable the static data, then HHH1 and HHH become
    semantically identical; one can be substituted for another.


    No they remain semantically different in that DD
    still calls its own simulator HHH(DD) in recursive
    emulation and still does not call HHH1 at all.

    If you disable the static data, then HHH1 and HHH, having identical
    source code, do actually become identical functions which are
    substitutable.

    You can take any occurrence of HHH in the program and
    change it to HHH1 or vice versa, without changing the
    meaning.

    There is no difference between "DD calls HHH"
    and "DD calls HHH1", other than the name used.

    If HHH1 and HHH separately contain a fuse which they respectively
    burn, and subsequently behave differently, then they are not
    substitutable.

    A call to HHH1 whose fuse has been burned cannot be
    replaced by a call to HHH when that function's fuse
    has not yet been burned, etc.

    In that modified system, things are better from a theoretical point of
    view, but do not contain the underhanded trickery which you need
    in orderto support your false rhetoric around halting.

    It was never intended as underhanded trickery.

    Just because you developed it for yourself, with the intent
    of falling for it yourself, rather than to just deceive others while
    remaining wise, does not mean isn't underhanded.

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @Kazinator@mstdn.ca

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to olcott on Tue Aug 26 15:48:22 2025
    On 26/08/2025 15:37, olcott wrote:
    The fact that DD correctly simulated by HHH cannot
    stop running by itself proves that this DD is non-halting
    thus if HHH aborts its simulation of DD it would be
    correct to reject its input as non-halting.

    If you say so.

    $ cat dd.c
    #include <stdio.h>

    #define HHH(x) 0

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

    int main()
    {
    int hhh = HHH(DD);
    int dd = DD();

    printf("Because we got here, we know that both HHH and DD
    halted.\n");

    printf("But is that what they claim?\n\n");
    printf("HHH(DD) yields %d (%s).\n",
    hhh,
    hhh ?
    "halted" :
    "incorrect claim of non-halting");

    printf("DD yields %d (%s).\n",
    dd,
    dd ?
    "halted" :
    "incorrect claim of non-halting");

    return 0;
    }
    $ gcc -o dd dd.c
    $ ./dd
    Because we got here, we know that both HHH and DD halted.
    But is that what they claim?

    HHH(DD) yields 0 (incorrect claim of non-halting).
    DD yields 0 (incorrect claim of non-halting).

    DD halts.

    --
    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 Mike Terry@21:1/5 to Kaz Kylheku on Wed Aug 27 01:17:04 2025
    On 26/08/2025 07:14, Kaz Kylheku wrote:
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    On 8/25/2025 3:12 PM, Kaz Kylheku wrote:
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    On 8/25/2025 1:58 PM, Kaz Kylheku wrote:
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    DD correctly simulated by HHH cannot possibly
    reach its own simulated "return" statement
    final halt state is proven by the fact that
    when the abort code is disabled that DD() never
    stops running.

    When the abort code is disabled HHH(DD) never returns and that's why DD >>>>> never stops running. DD never even gets to execute the logic that
    "behaves opposite" to HHH(DD)'s verdict.


    Finally you are paying attention to this.

    The fact that HHH(DD) never returns due to runaway recursion shows that >>>>> HHH isn't a universal decider.


    *Yes it does show this in this case*
    HHH never even aimed to be a universal decider
    it only aimed on reporting on the behavior of
    DD correctly simulated by HHH.

    To do that, you first have to blow the fuse that
    pins down the DD which is to be tested. And /then/
    call HHH(DD).

    For instance:

    int main()
    {
    (void) HHH(DD); // warm up the decider; discard the result

    // DD is now the non-halting one; no more changes take place

    if (HHH(DD)) {
    ...
    } else {
    ...
    }
    }


    I don't understand what you are saying.
    I will guess that the first HHH(DD) initializes
    the static data on the basis that HHH tests this
    data to see if it has been initialized.

    This HHH(DD) returns zero, right? It tweaks the static data and then
    begins simulating the procedural entry point DD.

    Correct

    It then detects the
    runaway behavior and aborrts the simulation, returning 0.
    Isn't that right?

    It doesn't "detect runaway behaviour". It matches PO's so-called "Infinite Recursive Emulation"
    pattern in its collected trace data, and then, yes, it returns 0.


    Then the second HHH(DD) already has its static data
    initialized and see this. That would be an easy fix.

    Would it be an easy fix in such a way that it keeps your previous
    test cases working?

    What PO needs to do is keep whatever tests he needs in HHH, along with collecting whatever (trace)
    data is needed to support those tests, but do exactly the same collection and testing in each
    emulation level of HHH:

    [SL0] HHH(DD)
    [SL0] ..emulates DD()..
    [SL1] DD()
    [SL1] ..calls HHH(DD)
    [SL1] HHH(DD) // e.g. this HHH [SL1]
    [SL1] ..emulates DD().. // needs to capture trace data
    [SL2] DD() // for this <=== emulation [SL2]
    [SL2] ..calls HHH(DD) // and nested sub-emulations [SL3,4,5...] [SL2] HHH(DD) // but obviously NOT for [SL0] or [SL1] [SL2] ..emulates DD()..
    [SL3] DD()
    [SL3] ..calls HHH(DD)
    [SL3] HHH(DD)
    [SL3] ..emulates DD()..

    HHH /at every emulation level n/ needs to do the same:
    - emulate DD() [SLn+1]
    - collect trace entries from [SLn+1, SLn+2, SLn+3,...]
    into its /own/ local trace table. [NOT into a global trace table owned by HHH [SL0]
    - analyse that local trace for abort patterns in [SLn+1, SLn+2, SLn+3,...]
    and watch for [SLn+1] halting "naturally"
    - return 0 or 1 according to above analysis

    What's so confusing about that? HHH [SLn] is emulating [SLn+1] instruction by instruction and has
    complete access to [SLn+1] state, including what instructions are being emulated, and all the memory
    space of [SLn+1] (which happens to be its own memory space) including [SLn+1]'s current stack
    position and so on. Basically, anything [SLn+1] is doing, HHH [SLn] can see. That includes if
    [SLn+1] itself emulates a nested [SLn+2] emulation, and so on.

    [If you're not familiar with PO's emulation, code in HHH emulates a single instruction in the
    emulation it's performing by calling a "primitive op" DebugStep() which is actually implemented in
    x86utm code. When HHH [SLn+1] performs a DebugStep() the code used is "call <DebugStep notional
    address>", having previously pushed required arguments onto its stack. All apparent to HHH [SLn]. ]

    But PO just can't work it out. I thought recently he might have had some kind of breakthrough, but
    all the talk of spinning up extra runs of HHH(DD) to "warm up the static data" is crazy (ISTM...).


    Without any fix, this second HHH(DD) thinks it is the the simulated one
    which must not perform the abort check.

    PO has (I believe) never /wanted/ to make inner HHH emulations different. He just didn't know how
    to implement it properly, and it came out that way.

    I think its reasonable to say PO never thought his way through what he needed his code to do, in
    order to support his proof refutation goals. I think he started coding and just added more bits
    whenever something didn't do what he expected. I think now he's become even more entangled in a fog
    of objections from various posters, and has totally lost track of where he's going. He's just
    tinkering around the edges trying to keep posters happy, without understanding /why/ they are objecting.

    Because HHH(DD) never stops running that does
    prove that HHH(DD)==0 would be correct if HHH
    could return.

    That's like saying is_prime(4) would be correct if only 4 would be 1
    smaller than it is.

    There is no "would" in math, only "is" or "is not".

    Hey, you know, Escher's Waterfall would be a perpetual motion machine,
    if only the illusion could jump out of the picture.


    On the other hand if the original HHH determined
    its halt status for DD by examining the relationship
    between DD and HHH it could correctly return 0
    without static data.

    How can you distinguish "original HHH" from "derived HHH"
    without static data? You can make it a parameter.

    I don't believe PO would want to distinguish levels of HHH, if he could work out how to track his
    nested emulations /properly/, without the global trace table!

    Recently PO has been posting that if he eliminates the global data HHH will never halt. That
    suggests he's thinking posters are suggesting he just delete the global data variable! But then his
    code will have a compiler error, so he must delete all the code that used that global data, i.e. all
    his abort tests! Well Duh! If he deletes the abort tests of course HHH never halts. Does he
    really think that was being suggested?

    What was suggested was rewriting the tests to /work properly/, e.g. make the trace table local to
    HHH. I doubt you would take long to get a design along those lines working.


    But then you are making it crystal clear that there
    are two deciders.

    Right - two deciders is getting silly! PO wants one decider, coded correctly so each emulation
    level behaves identically (as emulations must...).

    [..snip remainder..]

    Mike.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Tue Aug 26 21:57:38 2025
    On 8/26/25 9:39 PM, olcott wrote:
    On 8/26/2025 7:17 PM, Mike Terry wrote:
    On 26/08/2025 07:14, Kaz Kylheku wrote:
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    On 8/25/2025 3:12 PM, Kaz Kylheku wrote:
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    On 8/25/2025 1:58 PM, Kaz Kylheku wrote:
    On 2025-08-25, olcott <polcott333@gmail.com> wrote:
    DD correctly simulated by HHH cannot possibly
    reach its own simulated "return" statement
    final halt state is proven by the fact that
    when the abort code is disabled that DD() never
    stops running.

    When the abort code is disabled HHH(DD) never returns and that's >>>>>>> why DD
    never stops running.  DD never even gets to execute the logic that >>>>>>> "behaves opposite" to HHH(DD)'s verdict.


    Finally you are paying attention to this.

    The fact that HHH(DD) never returns due to runaway recursion
    shows that
    HHH isn't a universal decider.


    *Yes it does show this in this case*
    HHH never even aimed to be a universal decider
    it only aimed on reporting on the behavior of
    DD correctly simulated by HHH.

    To do that, you first have to blow the fuse that
    pins down the DD which is to be tested. And /then/
    call HHH(DD).

    For instance:

        int main()
        {
          (void) HHH(DD); // warm up the decider; discard the result >>>>>
          // DD is now the non-halting one; no more changes take place >>>>>
          if (HHH(DD)) {
             ...
          } else {
             ...
          }
        }


    I don't understand what you are saying.
    I will guess that the first HHH(DD) initializes
    the static data on the basis that HHH tests this
    data to see if it has been initialized.

    This HHH(DD) returns zero, right? It tweaks the static data and then
    begins simulating the procedural entry point DD.

    Correct

    It then detects the
    runaway behavior and aborrts the simulation, returning 0.
    Isn't that right?

    It doesn't "detect runaway behaviour".  It matches PO's so-called
    "Infinite Recursive Emulation" pattern in its collected trace data,
    and then, yes, it returns 0.


    Which I conclusively prove is runaway behavior
    when I disable the abort and DD() never stops running.


    Then the second HHH(DD) already has its static data
    initialized and see this. That would be an easy fix.

    Would it be an easy fix in such a way that it keeps your previous
    test cases working?

    What PO needs to do is keep whatever tests he needs in HHH, along with
    collecting whatever (trace) data is needed to support those tests, but
    do exactly the same collection and testing in each emulation level of
    HHH:

    [SL0]  HHH(DD)
    [SL0]  ..emulates DD()..
    [SL1]    DD()
    [SL1]    ..calls HHH(DD)
    [SL1]      HHH(DD)                   // e.g. this HHH [SL1]
    [SL1]      ..emulates DD()..         // needs to capture trace data
    [SL2]        DD()                    // for this <=== emulation [SL2]
    [SL2]        ..calls HHH(DD)         // and nested sub-emulations
    [SL3,4,5...]
    [SL2]          HHH(DD)               // but obviously NOT for [SL0] or
    [SL1]
    [SL2]          ..emulates DD()..
    [SL3]            DD()
    [SL3]            ..calls HHH(DD)
    [SL3]              HHH(DD)
    [SL3]              ..emulates DD()..

    HHH /at every emulation level n/ needs to do the same:
    -  emulate DD() [SLn+1]
    -  collect trace entries from [SLn+1, SLn+2, SLn+3,...]
        into its /own/ local trace table.  [NOT into a global trace table
    owned by HHH [SL0]
    -  analyse that local trace for abort patterns in [SLn+1, SLn+2,
    SLn+3,...]
        and watch for [SLn+1] halting "naturally"
    -  return 0 or 1 according to above analysis

    What's so confusing about that?  HHH [SLn] is emulating [SLn+1]
    instruction by instruction and has complete access to [SLn+1] state,
    including what instructions are being emulated, and all the memory
    space of [SLn+1] (which happens to be its own memory space) including
    [SLn+1]'s current stack position and so on.  Basically, anything
    [SLn+1] is doing, HHH [SLn] can see.  That includes if [SLn+1] itself
    emulates a nested [SLn+2] emulation, and so on.

    [If you're not familiar with PO's emulation, code in HHH emulates a
    single instruction in the emulation it's performing by calling a
    "primitive op" DebugStep() which is actually implemented in x86utm
    code.  When HHH [SLn+1] performs a DebugStep() the code used is "call
    <DebugStep notional address>", having previously pushed required
    arguments onto its stack.  All apparent to HHH [SLn]. ]


    If HHH could even know the address of DebugStep()
    then it could know its own address and there is
    no need for more than one simulation. As soon as
    HHH sees DD calling itself its abort criteria is met.

    But PO just can't work it out.  I thought recently he might have had
    some kind of breakthrough, but all the talk of spinning up extra runs
    of HHH(DD) to "warm up the static data" is crazy (ISTM...).


    That seems to be Kaz's idea.
    I may have gotten his wrong.


    Without any fix, this second HHH(DD) thinks it is the the simulated one
    which must not perform the abort check.

    PO has (I believe) never /wanted/ to make inner HHH emulations
    different.  He just didn't know how to implement it properly, and it
    came out that way.


    The key thing is that unless we allocate the
    execution_trace data once it gets erased at
    every invocation.

    I think its reasonable to say PO never thought his way through what he
    needed his code to do, in order to support his proof refutation goals.

    I have all that totally down pat for at least three years.
    Making HHH a pure function of its inputs is the last step.

    I think he started coding and just added more bits whenever something
    didn't do what he expected.  I think now he's become even more
    entangled in a fog of objections from various posters, and has totally
    lost track of where he's going.  He's just tinkering around the edges
    trying to keep posters happy, without understanding /why/ they are
    objecting.


    It has never been anything like this.
    Its all exactly the same as my original design
    of at least three years ago. I have changed the
    test data to make it easier to understand.

    I changed to DDD() because people didn't seem
    to understand the execution trace of DD correctly
    simulated by HHH. It seems to have turned out to
    be the case that they just don't understand
    execution traces at all.

    Because HHH(DD) never stops running that does
    prove that HHH(DD)==0 would be correct if HHH
    could return.

    That's like saying is_prime(4) would be correct if only 4 would be 1 >>>>> smaller than it is.

    There is no "would" in math, only "is" or "is not".

    Hey, you know, Escher's Waterfall would be a perpetual motion machine, >>>>> if only the illusion could jump out of the picture.


    On the other hand if the original HHH determined
    its halt status for DD by examining the relationship
    between DD and HHH it could correctly return 0
    without static data.

    How can you distinguish "original HHH" from "derived HHH"
    without static data? You can make it a parameter.

    I don't believe PO would want to distinguish levels of HHH, if he
    could work out how to track his nested emulations /properly/, without
    the global trace table!


    All that I need is for one HHH to see the whole
    execution trace of all of the levels of DD. I
    have that now. Or the whole other method only
    requires HHH to know its own machine address.

    Recently PO has been posting that if he eliminates the global data HHH
    will never halt.  That suggests he's thinking posters are suggesting
    he just delete the global data variable!  But then his code will have
    a compiler error, so he must delete all the code that used that global
    data, i.e. all his abort tests!  Well Duh!  If he deletes the abort
    tests of course HHH never halts.  Does he really think that was being
    suggested?


    Disabling the abort has the same practical consequence
    as eliminating the trace data. It conclusively proves
    that DD() doesn't really halt because it never stops
    running.

    But without the abort code, HHH fails to be a decider, so doesn't
    disprove the proof.


    What was suggested was rewriting the tests to /work properly/, e.g.
    make the trace table local to HHH.  I doubt you would take long to get
    a design along those lines working.


    HHH needs to either see two complete traces of
    DD where it sees the same function called twice
    in sequence or it needs to know its own machine
    address. Then it sees DD calling itself.

    But seeing the two complete traces isn't proof of non-halting, as it
    sees in the first trace that THAT simulator might abort its simulation.

    Your problem is you HHH uses incorrect logic based on lying to itself.



    But then you are making it crystal clear that there
    are two deciders.

    Right - two deciders is getting silly!  PO wants one decider, coded
    correctly so each emulation level behaves identically (as emulations
    must...).


    Each emulation level has always behaved identically.
    It is only HHH seeing these execution traces that changes.

    And EVERY HHH does that same thing when we look at the behavior of its
    correct simulation (the simulation which continues past it being aborted).


    [..snip remainder..]

    Mike.




    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kaz Kylheku@21:1/5 to Mike Terry on Wed Aug 27 06:01:54 2025
    On 2025-08-27, Mike Terry <news.dead.person.stones@darjeeling.plus.com> wrote:
    But PO just can't work it out. I thought recently he might have had some kind of breakthrough, but
    all the talk of spinning up extra runs of HHH(DD) to "warm up the static data" is crazy (ISTM...).

    The extra run was my idea. and the "warm up" terminology mine; I
    borrowed that from the area of pseudo-random number generators.
    Some pseudo-random number geenerators do not begin generating
    sequences with good properties until they are called a bunch of times,
    to scramble them (throwing away the results). This is called warm-up.

    My purpose behind the warm-up was to get the machinery to blow its fuse,
    so then after that the functions no longer cheat. Burning fuses
    creates heat, so why not use that term.

    PO latched onto it as some new paradigm for doing something unclearly specified.

    A top-level call to HHH(DD) might return 0, but if we call that and
    discard the result:

    (void) HHH(DD); // burn the fuse

    if (HHH(DD) == 0) // ... real test

    After burning the fuse, things don't go well any more. Unexpectedly, PO
    had some "eureka" out of this.

    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @Kazinator@mstdn.ca

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Wed Aug 27 22:21:29 2025
    On 8/27/25 10:06 PM, olcott wrote:
    On 8/27/2025 8:32 PM, Chris M. Thomasson wrote:
    On 8/27/2025 6:24 PM, olcott wrote:
    On 8/27/2025 7:29 PM, Chris M. Thomasson wrote:
    On 8/27/2025 4:52 PM, olcott wrote:
    On 8/27/2025 6:41 PM, Chris M. Thomasson wrote:
    On 8/26/2025 6:39 PM, olcott wrote:
    [...]

    Runaway train... To where? Crash?


    OOM error.


    Blown stack?

    Out-Of-Memory error probably not
    a blown stack because each recursive
    emulation gets a new 64K stack.


    So are you trying to say that an out of memory condition means the
    program under your test will always halt, or always never halt? ;^)

    As someone here pointed out (I think it was Mike) a
    blown stack is a non-halting condition because my
    C code is intended to model Turing machine behavior.
    Thus when DD correctly simulated by HHH hits a blown
    stack this proves that DD does not halt.


    No, a blown stack is a failure of the approximation to determine what
    the actual behavior would be.

    It is quite possible for a correct simulation of a provable halting
    algorithm to blow the stack of a given simulator, and that doesn't prove
    that the algorithm is non-halting.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?B?QW5kcsOpIEcuIElzYWFr?=@21:1/5 to olcott on Wed Aug 27 20:31:39 2025
    On 2025-08-27 20:06, olcott wrote:
    On 8/27/2025 8:32 PM, Chris M. Thomasson wrote:
    On 8/27/2025 6:24 PM, olcott wrote:
    On 8/27/2025 7:29 PM, Chris M. Thomasson wrote:
    On 8/27/2025 4:52 PM, olcott wrote:
    On 8/27/2025 6:41 PM, Chris M. Thomasson wrote:
    On 8/26/2025 6:39 PM, olcott wrote:
    [...]

    Runaway train... To where? Crash?


    OOM error.


    Blown stack?

    Out-Of-Memory error probably not
    a blown stack because each recursive
    emulation gets a new 64K stack.


    So are you trying to say that an out of memory condition means the
    program under your test will always halt, or always never halt? ;^)

    As someone here pointed out (I think it was Mike) a
    blown stack is a non-halting condition because my
    C code is intended to model Turing machine behavior.
    Thus when DD correctly simulated by HHH hits a blown
    stack this proves that DD does not halt.

    No. It tells you that if DD halts, it requires a machine with a larger
    stack.

    André

    --
    To email remove 'invalid' & replace 'gm' with well known Google mail
    service.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Thu Aug 28 10:51:59 2025
    Op 28.aug.2025 om 04:37 schreef olcott:
    On 8/27/2025 9:31 PM, André G. Isaak wrote:
    On 2025-08-27 20:06, olcott wrote:
    On 8/27/2025 8:32 PM, Chris M. Thomasson wrote:
    On 8/27/2025 6:24 PM, olcott wrote:
    On 8/27/2025 7:29 PM, Chris M. Thomasson wrote:
    On 8/27/2025 4:52 PM, olcott wrote:
    On 8/27/2025 6:41 PM, Chris M. Thomasson wrote:
    On 8/26/2025 6:39 PM, olcott wrote:
    [...]

    Runaway train... To where? Crash?


    OOM error.


    Blown stack?

    Out-Of-Memory error probably not
    a blown stack because each recursive
    emulation gets a new 64K stack.


    So are you trying to say that an out of memory condition means the
    program under your test will always halt, or always never halt? ;^)

    As someone here pointed out (I think it was Mike) a
    blown stack is a non-halting condition because my
    C code is intended to model Turing machine behavior.
    Thus when DD correctly simulated by HHH hits a blown
    stack this proves that DD does not halt.

    No. It tells you that if DD halts, it requires a machine with a larger
    stack.

    André


    The reason that that stack is blown in non-terming behavior
    [Complete proof that the input to HHH(DD)==0 --- The HP proof is wrong]


    Infinite recursion is only one of the reasons for a blown stack. There
    are many other possibilities. To prove that there is non-termination
    behaviour, we need another proof.
    In this case it is clear that HHH just fails to reach the final halt
    state, where other simulators have no problem to reach the final halt
    state specified by exactly the same input.
    HHH stops the simulation prematurely, for invalid reasons. You try to
    prove that it is correct by assuming it is correct. That is invalid
    circular logic.

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