• Re: HHH1(DDD) only sees AFTER abort HHH(DDD) only sees BEFORE abort--- Kaz

    From Kaz Kylheku@[email protected] to comp.theory on Thu Sep 18 16:21:49 2025
    From Newsgroup: comp.theory

    On 2025-09-18, olcott <[email protected]> wrote:
    On 9/18/2025 10:37 AM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:
    On 9/18/2025 12:42 AM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:

    Maybe you should spend some time pondering this.
    HHH(DD)==0 and HHH1(DD)==1 what are the details
    that cause this?

    I already explained it.

    The details is that CALL HHH1, DD and CALL HHH, DD are treated as calls >>>> to different functions by the abort logic.

    That different treatment then makes that true.


    So you still just flat out don't understand
    that the fact that DD calls HHH(DD) in recursive
    simulation and that DD does not call HHH1 at at
    makes a difference in their behavior?

    I fully understand that is what /you think/ causes the difference in
    behavior.


    It is like you don't even know simple C.

    void DDD()
    {
    HHH(DDD);
    return;
    }

    This is not about the HHH1 vs HHH topic any more; you are
    changing the subject.

    What are you thoughts about HHH1 and HHH and the treatment of
    their equality?

    HHH(DDD) simulates DDD, what comes next?

    It depends.

    If HHH correctly simulates DDD, which imples completely, then it never
    returns. DDD is non-terminating.

    If HHH incompletely simulates DDD, thus incorrectly, then the
    return statement is reached.

    (If the abandoned simulation of the nested DDD is continue, it too will
    reach the return statement, and doing so will cause another simulation
    to come into existence, also similarly abandoned, yet continuable.)
    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@[email protected] to comp.theory on Thu Sep 18 11:28:43 2025
    From Newsgroup: comp.theory

    On 9/18/2025 11:21 AM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:

    It is like you don't even know simple C.

    void DDD()
    {
    HHH(DDD);
    return;
    }

    This is not about the HHH1 vs HHH topic any more; you are
    changing the subject.

    I will get to that. We must take minimal
    steps or you will never understand.

    void DDD()
    {
    HHH(DDD);
    return;
    }

    HHH(DDD) simulates DDD, what comes next?
    --
    Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Kaz Kylheku@[email protected] to comp.theory on Thu Sep 18 16:32:38 2025
    From Newsgroup: comp.theory

    On 2025-09-18, olcott <[email protected]> wrote:
    On 9/18/2025 3:39 AM, Mikko wrote:
    On 2025-09-17 07:48:56 +0000, vallor said:

    On Mon, 15 Sep 2025 14:35:18 -0700, "Chris M. Thomasson"
    <[email protected]> wrote in <10aa0qm$26msp$[email protected]>: >>>

    void Infinite_Recursion()
    {
    Infinite_Recursion();
    return;
    }

    I think not. Blowing the stack is not the same as halting...

    As a matter of principle, it's part of the execution environment,
    just like his partial decider simulating the code.

    In his world, catching it calling itself twice without an intervening
    decision is grounds to abort.

    In our world, when the stack gets used up, it aborts.

    True, but after the abort one cannot claim that the job is completed.
    The job is not completed and the answer to the question is not known.
    To say either "yes" or "no" without completing the job is a lie.

    Meeting the abort criteria entails the answer of reject.

    You know that the criteria are met for a test subject that is known
    to terminate. your answer for that is that "reject" is the correct
    answer /even though/ you acknowledge that DDD terminates, with some
    hand-waving argument about the caller of HHH not being the input, only
    the actual string of instructions. (Which you believe to be only the
    code of DD, not including any helper functions that DD is built from!)
    The peope who don't accept your hand-waving argument are just doing
    so because the are "learned-by-rote" pedestrian intellects who lack
    your magic insight.

    The reality is:

    - The input to HHH(DD) is the entire call graph rooted at DD,
    consisting of material like HHH, Debug_Step, Allocate and others.
    It is not just the code of DD. (The compiler is allowed to
    inline functions: when DD calls HHH, that call can be inlined!)

    - The semantics of the compiled call graph in your x86-based test
    apparatus is determined by the x86 instruction set, without
    consideration for any decider functions. That semantics finds DD to
    be terminating. DD has a single semantics; it is one thing.
    It does not have a behavior dependent on what is simulating it.
    When a simulation of DD is /correct/ and /complete/ then that
    simulation as a whole coincidences to DD's behavior.
    Any simulation that is incomplete or incorrect isn't DD's
    behavior.

    - The decider's job is to analyze the call graph somehow and
    come up with the correct return value of 1. That's regardless
    of whether the call graph contains an identical decider.
    The call graph containing an identical decider doesn't turn
    the call graph into a caller of the decider. The decider's
    caller is "main".
    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Kaz Kylheku@[email protected] to comp.theory on Thu Sep 18 17:56:43 2025
    From Newsgroup: comp.theory

    On 2025-09-18, olcott <[email protected]> wrote:
    On 9/18/2025 11:21 AM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:

    It is like you don't even know simple C.

    void DDD()
    {
    HHH(DDD);
    return;
    }

    This is not about the HHH1 vs HHH topic any more; you are
    changing the subject.

    I will get to that. We must take minimal
    steps or you will never understand.

    void DDD()
    {
    HHH(DDD);
    return;
    }

    HHH(DDD) simulates DDD, what comes next?

    But I answered that in the same post; you just snipped it.

    Ah right! *Slap-Forehead*

    Whenever you read an article, when the "read trace" indicates that you
    woudl like to respond to some point, you then at your discretion
    abort the article.

    The actual input that you are responding to only made the above
    remark.

    The /parent article/ made more remarks, but that's not the actual input
    to your responding activity.

    A Usenet reply can never make remarks on its parent article. Only on the
    actual finite string that is the quoted text, which never reaches its
    final remark when it is aborted.
    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@[email protected] to comp.theory on Thu Sep 18 13:07:33 2025
    From Newsgroup: comp.theory

    On 9/18/2025 12:56 PM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:
    On 9/18/2025 11:21 AM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:

    It is like you don't even know simple C.

    void DDD()
    {
    HHH(DDD);
    return;
    }

    This is not about the HHH1 vs HHH topic any more; you are
    changing the subject.

    I will get to that. We must take minimal
    steps or you will never understand.

    void DDD()
    {
    HHH(DDD);
    return;
    }

    HHH(DDD) simulates DDD, what comes next?

    But I answered that in the same post; you just snipped it.


    Yet again you did not immediately directly answer
    with the next step in the execution trace of: what comes next?
    --
    Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Kaz Kylheku@[email protected] to comp.theory on Thu Sep 18 18:15:26 2025
    From Newsgroup: comp.theory

    On 2025-09-18, olcott <[email protected]> wrote:
    On 9/18/2025 12:56 PM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:
    On 9/18/2025 11:21 AM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:

    It is like you don't even know simple C.

    void DDD()
    {
    HHH(DDD);
    return;
    }

    This is not about the HHH1 vs HHH topic any more; you are
    changing the subject.

    I will get to that. We must take minimal
    steps or you will never understand.

    void DDD()
    {
    HHH(DDD);
    return;
    }

    HHH(DDD) simulates DDD, what comes next?

    But I answered that in the same post; you just snipped it.


    Yet again you did not immediately directly answer
    with the next step in the execution trace of: what comes next?

    HTTP/1.1 304 Not Modified
    Date: Thu, Sep 18 20245 11:02:13 -0800 (PDT)
    Last-Modified: Thu, 18 Sep 2025 16:21:49 -0000 (UTC)
    Message-ID: <[email protected]>
    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@[email protected] to comp.theory on Thu Sep 18 13:33:09 2025
    From Newsgroup: comp.theory

    On 9/18/2025 1:15 PM, Kaz Kylheku wrote:
    Message-ID: <[email protected]>


    *My superpower is an OCD level of persistence*

    void DDD()
    {
    HHH(DDD);
    return;
    }

    HHH(DDD) simulates DDD, what is the next step
    in the execution trace?

    THE NEXT STEP AND ONLY THE NEXT STEP IN THE EXECUTION TRACE
    WHEN YOU GO MORE THAN ONE SINGLE STEP YO GET IT WRONG.

    You are beginning to prove that you are a liar.
    --
    Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Chris M. Thomasson@[email protected] to comp.theory on Thu Sep 18 12:19:12 2025
    From Newsgroup: comp.theory

    On 9/18/2025 7:33 AM, olcott wrote:
    On 9/18/2025 3:39 AM, Mikko wrote:
    On 2025-09-17 07:48:56 +0000, vallor said:

    On Mon, 15 Sep 2025 14:35:18 -0700, "Chris M. Thomasson"
    <[email protected]> wrote in <10aa0qm$26msp$5@dont-
    email.me>:


    void Infinite_Recursion()
    {
    Infinite_Recursion();
    return;
    }

    I think not. Blowing the stack is not the same as halting...

    As a matter of principle, it's part of the execution environment,
    just like his partial decider simulating the code.

    In his world, catching it calling itself twice without an intervening
    decision is grounds to abort.

    In our world, when the stack gets used up, it aborts.

    True, but after the abort one cannot claim that the job is completed.
    The job is not completed and the answer to the question is not known.
    To say either "yes" or "no" without completing the job is a lie.


    Meeting the abort criteria entails the answer of reject.


    10 HOME
    20 PRINT "INFINITE"
    30 GOTO 20
    40 PRINT "All by myself... ;^)"

    Your first pass says it can potentially print "All by myself... ;^)".
    Second pass says Line 30 with is GOTO 20 should create a loop (30, 20,
    30, 20, ...) and, so far, we notice no effects that can break out of
    this loop at this step cycle (30 : GOTO 20) So, right now, we guess that
    it does not halt with a 99.(9)% probability... ;^)
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Chris M. Thomasson@[email protected] to comp.theory on Thu Sep 18 12:43:52 2025
    From Newsgroup: comp.theory

    On 9/17/2025 6:08 PM, olcott wrote:
    On 9/17/2025 4:55 PM, Chris M. Thomasson wrote:
    On 9/17/2025 8:44 AM, olcott wrote:
    [..]
    DD.HHH does not halt.
    You keep trying to get away with the strawman deception.

    Am I lying when I say I think you might be a bit unstable?


    Ad Hominem the first resort of Pea brains.


    Again, am I lying ?
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Chris M. Thomasson@[email protected] to comp.theory on Thu Sep 18 13:26:36 2025
    From Newsgroup: comp.theory

    On 9/18/2025 8:50 AM, olcott wrote:
    On 9/18/2025 10:37 AM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:
    On 9/18/2025 12:42 AM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:

    Maybe you should spend some time pondering this.
    HHH(DD)==0 and HHH1(DD)==1 what are the details
    that cause this?

    I already explained it.

    The details is that CALL HHH1, DD and CALL HHH, DD are treated as calls >>>> to different functions by the abort logic.

    That different treatment then makes that true.


    So you still just flat out don't understand
    that the fact that DD calls HHH(DD) in recursive
    simulation and that DD does not call HHH1 at at
    makes a difference in their behavior?

    I fully understand that is what /you think/ causes the difference in
    behavior.


    It is like you don't even know simple C.

    lol. Do you know simple BASIC?


    void DDD()
    {
      HHH(DDD);
      return;
    }

    HHH(DDD) simulates DDD, what comes next?


    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@[email protected] to comp.theory on Thu Sep 18 15:27:14 2025
    From Newsgroup: comp.theory

    On 9/18/2025 2:43 PM, Chris M. Thomasson wrote:
    On 9/17/2025 6:08 PM, olcott wrote:
    On 9/17/2025 4:55 PM, Chris M. Thomasson wrote:
    On 9/17/2025 8:44 AM, olcott wrote:
    [..]
    DD.HHH does not halt.
    You keep trying to get away with the strawman deception.

    Am I lying when I say I think you might be a bit unstable?


    Ad Hominem the first resort of Pea brains.


    Again, am I lying ?

    I am much more stable than most people having fully
    recovered from near death by cancer without ever
    getting very perturbed.

    By simply resorting to ad hominem instead of a
    rebuttal on the basis of reasoning you have proved
    to be a deceiver.

    You have shown that you can do much better than
    this on other forums.
    --
    Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@[email protected] to comp.theory on Thu Sep 18 15:37:42 2025
    From Newsgroup: comp.theory

    On 9/18/2025 3:26 PM, Chris M. Thomasson wrote:
    On 9/18/2025 8:50 AM, olcott wrote:
    On 9/18/2025 10:37 AM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:
    On 9/18/2025 12:42 AM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:

    Maybe you should spend some time pondering this.
    HHH(DD)==0 and HHH1(DD)==1 what are the details
    that cause this?

    I already explained it.

    The details is that CALL HHH1, DD and CALL HHH, DD are treated as
    calls
    to different functions by the abort logic.

    That different treatment then makes that true.


    So you still just flat out don't understand
    that the fact that DD calls HHH(DD) in recursive
    simulation and that DD does not call HHH1 at at
    makes a difference in their behavior?

    I fully understand that is what /you think/ causes the difference in
    behavior.


    It is like you don't even know simple C.

    lol. Do you know simple BASIC?


    I started programming with TI 99 4a basic
    back in about 1979. It can't do recursion
    so it lacks sufficient expressiveness for
    making my point.

    https://en.wikipedia.org/wiki/TI-99/4A


    void DDD()
    {
       HHH(DDD);
       return;
    }

    HHH(DDD) simulates DDD, what comes next?


    --
    Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Chris M. Thomasson@[email protected] to comp.theory on Thu Sep 18 13:46:16 2025
    From Newsgroup: comp.theory

    On 9/18/2025 1:27 PM, olcott wrote:
    On 9/18/2025 2:43 PM, Chris M. Thomasson wrote:
    On 9/17/2025 6:08 PM, olcott wrote:
    On 9/17/2025 4:55 PM, Chris M. Thomasson wrote:
    On 9/17/2025 8:44 AM, olcott wrote:
    [..]
    DD.HHH does not halt.
    You keep trying to get away with the strawman deception.

    Am I lying when I say I think you might be a bit unstable?


    Ad Hominem the first resort of Pea brains.


    Again, am I lying ?

    I am much more stable than most people having fully
    recovered from near death by cancer without ever
    getting very perturbed.

    By simply resorting to ad hominem instead of a
    rebuttal on the basis of reasoning you have proved
    to be a deceiver.

    You have shown that you can do much better than
    this on other forums.


    Again, am I lying?
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@[email protected] to comp.theory on Thu Sep 18 15:49:49 2025
    From Newsgroup: comp.theory

    On 9/18/2025 10:37 AM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:
    On 9/18/2025 12:42 AM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:

    Maybe you should spend some time pondering this.
    HHH(DD)==0 and HHH1(DD)==1 what are the details
    that cause this?

    I already explained it.

    The details is that CALL HHH1, DD and CALL HHH, DD are treated as calls
    to different functions by the abort logic.

    That different treatment then makes that true.


    So you still just flat out don't understand
    that the fact that DD calls HHH(DD) in recursive
    simulation and that DD does not call HHH1 at at
    makes a difference in their behavior?

    I fully understand that is what /you think/ causes the difference in behavior.


    I have conclusively proven my point with an x86 execution
    trace that you cannot understand.

    With an honest dialogue when proof is provided yet not
    understood then one says they can't understand this proof.

    In a dishonest dialogue when proof is provided that is
    not understood then one uses pure bluster to maintain
    one's position that has been totally refuted.

    void DDD()
    {
    HHH(DDD);
    return;
    }

    HHH(DDD) simulates DDD:
    What is the next step in the execution trace?
    simulated DDD calls HHH(DDD).

    What is the next step in the execution trace?
    DDD goes out and buys a beer for its pal HHH?
    --
    Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@[email protected] to comp.theory on Thu Sep 18 15:54:59 2025
    From Newsgroup: comp.theory

    On 9/18/2025 3:46 PM, Chris M. Thomasson wrote:
    On 9/18/2025 1:27 PM, olcott wrote:
    On 9/18/2025 2:43 PM, Chris M. Thomasson wrote:
    On 9/17/2025 6:08 PM, olcott wrote:
    On 9/17/2025 4:55 PM, Chris M. Thomasson wrote:
    On 9/17/2025 8:44 AM, olcott wrote:
    [..]
    DD.HHH does not halt.
    You keep trying to get away with the strawman deception.

    Am I lying when I say I think you might be a bit unstable?


    Ad Hominem the first resort of Pea brains.


    Again, am I lying ?

    I am much more stable than most people having fully
    recovered from near death by cancer without ever
    getting very perturbed.

    By simply resorting to ad hominem instead of a
    rebuttal on the basis of reasoning you have proved
    to be a deceiver.

    You have shown that you can do much better than
    this on other forums.


    Again, am I lying?

    Yes.
    --
    Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Chris M. Thomasson@[email protected] to comp.theory on Thu Sep 18 14:11:09 2025
    From Newsgroup: comp.theory

    On 9/18/2025 1:54 PM, olcott wrote:
    On 9/18/2025 3:46 PM, Chris M. Thomasson wrote:
    On 9/18/2025 1:27 PM, olcott wrote:
    On 9/18/2025 2:43 PM, Chris M. Thomasson wrote:
    On 9/17/2025 6:08 PM, olcott wrote:
    On 9/17/2025 4:55 PM, Chris M. Thomasson wrote:
    On 9/17/2025 8:44 AM, olcott wrote:
    [..]
    DD.HHH does not halt.
    You keep trying to get away with the strawman deception.

    Am I lying when I say I think you might be a bit unstable?


    Ad Hominem the first resort of Pea brains.


    Again, am I lying ?

    I am much more stable than most people having fully
    recovered from near death by cancer without ever
    getting very perturbed.

    By simply resorting to ad hominem instead of a
    rebuttal on the basis of reasoning you have proved
    to be a deceiver.

    You have shown that you can do much better than
    this on other forums.


    Again, am I lying?

    Yes.


    Incorrect. I think you might be a bit unstable. Your decider is totally
    wrong.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Chris M. Thomasson@[email protected] to comp.theory on Thu Sep 18 14:16:55 2025
    From Newsgroup: comp.theory

    On 9/18/2025 1:37 PM, olcott wrote:
    On 9/18/2025 3:26 PM, Chris M. Thomasson wrote:
    On 9/18/2025 8:50 AM, olcott wrote:
    On 9/18/2025 10:37 AM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:
    On 9/18/2025 12:42 AM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:

    Maybe you should spend some time pondering this.
    HHH(DD)==0 and HHH1(DD)==1 what are the details
    that cause this?

    I already explained it.

    The details is that CALL HHH1, DD and CALL HHH, DD are treated as >>>>>> calls
    to different functions by the abort logic.

    That different treatment then makes that true.


    So you still just flat out don't understand
    that the fact that DD calls HHH(DD) in recursive
    simulation and that DD does not call HHH1 at at
    makes a difference in their behavior?

    I fully understand that is what /you think/ causes the difference in
    behavior.


    It is like you don't even know simple C.

    lol. Do you know simple BASIC?


    I started programming with TI 99 4a basic
    back in about 1979. It can't do recursion
    so it lacks sufficient expressiveness for
    making my point.

    One can simulate recursion in BASIC, right?



    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Kaz Kylheku@[email protected] to comp.theory on Thu Sep 18 21:29:37 2025
    From Newsgroup: comp.theory

    On 2025-09-18, olcott <[email protected]> wrote:
    On 9/18/2025 10:37 AM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:
    On 9/18/2025 12:42 AM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:

    Maybe you should spend some time pondering this.
    HHH(DD)==0 and HHH1(DD)==1 what are the details
    that cause this?

    I already explained it.

    The details is that CALL HHH1, DD and CALL HHH, DD are treated as calls >>>> to different functions by the abort logic.

    That different treatment then makes that true.


    So you still just flat out don't understand
    that the fact that DD calls HHH(DD) in recursive
    simulation and that DD does not call HHH1 at at
    makes a difference in their behavior?

    I fully understand that is what /you think/ causes the difference in
    behavior.

    I have conclusively proven my point with an x86 execution
    trace that you cannot understand.

    The trace confirms that there /is/ a difference. Everyone follows that
    and agrees. You understand your own trace, but you don't understand the
    root cause.

    HHH and HHH1 behave differently, in spite of having identical
    definitions except for the name.

    This should bother you!

    If HHH and HHH1 are the same then any HHH(x) expression should be substitutasble with HHH1(x) and vice versa without making a shred of difference. That's what it means for functions to be the same. Yet you
    observe a difference in the execution traces and their visible behavior
    (in regard to producing output diagnostics and termination).

    Yet it doesn't bother you that they don't behave the same way,
    and your best explanation is that HHH is the name that DDD uses
    to call the function whereas HHH1 isn't.

    Not only does it not bother you, but you celebrate the issue.

    The actual root cause is that your abort test treats "CALL HHH, DD" and
    "CALL HHH1, DD" as calls to different functions, not as calls to the
    same function. That makes it decide differently and change the
    course of the execution and its traces.

    If you fixed this issue, then HHH1 would behave like HHH in your
    execution traces. The two would be equivalent and so the HHH(DD) call in
    the body of DD would be indistinguishable from HHH1(DD) in its
    semantics, only oin the name it uses, that name being irrelevant.

    HHH1 and HHH /are/ the same function, make no mistake. They only have
    different execution traces under your bogus simulation, which
    /incorrectly/ treats them as different functions. Since it treats
    them as different functions and makes a difference which changes
    the outcome of simulation, you get different execution traces.

    In a dishonest dialogue when proof is provided that is
    not understood then one uses pure bluster to maintain
    one's position that has been totally refuted.

    Is it not an example of bluster to claim that H(P, P) == False
    is perfectly okay, even though P(P) halts?

    void DDD()
    {
    HHH(DDD);
    return;
    }

    HHH(DDD) simulates DDD:
    What is the next step in the execution trace?
    simulated DDD calls HHH(DDD).

    From where? Your question is entirely ambiguous.

    Are we tracing a top-level HHH(DDD) call placed in main?

    Or just the HHH(DDD) inside DD? Is that directly executed
    or simulated?

    Are we looking at the point where HHH(DDD) has returned?
    Or the outset of the HHH(DDD) simulation?

    Is this the returning HHH? Or one which does no abort
    testing?

    The question is way underspecified.
    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@[email protected] to comp.theory on Thu Sep 18 16:29:39 2025
    From Newsgroup: comp.theory

    On 9/18/2025 4:16 PM, Chris M. Thomasson wrote:
    On 9/18/2025 1:37 PM, olcott wrote:
    On 9/18/2025 3:26 PM, Chris M. Thomasson wrote:
    On 9/18/2025 8:50 AM, olcott wrote:
    On 9/18/2025 10:37 AM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:
    On 9/18/2025 12:42 AM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:

    Maybe you should spend some time pondering this.
    HHH(DD)==0 and HHH1(DD)==1 what are the details
    that cause this?

    I already explained it.

    The details is that CALL HHH1, DD and CALL HHH, DD are treated as >>>>>>> calls
    to different functions by the abort logic.

    That different treatment then makes that true.


    So you still just flat out don't understand
    that the fact that DD calls HHH(DD) in recursive
    simulation and that DD does not call HHH1 at at
    makes a difference in their behavior?

    I fully understand that is what /you think/ causes the difference in >>>>> behavior.


    It is like you don't even know simple C.

    lol. Do you know simple BASIC?


    I started programming with TI 99 4a basic
    back in about 1979. It can't do recursion
    so it lacks sufficient expressiveness for
    making my point.

    One can simulate recursion in BASIC, right?


    Not well enough to see my point.
    Why are you complaining about C?
    --
    Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@[email protected] to comp.theory on Thu Sep 18 16:36:33 2025
    From Newsgroup: comp.theory

    On 9/18/2025 4:29 PM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:
    On 9/18/2025 10:37 AM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:

    So you still just flat out don't understand
    that the fact that DD calls HHH(DD) in recursive
    simulation and that DD does not call HHH1 at at
    makes a difference in their behavior?

    I fully understand that is what /you think/ causes the difference in
    behavior.

    I have conclusively proven my point with an x86 execution
    trace that you cannot understand.

    The trace confirms that there /is/ a difference. Everyone follows that
    and agrees. You understand your own trace, but you don't understand the
    root cause.


    The root cause has been common knowledge in every
    computer science textbook. That you disagree seems
    to prove that you are clueless on this one point.

    The root cause *HAS ALWAYS BEEN* that the
    "do the opposite" code does effect HHH yet
    does not effect HHH1.

    The "do the opposite" code is "doing the opposite" of HHH
    The "do the opposite" code is NOT "doing the opposite" of HHH1
    --
    Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Kaz Kylheku@[email protected] to comp.theory on Thu Sep 18 21:51:26 2025
    From Newsgroup: comp.theory

    On 2025-09-18, olcott <[email protected]> wrote:
    On 9/18/2025 4:29 PM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:
    On 9/18/2025 10:37 AM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:

    So you still just flat out don't understand
    that the fact that DD calls HHH(DD) in recursive
    simulation and that DD does not call HHH1 at at
    makes a difference in their behavior?

    I fully understand that is what /you think/ causes the difference in
    behavior.

    I have conclusively proven my point with an x86 execution
    trace that you cannot understand.

    The trace confirms that there /is/ a difference. Everyone follows that
    and agrees. You understand your own trace, but you don't understand the
    root cause.


    The root cause has been common knowledge in every
    computer science textbook.

    Your HHH and HHH1 cruft appears in no computer science textbook
    whatsoever.

    The computer science textbooks do say this: the function
    equal_function(f1, f2) is not computable for all functions f1 and f2.
    It is an undecidable problem (commonly proven that way by demonstrating
    a relation to halting).

    Yet: you just substitute the C operation f1 == f2, and make big
    announcements like you took a bite out of computer science.

    "Hey look, HHH1 and HHH are the same function. But because DD
    calls HHH, there is a difference in the simulation traces!"

    That you disagree seems
    to prove that you are clueless on this one point.

    I completely have you whipped, I'm afraid.

    The root cause *HAS ALWAYS BEEN* that the
    "do the opposite" code does effect HHH yet
    does not effect HHH1.

    Make your abort test blind to the difference HHH and HHH1
    and watch the "do the opposite" code affect HHH1.

    The "do the opposite" code is "doing the opposite" of HHH
    The "do the opposite" code is NOT "doing the opposite" of HHH1

    You can't believe such a thing if you trust that HHH and HHH1 are
    exactly the same function, only known by two different names.

    If that equivalence is true that means that the HHH(DD)
    expression inside the DD means the same thing as HHH1(DD).

    In other words, there is only one decider function there under
    two names, and that function is targeted by the diagonal
    case, not its name.
    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@[email protected] to comp.theory on Thu Sep 18 17:05:14 2025
    From Newsgroup: comp.theory

    On 9/18/2025 4:51 PM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:

    The root cause has been common knowledge in every
    computer science textbook.

    The root cause *HAS ALWAYS BEEN* that the
    "do the opposite" code does effect HHH yet
    does not effect HHH1.

    Make your abort test blind to the difference HHH and HHH1
    and watch the "do the opposite" code affect HHH1.

    That is not the way that it works in textbooks.
    The whole proof depends on some input D "doing the opposite"
    of some halt decider H.
    --
    Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Kaz Kylheku@[email protected] to comp.theory on Fri Sep 19 00:07:58 2025
    From Newsgroup: comp.theory

    On 2025-09-18, olcott <[email protected]> wrote:
    On 9/18/2025 4:51 PM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:

    The root cause has been common knowledge in every
    computer science textbook.

    The root cause *HAS ALWAYS BEEN* that the
    "do the opposite" code does effect HHH yet
    does not effect HHH1.

    Make your abort test blind to the difference HHH and HHH1
    and watch the "do the opposite" code affect HHH1.

    That is not the way that it works in textbooks.
    The whole proof depends on some input D "doing the opposite"
    of some halt decider H.

    Can you cite one CS textbook that uses two (2) decider functions (like
    H1 and H2), which have the same definition and are argued to be
    identical?

    But such that a name comparison is presented which stupidly causes a
    different halting decision based on which one is used?

    And if the textbook exists, does it argue for the correctness of this cockamamie situation, or incorrectness?

    (I strongly suspect you pulled this out of your ass, not any CS text.)
    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@[email protected] to comp.theory on Thu Sep 18 19:12:30 2025
    From Newsgroup: comp.theory

    On 9/18/2025 7:07 PM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:
    On 9/18/2025 4:51 PM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:

    The root cause has been common knowledge in every
    computer science textbook.

    The root cause *HAS ALWAYS BEEN* that the
    "do the opposite" code does effect HHH yet
    does not effect HHH1.

    Make your abort test blind to the difference HHH and HHH1
    and watch the "do the opposite" code affect HHH1.

    That is not the way that it works in textbooks.
    The whole proof depends on some input D "doing the opposite"
    of some halt decider H.

    Can you cite one CS textbook that uses two (2) decider functions (like
    H1 and H2), which have the same definition and are argued to be
    identical?


    It is common knowledge that the input that one HP proof
    decider cannot decide can be decided by another.

    *I think that you already told me this*
    *I think that you already told me this*
    *I think that you already told me this*

    But such that a name comparison is presented which stupidly causes a different halting decision based on which one is used?

    And if the textbook exists, does it argue for the correctness of this cockamamie situation, or incorrectness?

    (I strongly suspect you pulled this out of your ass, not any CS text.)

    --
    Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Chris M. Thomasson@[email protected] to comp.theory on Thu Sep 18 18:31:33 2025
    From Newsgroup: comp.theory

    On 9/18/2025 2:16 PM, Chris M. Thomasson wrote:
    On 9/18/2025 1:37 PM, olcott wrote:
    [...]
    I started programming with TI 99 4a basic
    back in about 1979. It can't do recursion
    so it lacks sufficient expressiveness for
    making my point.

    One can simulate recursion in BASIC, right?

    You never simulated recursion in BASIC before?
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@[email protected] to comp.theory on Thu Sep 18 20:46:32 2025
    From Newsgroup: comp.theory

    On 9/18/2025 8:31 PM, Chris M. Thomasson wrote:
    On 9/18/2025 2:16 PM, Chris M. Thomasson wrote:
    On 9/18/2025 1:37 PM, olcott wrote:
    [...]
    I started programming with TI 99 4a basic
    back in about 1979. It can't do recursion
    so it lacks sufficient expressiveness for
    making my point.

    One can simulate recursion in BASIC, right?

    You never simulated recursion in BASIC before?

    I only want to talk about my C function.
    --
    Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Kaz Kylheku@[email protected] to comp.theory on Fri Sep 19 02:16:30 2025
    From Newsgroup: comp.theory

    On 2025-09-19, olcott <[email protected]> wrote:
    On 9/18/2025 7:07 PM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:
    On 9/18/2025 4:51 PM, Kaz Kylheku wrote:
    On 2025-09-18, olcott <[email protected]> wrote:

    The root cause has been common knowledge in every
    computer science textbook.

    The root cause *HAS ALWAYS BEEN* that the
    "do the opposite" code does effect HHH yet
    does not effect HHH1.

    Make your abort test blind to the difference HHH and HHH1
    and watch the "do the opposite" code affect HHH1.

    That is not the way that it works in textbooks.
    The whole proof depends on some input D "doing the opposite"
    of some halt decider H.

    Can you cite one CS textbook that uses two (2) decider functions (like
    H1 and H2), which have the same definition and are argued to be
    identical?


    It is common knowledge that the input that one HP proof
    decider cannot decide can be decided by another.

    But if we have apparently two deciders, which turn out to be
    the same function, then we do not actually have two deciders;
    they are one decider referenced by two names.

    It doesn't make a difference which name the diagonal case uses;
    there is only one decider and one diagonal case.

    Since there aren't two deciders there, it cannot be that one decides
    something that the other doesn't; there is one one and the other,
    just the one.

    If, in consideration of the situation of two identical deciders with
    different names, you write some program code to explore the situation,
    and your two identical deciders are not behaving identically in your
    program, alarm bells should go off! This is not something to celebrate.

    Whether or not two values are equal in programming is determined by one
    thing: the equality comparison operator/function that we use. That
    choice may or may not be aligned with the nature of the objects being
    compared.

    In your abort detection logic, you compare functions, so you have
    made a certain choice on what it means for functions to be the same.
    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@[email protected] to comp.theory on Thu Sep 18 21:36:03 2025
    From Newsgroup: comp.theory

    On 9/18/2025 9:16 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:

    It is common knowledge that the input that one HP proof
    decider cannot decide can be decided by another.

    But if we have apparently two deciders, which turn out to be
    the same function, then we do not actually have two deciders;
    they are one decider referenced by two names.

    It doesn't make a difference which name the diagonal case uses;
    there is only one decider and one diagonal case.


    So when we use another otherwise identical decider
    on the same input we no longer have the diagonal case.

    DD is defined to "do the opposite of" whatever HHH reports.
    DD is NOT defined to "do the opposite of" whatever HHH1 reports.

    A brilliant guy that doesn't understand this is like Einstein
    rejecting quantum theory: "God does not play dice with the universe"

    Since there aren't two deciders there, it cannot be that one decides something that the other doesn't; there is one one and the other,
    just the one.


    There are two deciders.

    The identity of indiscernibles is an ontological
    principle that states that there cannot be separate
    objects or entities that have all their properties in common. https://en.wikipedia.org/wiki/Identity_of_indiscernibles

    If, in consideration of the situation of two identical deciders with different names, you write some program code to explore the situation,
    and your two identical deciders are not behaving identically in your
    program, alarm bells should go off! This is not something to celebrate.


    Because DD is defined to "do the opposite" of what HHH reports.
    and DD is NOT defined to "do the opposite" of what HHH1 reports.

    HHH and HHH1 are at different machine addresses and the x86
    code only uses the machine address to make it call.

    Whether or not two values are equal in programming is determined by one thing: the equality comparison operator/function that we use. That
    choice may or may not be aligned with the nature of the objects being compared.

    In your abort detection logic, you compare functions, so you have
    made a certain choice on what it means for functions to be the same.


    When HHH sees the same machine address called twice
    in sequence with the same argument with no conditional
    branch instructions inbetween invocation and the call
    THEN HHH HAS CORRECTLY DETECTED THE INFINITE RECURSION
    BEHAVIOR PATTERN.

    This should work just fine even with a 50 function
    long chain that eventually calls the first function.
    --
    Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Kaz Kylheku@[email protected] to comp.theory on Fri Sep 19 03:33:17 2025
    From Newsgroup: comp.theory

    On 2025-09-19, olcott <[email protected]> wrote:
    On 9/18/2025 9:16 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:

    It is common knowledge that the input that one HP proof
    decider cannot decide can be decided by another.

    But if we have apparently two deciders, which turn out to be
    the same function, then we do not actually have two deciders;
    they are one decider referenced by two names.

    It doesn't make a difference which name the diagonal case uses;
    there is only one decider and one diagonal case.


    So when we use another otherwise identical decider
    on the same input we no longer have the diagonal case.

    "otherwise identical" means "identical in some properties, but
    not identical ino thers", which means "not identical".

    /Something/ has to be differenet about the other decider so
    that it is off the diagonal with respect to that DD input.

    It can't just be the name by which are referring to it.

    A function name is the same as a variable name: name
    for an entity.

    If the variables x and y both hold 3, they are not different.
    And f(a):a + x is not a different function from g(b):b + y.

    In math we would be justified in writing f = g.
    (And one interpretation that would have is that for
    every single domain value d f(d) = g(d).)

    But in C, f == g would be false for two different definitions
    of exactly the same function. It is not the f = g
    at all. Pointer equality is not function equality.

    DD is defined to "do the opposite of" whatever HHH reports.
    DD is NOT defined to "do the opposite of" whatever HHH1 reports.

    If you ensure that HHH1 is regarded as equivalent to HHH, then in fact
    DD is defined to do the opposite of HHH1, even though it's referencing
    the HHH name. The underlying function is the same, through two
    different names.

    You've not done everything that is required for HHH and HHH1 to be the
    same. You've given them the same argument list and body, but you've not
    ensured that you are using an equality operation which reports that they
    are the same.

    A brilliant guy that doesn't understand this is like Einstein
    rejecting quantum theory: "God does not play dice with the universe"

    Why don't you understand that comparing function pointers is not
    a valid function equivalence?

    It is correct when it reports true! Because F == F, right?
    Same pointer on both sides must be the same function.

    It is not always correct when it reports false.

    This comparison being false is correct:

    #include <math.h>

    sin == cos

    This one is a false negative:

    HHH == HHH1

    Since there aren't two deciders there, it cannot be that one decides
    something that the other doesn't; there is one one and the other,
    just the one.


    There are two deciders.

    If it is your /intent/ that HHH and HHH1 are not the same, why did you
    give them the same body? Just define them so that they are different calculations.

    And then, drop all rhetoric that insinuates that they are the same.

    The identity of indiscernibles is an ontological
    principle that states that there cannot be separate
    objects or entities that have all their properties in common. https://en.wikipedia.org/wiki/Identity_of_indiscernibles

    This is true and important. But by itself it doesn't help us.

    Because inside a ocmputing machine, entities are often easily
    discernible which we must not treat as discernible.

    An easy example are strings. If you write some little database
    program in C and ask it to look for the record whose name is
    "Bob", it cannot use "name == record->name" for the matching,
    right?

    The "Bob" key that isnput and the "Bob" in record->name
    /are/ discernible according to the ontological principle.
    They each have a different address in the machine.
    But we must treat them as indiscernible.

    If, in consideration of the situation of two identical deciders with
    different names, you write some program code to explore the situation,
    and your two identical deciders are not behaving identically in your
    program, alarm bells should go off! This is not something to celebrate.


    Because DD is defined to "do the opposite" of what HHH reports.
    and DD is NOT defined to "do the opposite" of what HHH1 reports.

    HHH and HHH1 are at different machine addresses and the x86
    code only uses the machine address to make it call.

    The C language specification does not actually require HHH and HHH1
    to be at different machine addresses. The implemntation can recognize
    that the functions are the same and merge them into a single
    implementation, such that HHH1 == HHH.

    In the GNU world, I think to get this optimization to happen
    you have to compile with -ffunction-sections to compartmentalize
    functions in separate sections, and then use the --icf=all
    option of the Gold Linker. (ICF means "identical code folding").

    https://en.wikipedia.org/wiki/Gold_(linker)
    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@[email protected] to comp.theory on Thu Sep 18 23:13:20 2025
    From Newsgroup: comp.theory

    On 9/18/2025 10:33 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:
    On 9/18/2025 9:16 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:

    It is common knowledge that the input that one HP proof
    decider cannot decide can be decided by another.

    But if we have apparently two deciders, which turn out to be
    the same function, then we do not actually have two deciders;
    they are one decider referenced by two names.

    It doesn't make a difference which name the diagonal case uses;
    there is only one decider and one diagonal case.


    So when we use another otherwise identical decider
    on the same input we no longer have the diagonal case.

    "otherwise identical" means "identical in some properties, but
    not identical ino thers", which means "not identical".

    /Something/ has to be differenet about the other decider so
    that it is off the diagonal with respect to that DD input.

    It can't just be the name by which are referring to it.

    A function name is the same as a variable name: name
    for an entity.

    If the variables x and y both hold 3, they are not different.
    And f(a):a + x is not a different function from g(b):b + y.

    In math we would be justified in writing f = g.
    (And one interpretation that would have is that for
    every single domain value d f(d) = g(d).)

    But in C, f == g would be false for two different definitions
    of exactly the same function. It is not the f = g
    at all. Pointer equality is not function equality.

    DD is defined to "do the opposite of" whatever HHH reports.
    DD is NOT defined to "do the opposite of" whatever HHH1 reports.

    If you ensure that HHH1 is regarded as equivalent to HHH, then in fact
    DD is defined to do the opposite of HHH1, even though it's referencing
    the HHH name. The underlying function is the same, through two
    different names.

    You've not done everything that is required for HHH and HHH1 to be the
    same. You've given them the same argument list and body, but you've not ensured that you are using an equality operation which reports that they
    are the same.

    A brilliant guy that doesn't understand this is like Einstein
    rejecting quantum theory: "God does not play dice with the universe"

    Why don't you understand that comparing function pointers is not
    a valid function equivalence?


    Because it is a matter of verifiable objective fact that it is.

    It is correct when it reports true! Because F == F, right?
    Same pointer on both sides must be the same function.

    It is not always correct when it reports false.

    This comparison being false is correct:

    #include <math.h>

    sin == cos

    This one is a false negative:

    HHH == HHH1

    Since there aren't two deciders there, it cannot be that one decides
    something that the other doesn't; there is one one and the other,
    just the one.


    There are two deciders.

    If it is your /intent/ that HHH and HHH1 are not the same, why did you
    give them the same body? Just define them so that they are different calculations.

    And then, drop all rhetoric that insinuates that they are the same.

    The identity of indiscernibles is an ontological
    principle that states that there cannot be separate
    objects or entities that have all their properties in common.
    https://en.wikipedia.org/wiki/Identity_of_indiscernibles

    This is true and important. But by itself it doesn't help us.

    Because inside a ocmputing machine, entities are often easily
    discernible which we must not treat as discernible.

    An easy example are strings. If you write some little database
    program in C and ask it to look for the record whose name is
    "Bob", it cannot use "name == record->name" for the matching,
    right?

    The "Bob" key that isnput and the "Bob" in record->name
    /are/ discernible according to the ontological principle.
    They each have a different address in the machine.
    But we must treat them as indiscernible.

    If, in consideration of the situation of two identical deciders with
    different names, you write some program code to explore the situation,
    and your two identical deciders are not behaving identically in your
    program, alarm bells should go off! This is not something to celebrate.


    Because DD is defined to "do the opposite" of what HHH reports.
    and DD is NOT defined to "do the opposite" of what HHH1 reports.

    HHH and HHH1 are at different machine addresses and the x86
    code only uses the machine address to make it call.

    The C language specification does not actually require HHH and HHH1
    to be at different machine addresses. The implemntation can recognize
    that the functions are the same and merge them into a single
    implementation, such that HHH1 == HHH.


    That is not the case with my code.
    I turn off all optimizations.

    In the GNU world, I think to get this optimization to happen
    you have to compile with -ffunction-sections to compartmentalize
    functions in separate sections, and then use the --icf=all
    option of the Gold Linker. (ICF means "identical code folding").

    https://en.wikipedia.org/wiki/Gold_(linker)

    --
    Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Fred. Zwarts@[email protected] to comp.theory on Fri Sep 19 10:30:32 2025
    From Newsgroup: comp.theory

    Op 18.sep.2025 om 20:33 schreef olcott:
    On 9/18/2025 1:15 PM, Kaz Kylheku wrote:
    Message-ID: <[email protected]>


    *My superpower is an OCD level of persistence*

    void DDD()
    {
      HHH(DDD);
      return;
    }

    HHH(DDD) simulates DDD, what is the next step
    in the execution trace?

    THE NEXT STEP AND ONLY THE NEXT STEP IN THE EXECUTION TRACE
    WHEN YOU GO MORE THAN ONE SINGLE STEP YO GET IT WRONG.

    As usual incorrect claims without evidence.
    The next step is the call to HHH, but that is not enough to determine
    the behaviour of DDD. The behaviour of DDD depends on the functions
    called by DDD, directly and indirectly, in particular the behaviour of
    HHH. If HHH returns, DDD returns as well.
    If HHH does not return, DDD does not return either and HHH cannot report it.
    We know than HHH returns, but you don't like facts that destroy your
    dreams, so you prefer to ignore them.
    You know that HHH aborts before it can see that there is only a finite recursion. But you prefer to deny it, because you like your dreams more
    that the facts.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Mikko@[email protected] to comp.theory on Fri Sep 19 11:57:46 2025
    From Newsgroup: comp.theory

    On 2025-09-18 14:33:39 +0000, olcott said:

    On 9/18/2025 3:39 AM, Mikko wrote:
    On 2025-09-17 07:48:56 +0000, vallor said:

    On Mon, 15 Sep 2025 14:35:18 -0700, "Chris M. Thomasson"
    <[email protected]> wrote in <10aa0qm$26msp$[email protected]>: >>>

    void Infinite_Recursion()
    {
    Infinite_Recursion();
    return;
    }

    I think not. Blowing the stack is not the same as halting...

    As a matter of principle, it's part of the execution environment,
    just like his partial decider simulating the code.

    In his world, catching it calling itself twice without an intervening
    decision is grounds to abort.

    In our world, when the stack gets used up, it aborts.

    True, but after the abort one cannot claim that the job is completed.
    The job is not completed and the answer to the question is not known.
    To say either "yes" or "no" without completing the job is a lie.

    Meeting the abort criteria entails the answer of reject.

    The answer may be wrong if the abort critera are not soudn
    rejection criteria. Infinite_Rcursion shown above is simple
    ehough that it can be determined without simulation to be
    hon-halting but DDD mentioned on the subject line isn't. HHH
    aborts it so DDD meets some abort cirteria. But DDD halts
    which shows that any abort criteria it may meet are not sound
    rejection criteria.
    --
    Mikko

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From joes@[email protected] to comp.theory on Fri Sep 19 09:12:41 2025
    From Newsgroup: comp.theory

    Am Thu, 18 Sep 2025 23:13:20 -0500 schrieb olcott:
    On 9/18/2025 10:33 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:
    On 9/18/2025 9:16 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:

    So when we use another otherwise identical decider on the same input
    we no longer have the diagonal case.
    Ok, so HHH and HHH1 differ.

    DD is defined to "do the opposite of" whatever HHH reports.
    DD is NOT defined to "do the opposite of" whatever HHH1 reports.
    What's your point if HHH and HHH1 are not identical?

    Why don't you understand that comparing function pointers is not a
    valid function equivalence?
    Because it is a matter of verifiable objective fact that it is.
    lol no. Or stop claiming HHH and HHH1 are identical.
    It is possible to write the same function at two different addresses.

    The identity of indiscernibles is an ontological principle that states
    that there cannot be separate objects or entities that have all their
    properties in common.
    https://en.wikipedia.org/wiki/Identity_of_indiscernibles
    HHH and HHH1 don't have their address in common.

    Because DD is defined to "do the opposite" of what HHH reports.
    and DD is NOT defined to "do the opposite" of what HHH1 reports.
    HHH and HHH1 are at different machine addresses and the x86 code only
    uses the machine address to make it call.
    The C language specification does not actually require HHH and HHH1 to
    be at different machine addresses. The implemntation can recognize that
    the functions are the same and merge them into a single implementation,
    such that HHH1 == HHH.
    That is not the case with my code. I turn off all optimizations.
    Then you are depending on implementation details.
    --
    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.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@[email protected] to comp.theory on Fri Sep 19 10:06:08 2025
    From Newsgroup: comp.theory

    On 9/19/2025 4:12 AM, joes wrote:
    Am Thu, 18 Sep 2025 23:13:20 -0500 schrieb olcott:
    On 9/18/2025 10:33 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:
    On 9/18/2025 9:16 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:

    So when we use another otherwise identical decider on the same input
    we no longer have the diagonal case.
    Ok, so HHH and HHH1 differ.


    It almost like I am talking to people that are brain dead
    DD calls HHH(DD) in recursive simulation
    DD DOES NOT call HHH1() at all.

    I have said this thousands of times now. WTF is wrong with you?
    --
    Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Richard Heathfield@[email protected] to comp.theory on Fri Sep 19 16:22:21 2025
    From Newsgroup: comp.theory

    On 19/09/2025 16:06, olcott wrote:
    On 9/19/2025 4:12 AM, joes wrote:
    Am Thu, 18 Sep 2025 23:13:20 -0500 schrieb olcott:
    On 9/18/2025 10:33 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:
    On 9/18/2025 9:16 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:

    So when we use another otherwise identical decider on the
    same input
    we no longer have the diagonal case.
    Ok, so HHH and HHH1 differ.


    It almost like I am talking to people that are brain dead

    For a genius such as yourself, that must surely just be part of
    the daily round?

    DD calls HHH(DD) in recursive simulation

    Well, no. DD calls HHH, but at no point does HHH call DD.

    DD DOES NOT call HHH1() at all.

    Agreed.

    I have said this thousands of times now. WTF is wrong with you?

    Perhaps he's not in the top 97% like you?
    --
    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
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@[email protected] to comp.theory on Fri Sep 19 11:20:38 2025
    From Newsgroup: comp.theory

    On 9/19/2025 10:22 AM, Richard Heathfield wrote:
    On 19/09/2025 16:06, olcott wrote:
    On 9/19/2025 4:12 AM, joes wrote:
    Am Thu, 18 Sep 2025 23:13:20 -0500 schrieb olcott:
    On 9/18/2025 10:33 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:
    On 9/18/2025 9:16 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:

    So when we use another otherwise identical decider on the same input >>>>>> we no longer have the diagonal case.
    Ok, so HHH and HHH1 differ.


    It almost like I am talking to people that are brain dead

    For a genius such as yourself, that must surely just be part of the
    daily round?

    DD calls HHH(DD) in recursive simulation

    Well, no. DD calls HHH, but at no point does HHH call DD.


    void H()
    {
    D();
    }

    void D()
    {
    H();
    }

    In other words you are too stupid to understand
    that when HHH simulates DD that this has the same
    control flow effect as HHH calling DD() ???

    DD DOES NOT call HHH1() at all.

    Agreed.

    I have said this thousands of times now. WTF is wrong with you?

    Perhaps he's not in the top 97% like you?


    Joes is female. I estimate that Joes is shorthand
    for Josephine rather than plural for Joe.
    --
    Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Richard Heathfield@[email protected] to comp.theory on Fri Sep 19 17:34:58 2025
    From Newsgroup: comp.theory

    On 19/09/2025 17:20, olcott wrote:
    On 9/19/2025 10:22 AM, Richard Heathfield wrote:
    On 19/09/2025 16:06, olcott wrote:
    On 9/19/2025 4:12 AM, joes wrote:
    Am Thu, 18 Sep 2025 23:13:20 -0500 schrieb olcott:
    On 9/18/2025 10:33 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:
    On 9/18/2025 9:16 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:

    So when we use another otherwise identical decider on the
    same input
    we no longer have the diagonal case.
    Ok, so HHH and HHH1 differ.


    It almost like I am talking to people that are brain dead

    For a genius such as yourself, that must surely just be part of
    the daily round?

    DD calls HHH(DD) in recursive simulation

    Well, no. DD calls HHH, but at no point does HHH call DD.


    void H()
    {
      D();
    }

    void D()
    {
      H();
    }

    Yes, that's mutual recursion.

    But HHH() doesn't call DD, so the recursion is not mutual.

    In other words you are too stupid to understand
    that when HHH simulates DD that this has the same
    control flow effect as HHH calling DD() ???

    No, it doesn't. Partly this is because HHH doesn't simulate DD
    (we know this because DD halts but HHH thinks otherwise, which it
    wouldn't if it were simulating correctly), but mostly it's
    because simulation isn't how function calls work in C.

    DD DOES NOT call HHH1() at all.

    Agreed.

    I have said this thousands of times now. WTF is wrong with you?

    Perhaps he's not in the top 97% like you?


    Joes is female. I estimate that Joes is shorthand
    for Josephine rather than plural for Joe.

    If joes would rather we used 'she' I have no doubt he, or she, is
    capable of letting us know all by him- or possible herself. Until
    he (or she) does, I will continue to assume that joes stands for
    Joe S.
    --
    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
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From joes@[email protected] to comp.theory on Fri Sep 19 16:41:40 2025
    From Newsgroup: comp.theory

    Am Fri, 19 Sep 2025 11:20:38 -0500 schrieb olcott:
    On 9/19/2025 10:22 AM, Richard Heathfield wrote:

    Well, no. DD calls HHH, but at no point does HHH call DD.


    void H()
    {
    D();
    }
    void D()
    {
    H();
    }

    In other words you are too stupid to understand that when HHH simulates
    DD that this has the same control flow effect as HHH calling DD() ???

    H can't abort.

    Perhaps he's not in the top 97% like you?
    Joes is female. I estimate that Joes is shorthand for Josephine rather
    than plural for Joe.
    I have only requested not to be assumed male.
    --
    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.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@[email protected] to comp.theory on Fri Sep 19 11:42:31 2025
    From Newsgroup: comp.theory

    On 9/19/2025 11:34 AM, Richard Heathfield wrote:
    On 19/09/2025 17:20, olcott wrote:
    On 9/19/2025 10:22 AM, Richard Heathfield wrote:
    On 19/09/2025 16:06, olcott wrote:
    On 9/19/2025 4:12 AM, joes wrote:
    Am Thu, 18 Sep 2025 23:13:20 -0500 schrieb olcott:
    On 9/18/2025 10:33 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:
    On 9/18/2025 9:16 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:

    So when we use another otherwise identical decider on the same >>>>>>>> input
    we no longer have the diagonal case.
    Ok, so HHH and HHH1 differ.


    It almost like I am talking to people that are brain dead

    For a genius such as yourself, that must surely just be part of the
    daily round?

    DD calls HHH(DD) in recursive simulation

    Well, no. DD calls HHH, but at no point does HHH call DD.


    void H()
    {
       D();
    }

    void D()
    {
       H();
    }

    Yes, that's mutual recursion.

    But HHH() doesn't call DD, so the recursion is not mutual.

    In other words you are too stupid to understand
    that when HHH simulates DD that this has the same
    control flow effect as HHH calling DD() ???

    No, it doesn't. Partly this is because HHH doesn't simulate DD

    Ah so you are too stupid to know that mutual recursion
    may be forced to stopping running yet this does not
    count as halting?

    DD() would never stop running unless HHH intervened
    on its second recursive call.

    <snip>

    If joes would rather we used 'she' I have no doubt he, or she, is
    capable of letting us know all by him- or possible herself. Until he (or she) does, I will continue to assume that joes stands for Joe S.


    She did let me know that she is not a he.
    --
    Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@[email protected] to comp.theory on Fri Sep 19 11:48:00 2025
    From Newsgroup: comp.theory

    On 9/19/2025 11:41 AM, joes wrote:
    Am Fri, 19 Sep 2025 11:20:38 -0500 schrieb olcott:
    On 9/19/2025 10:22 AM, Richard Heathfield wrote:

    Well, no. DD calls HHH, but at no point does HHH call DD.


    void H()
    {
    D();
    }
    void D()
    {
    H();
    }

    In other words you are too stupid to understand that when HHH simulates
    DD that this has the same control flow effect as HHH calling DD() ???

    H can't abort.


    Yet HHH/DD and H/D do have the same basic control flow structure.
    Simulation is the control flow equivalent of a function call.

    Perhaps you still don't know that halting is only
    normal termination not requiring any intervention.

    Perhaps he's not in the top 97% like you?
    Joes is female. I estimate that Joes is shorthand for Josephine rather
    than plural for Joe.
    I have only requested not to be assumed male.


    I want to do the best that I can to meet this request.
    What is best for you?
    --
    Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Kaz Kylheku@[email protected] to comp.theory on Fri Sep 19 17:23:13 2025
    From Newsgroup: comp.theory

    On 2025-09-19, olcott <[email protected]> wrote:
    On 9/19/2025 4:12 AM, joes wrote:
    Am Thu, 18 Sep 2025 23:13:20 -0500 schrieb olcott:
    On 9/18/2025 10:33 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:
    On 9/18/2025 9:16 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:

    So when we use another otherwise identical decider on the same input >>>>> we no longer have the diagonal case.
    Ok, so HHH and HHH1 differ.


    It almost like I am talking to people that are brain dead
    DD calls HHH(DD) in recursive simulation

    HHH(DD) returns pretty soon, after simulating just two calls to the same address, without seeing a conditional jump.

    Once returns, the recursive simulation depth stops growing.

    DD DOES NOT call HHH1() at all.

    That's simply because your system treats HHH1 and HHH
    as different functions.

    Your system treats two functions as unconditionally different if they
    reside at different addresses. It doesn't matter that they have
    identical code. (It's as if relocating a boot loader into high memory
    makes it a different boot loader.)

    And so, HHH1 and HHH being different deciders makes it possible for HHH1
    to resolve the diagonal case that is poised against HHH. Since function addresses are considered significant, it becomes significant that DDD
    calls HHH specifically, rather than the identical-but-not-really
    function HHH1.

    I have said this thousands of times now. WTF is wrong with you?

    Everything in your program has an easy explanation that
    doesn't involve dismantling any theroems about halting.

    You deliberately act mystified by the explanations, because they run
    counter to your ideology.

    You're effectively the leader of a one-man cult, which believes in
    certain scriptures around halting. These scriptures require you to
    confuse truth for falsehood. Even though it is acknowledged that
    P(P) halts, cult members must accept the doctrine that H(P, P) == 0
    ("it is false that P(P) halts") is the correct decision.

    Acceptance of the doctrine ensures that nobody can join your cult
    who is not a total lunatic, and you like it that way.
    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Richard Heathfield@[email protected] to comp.theory on Fri Sep 19 18:26:09 2025
    From Newsgroup: comp.theory

    On 19/09/2025 17:41, joes wrote:
    I have only requested not to be assumed male.

    I generally assume people are what they say they are. I may well
    from time to time use "he", which has been the generic pronoun
    for centuries.

    I respect your contributions to this group, which are valuable no
    matter who the hell or what the hell you are, and I think that's
    the right approach for a mediun such as Usenet.

    I'm not about to jump through pronoun hoops for you or anyone
    else, but I suspect you wouldn't want me to. For 'he' read 'she'
    as and when you please. Fair enough?
    --
    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
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Richard Heathfield@[email protected] to comp.theory on Fri Sep 19 18:31:00 2025
    From Newsgroup: comp.theory

    On 19/09/2025 17:42, olcott wrote:
    On 9/19/2025 11:34 AM, Richard Heathfield wrote:
    On 19/09/2025 17:20, olcott wrote:
    On 9/19/2025 10:22 AM, Richard Heathfield wrote:
    On 19/09/2025 16:06, olcott wrote:
    On 9/19/2025 4:12 AM, joes wrote:
    Am Thu, 18 Sep 2025 23:13:20 -0500 schrieb olcott:
    On 9/18/2025 10:33 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:
    On 9/18/2025 9:16 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:

    So when we use another otherwise identical decider on
    the same input
    we no longer have the diagonal case.
    Ok, so HHH and HHH1 differ.


    It almost like I am talking to people that are brain dead

    For a genius such as yourself, that must surely just be part
    of the daily round?

    DD calls HHH(DD) in recursive simulation

    Well, no. DD calls HHH, but at no point does HHH call DD.


    void H()
    {
       D();
    }

    void D()
    {
       H();
    }

    Yes, that's mutual recursion.

    But HHH() doesn't call DD, so the recursion is not mutual.

    In other words you are too stupid to understand
    that when HHH simulates DD that this has the same
    control flow effect as HHH calling DD() ???

    No, it doesn't. Partly this is because HHH doesn't simulate DD

    Ah so you are too stupid

    Well, when you're in the top 97% you have to be a lot smarter
    than 3% of people, right? Maybe I'm in that bottom 3%.

    to know that mutual recursion

    It isn't mutual recursion.

    DD calls HHH.

    HHH doesn't call DD.

    may be forced to stopping running yet this does not
    count as halting?

    If it stops, it halts. If it halts, it stops. Welcome to English.

    DD() would never stop running unless HHH intervened

    But HHH (which is part of DD) /does/ intervene by returning 0. DD
    therefore 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
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Richard Heathfield@[email protected] to comp.theory on Fri Sep 19 18:32:53 2025
    From Newsgroup: comp.theory

    On 19/09/2025 17:48, olcott wrote:
    Perhaps you still don't know that halting is only
    normal termination not requiring any intervention.

    DD doesn't require any intervention. It halts all by itself,
    after first soliciting HHH's opinion.

    HHH is part of DD, not an external agency.
    --
    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
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@[email protected] to comp.theory on Fri Sep 19 12:41:37 2025
    From Newsgroup: comp.theory

    On 9/19/2025 12:23 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:
    On 9/19/2025 4:12 AM, joes wrote:
    Am Thu, 18 Sep 2025 23:13:20 -0500 schrieb olcott:
    On 9/18/2025 10:33 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:
    On 9/18/2025 9:16 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:

    So when we use another otherwise identical decider on the same input >>>>>> we no longer have the diagonal case.
    Ok, so HHH and HHH1 differ.


    It almost like I am talking to people that are brain dead
    DD calls HHH(DD) in recursive simulation

    HHH(DD) returns pretty soon, after simulating just two calls to the same address, without seeing a conditional jump.

    Once returns, the recursive simulation depth stops growing.

    DD DOES NOT call HHH1() at all.

    That's simply because your system treats HHH1 and HHH
    as different functions.


    void H1()
    {
    D();
    }

    void H()
    {
    D();
    }

    void D()
    {
    H();
    }

    Your system treats two functions as unconditionally different if they
    reside at different addresses. It doesn't matter that they have
    identical code. (It's as if relocating a boot loader into high memory
    makes it a different boot loader.)


    That you still cannot understand that when HHH simulates
    DD, this has the same control flow behavior as HHH calling
    DD() seems to be intentional deception on your part.
    --
    Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Kaz Kylheku@[email protected] to comp.theory on Fri Sep 19 18:37:57 2025
    From Newsgroup: comp.theory

    On 2025-09-19, olcott <[email protected]> wrote:
    On 9/19/2025 10:22 AM, Richard Heathfield wrote:
    On 19/09/2025 16:06, olcott wrote:
    On 9/19/2025 4:12 AM, joes wrote:
    Am Thu, 18 Sep 2025 23:13:20 -0500 schrieb olcott:
    On 9/18/2025 10:33 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:
    On 9/18/2025 9:16 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:

    So when we use another otherwise identical decider on the same input >>>>>>> we no longer have the diagonal case.
    Ok, so HHH and HHH1 differ.


    It almost like I am talking to people that are brain dead

    For a genius such as yourself, that must surely just be part of the
    daily round?

    DD calls HHH(DD) in recursive simulation

    Well, no. DD calls HHH, but at no point does HHH call DD.


    void H()
    {
    D();
    }

    void D()
    {
    H();
    }

    In other words you are too stupid to understand
    that when HHH simulates DD that this has the same
    control flow effect as HHH calling DD() ???

    It absolutely does not! When HHH simulates DD, the control remains
    within HHH. The simulation is just a dynamic data structure that
    HHH is manipulating. Control flow does not pass from HHH into that
    simulation.

    It can pull the plug on the simulation at any time, and
    redirect control elsewhere, such as returning 0 to its caller.

    Joes is female. I estimate that Joes is shorthand
    for Josephine rather than plural for Joe.

    And that just about represents an upper bound on how evidence-based your reasoning can be.
    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Kaz Kylheku@[email protected] to comp.theory on Fri Sep 19 18:44:07 2025
    From Newsgroup: comp.theory

    On 2025-09-19, olcott <[email protected]> wrote:
    On 9/19/2025 11:34 AM, Richard Heathfield wrote:
    On 19/09/2025 17:20, olcott wrote:
    On 9/19/2025 10:22 AM, Richard Heathfield wrote:
    On 19/09/2025 16:06, olcott wrote:
    On 9/19/2025 4:12 AM, joes wrote:
    Am Thu, 18 Sep 2025 23:13:20 -0500 schrieb olcott:
    On 9/18/2025 10:33 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:
    On 9/18/2025 9:16 PM, Kaz Kylheku wrote:
    On 2025-09-19, olcott <[email protected]> wrote:

    So when we use another otherwise identical decider on the same >>>>>>>>> input
    we no longer have the diagonal case.
    Ok, so HHH and HHH1 differ.


    It almost like I am talking to people that are brain dead

    For a genius such as yourself, that must surely just be part of the
    daily round?

    DD calls HHH(DD) in recursive simulation

    Well, no. DD calls HHH, but at no point does HHH call DD.


    void H()
    {
       D();
    }

    void D()
    {
       H();
    }

    Yes, that's mutual recursion.

    But HHH() doesn't call DD, so the recursion is not mutual.

    In other words you are too stupid to understand
    that when HHH simulates DD that this has the same
    control flow effect as HHH calling DD() ???

    No, it doesn't. Partly this is because HHH doesn't simulate DD

    Ah so you are too stupid to know that mutual recursion
    may be forced to stopping running yet this does not
    count as halting?

    No, under recursion, a caller cannot force its callee to stop.
    The caller's instruction pointer (or whatever is its equivalent)
    has passed into the callee and will not be back until the callee
    voluntarily returns.

    Simulation is not a function call. The simulator retains
    all control flow.

    The simulee has its own /independent/ control flow that
    exists /in parallel/ to the simulator's control flow.

    It's like a thread.

    If we mee the right conditions with regard to abstraction,
    we can /make it look like/ the simulation is a subroutine call.

    The is how, in programming languages, a function can behaves the
    same way whether it is AST interpreted, byte-code compiled,
    or natively compiled. When a byte-code or AST-interpreted
    function is called, it is not really called. A simulator is
    actually called, and that steps through the function as a data
    structure, performing its steps.

    The illusion is maintained because the simulator runs to completion. It
    does not reveal to the caller that it has forked into two: its own
    control flow and that of the interpreted function.

    When HHH aborts and returns 0, it breaks the illusion. It shows
    that it has maintained an independent thread of control all along,
    and is able to discontinue the simulated callee.

    DD() would never stop running unless HHH intervened
    on its second recursive call.

    HHH could never intervene, if it passed control to DDD.
    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Kaz Kylheku@[email protected] to comp.theory on Fri Sep 19 18:49:13 2025
    From Newsgroup: comp.theory

    On 2025-09-19, olcott <[email protected]> wrote:
    On 9/19/2025 12:23 PM, Kaz Kylheku wrote:
    That's simply because your system treats HHH1 and HHH
    as different functions.


    void H1()
    {
    D();
    }

    void H()
    {
    D();
    }

    void D()
    {
    H();
    }

    It is legal to compile the above such that H1 and H are merged
    to the same address.


    Your system treats two functions as unconditionally different if they
    reside at different addresses. It doesn't matter that they have
    identical code. (It's as if relocating a boot loader into high memory
    makes it a different boot loader.)


    That you still cannot understand that when HHH simulates
    DD, this has the same control flow behavior as HHH calling
    DD() seems to be intentional deception on your part.

    Absolutely does not.

    Only such an /illusion/ (that control flow passes to the simulation and
    then returns) can be created if the simulator hides the fact that it has
    its own independent control flow by earnestly performing the simulation
    for as long as it takes to naturally terminate.

    When HHH returns 0, it breaks out of the illusion and shows "Ha, look!
    I have my own control flow thread completely indpendent of the simulated
    DDD".
    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Chris M. Thomasson@[email protected] to comp.theory on Fri Sep 19 12:19:42 2025
    From Newsgroup: comp.theory

    On 9/18/2025 6:46 PM, olcott wrote:
    On 9/18/2025 8:31 PM, Chris M. Thomasson wrote:
    On 9/18/2025 2:16 PM, Chris M. Thomasson wrote:
    On 9/18/2025 1:37 PM, olcott wrote:
    [...]
    I started programming with TI 99 4a basic
    back in about 1979. It can't do recursion
    so it lacks sufficient expressiveness for
    making my point.

    One can simulate recursion in BASIC, right?

    You never simulated recursion in BASIC before?

    I only want to talk about my C function.


    But it sure "seems" like you don't know enough about C. Also, it seems
    like you may not know enough about BASIC. Trying to tell me that BASIC
    cannot handle recursion...?
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From joes@[email protected] to comp.theory on Fri Sep 19 22:23:02 2025
    From Newsgroup: comp.theory

    Am Fri, 19 Sep 2025 11:42:31 -0500 schrieb olcott:
    On 9/19/2025 11:34 AM, Richard Heathfield wrote:
    On 19/09/2025 17:20, olcott wrote:

    In other words you are too stupid to understand that when HHH
    simulates DD that this has the same control flow effect as HHH calling
    DD() ???
    No, it doesn't. Partly this is because HHH doesn't simulate DD
    Ah so you are too stupid to know that mutual recursion may be forced to stopping running yet this does not count as halting?

    Recursion cannot be stopped from the outside like simulation can.

    If joes would rather we used 'she' I have no doubt he, or she, is
    capable of letting us know all by him- or possible herself. Until he
    (or she) does, I will continue to assume that joes stands for Joe S.
    Yes. That's not what it stands for, though.
    --
    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.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From joes@[email protected] to comp.theory on Fri Sep 19 22:30:18 2025
    From Newsgroup: comp.theory

    Am Wed, 17 Sep 2025 09:40:54 -0500 schrieb olcott:

    I proved that DD is correctly simulated by HHH up to the point where DD
    has met its non-halting criteria.
    Exactly, up to the point, and then not anymore. Like you live forever
    until you die.
    --
    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.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Richard Heathfield@[email protected] to comp.theory on Fri Sep 19 23:54:50 2025
    From Newsgroup: comp.theory

    On 19/09/2025 23:23, joes wrote:
    On 9/19/2025 11:34 AM, Richard Heathfield wrote:

    Recursion cannot be stopped from the outside like simulation can.

    Agreed... unless you count interrupts?

    If joes would rather we used 'she' I have no doubt he, or she, is
    capable of letting us know all by him- or possible herself. Until he
    (or she) does, I will continue to assume that joes stands for Joe S.
    Yes. That's not what it stands for, though.

    Since it's clearly none of my business, I'm keeping my nose out.
    --
    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
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Kaz Kylheku@[email protected] to comp.theory on Sat Sep 20 16:57:47 2025
    From Newsgroup: comp.theory

    On 2025-09-19, Kaz Kylheku <[email protected]> wrote:
    On 2025-09-19, olcott <[email protected]> wrote:
    Ah so you are too stupid to know that mutual recursion
    may be forced to stopping running yet this does not
    count as halting?

    No, under recursion, a caller cannot force its callee to stop.
    The caller's instruction pointer (or whatever is its equivalent)
    has passed into the callee and will not be back until the callee
    voluntarily returns.

    Simulation is not a function call. The simulator retains
    all control flow.

    ... sound of crickets ...
    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @[email protected]
    --- Synchronet 3.21a-Linux NewsLink 1.2