• Re: Every sufficiently competent C programmer knows

    From Richard Damon@21:1/5 to olcott on Mon Mar 10 22:21:07 2025
    On 3/10/25 7:41 PM, olcott wrote:
    typedef void (*ptr)();
    int HHH(ptr P);

    void Infinite_Loop()
    {
      HERE: goto HERE;
      return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.

    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.


    Problem: DD Isn't a program, and if you try to compile it, you will get
    an undiefined symbol HHH.

    That HHH can correct emulate N steps, that go past the "HHH(DD)"
    statement says that HHH is not correctly simulating the "program" given
    to it and inventing behavior.

    Note, since you just defined the HHH DOES just emulate N steps and
    returns the value 0, says that when we pair this DD with that HHH to
    complete the program, we see that the actual behavior of DD will reach
    that final return, just not in the PARTIAL emulation it did.

    Thus we see that Peter Olcott, who claims it is obvious that this
    doesn't happen is just an lying idiot.

    Sorry, you are just showing that your logic is based on FRAUD and ERROR.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to olcott on Tue Mar 11 06:25:57 2025
    On 10/03/2025 23:41, olcott wrote:
    typedef void (*ptr)();
    int HHH(ptr P);

    void Infinite_Loop()
    {
      HERE: goto HERE;
      return;
    }

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

    void DDD()
    {
      HHH(DDD);

    You forgot to show the code for HHH().

    Heads up: the insolubility of the Halting Problem is already
    well-known.

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Tue Mar 11 09:55:22 2025
    Op 11.mrt.2025 om 00:41 schreef olcott:
    typedef void (*ptr)();
    int HHH(ptr P);

    void Infinite_Loop()
    {
      HERE: goto HERE;
      return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.


    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.

    All competent C programmers see that HHH correctly reports that it
    cannot possibly reach the 'return' instruction. (Not more and not less.)
    It is unable to reach the end of the simulation. An end that exists as
    proven by direct execution and other world-class simulators for exactly
    the same finite string as input.

    Olcott must be a very competent C programmer to be able to construct a simulator that does not reach the end of its simulation. :)

    Every competent programmer knows that such an incomplete simulation has
    no relation with the termination of the program described in the input.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Fred. Zwarts on Tue Mar 11 10:01:13 2025
    On 11/03/2025 08:55, Fred. Zwarts wrote:
    Op 11.mrt.2025 om 00:41 schreef olcott:
    typedef void (*ptr)();
    int HHH(ptr P);

    void Infinite_Loop()
    {
       HERE: goto HERE;
       return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.


    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.

    All competent C programmers see that HHH correctly reports that
    it cannot possibly reach the 'return' instruction.

    First, my credentials. I've been programming in C for over 35
    years; I'm told that my book on C has been used on two
    undergraduate Comp Sci courses (one in the States and one in the
    UK); and I have my Knuth cheque. I don't claim to be any kind of
    programming guru, but I hope I do not overstate the case when I
    suggest that I can be regarded as competent not just as a
    programmer but specifically in the C language.

    And yet I can't even /see/ HHH, let alone judge what it does or
    does not do correctly. All I see is a call to it.

    And ld concurs. It can't see HHH either.

    I suggest that Mr Olcott should supply the missing source code if
    he wishes to be taken seriously.

    --
    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 Mikko@21:1/5 to olcott on Tue Mar 11 12:30:58 2025
    On 2025-03-11 02:27:42 +0000, olcott said:

    On 3/10/2025 9:21 PM, Richard Damon wrote:
    On 3/10/25 7:41 PM, olcott wrote:
    typedef void (*ptr)();
    int HHH(ptr P);

    void Infinite_Loop()
    {
       HERE: goto HERE;
       return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.

    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.


    Problem: DD Isn't a program, and if you try to compile it, you will get
    an undiefined symbol HHH.

    HHH need not be a program for this correct thought experiment.
    The only detail required to know about HHH is that it correctly
    emulates N steps of DD.

    Wrong. One nneds also to know how a call to HHH is interpreted, in particular if HHH is not a program.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to Fred. Zwarts on Tue Mar 11 12:36:23 2025
    On 2025-03-11 08:55:22 +0000, Fred. Zwarts said:

    Op 11.mrt.2025 om 00:41 schreef olcott:
    typedef void (*ptr)();
    int HHH(ptr P);

    void Infinite_Loop()
    {
      HERE: goto HERE;
      return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.


    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.

    All competent C programmers see that HHH correctly reports that it
    cannot possibly reach the 'return' instruction.

    How may competent C programmers did you ask?

    The information given is clearly insufficient to determine whether HHH
    reports at all or what it reports. That HHH returns an int is given but
    not how that int (or anything else) relates to "HHH cannot possibly reach
    the return instruction".

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Tue Mar 11 12:28:24 2025
    On 2025-03-10 23:41:13 +0000, olcott said:

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

    void Infinite_Loop()
    {
    HERE: goto HERE;
    return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.

    Every competent programmer knows that the information given is
    insufficient to determine whether HHH emulates at all, and whether
    it emulates correctly if it does.

    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.

    Whether HHH does see those patterns cannot be inferred from the information given. Only about DDD one can see that it halts if HHH returns. In addition, the given information does not tell whether HHH can see patterns that are
    not there.

    How many competent programmers you have asked?

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Tue Mar 11 07:12:50 2025
    On 3/10/25 10:27 PM, olcott wrote:
    On 3/10/2025 9:21 PM, Richard Damon wrote:
    On 3/10/25 7:41 PM, olcott wrote:
    typedef void (*ptr)();
    int HHH(ptr P);

    void Infinite_Loop()
    {
       HERE: goto HERE;
       return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.

    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.


    Problem: DD Isn't a program, and if you try to compile it, you will
    get an undiefined symbol HHH.


    HHH need not be a program for this correct thought experiment.
    The only detail required to know about HHH is that it correctly
    emulates N steps of DD.



    Sure it does, otherwise it can not be a decider.

    Where do you get that it doesn't need to be a program? Your FRAUD again?

    And DD needs to be a program, but it isn't, especially if the it calls
    HHH isn't one.

    So, you logic seems to be that you can prove something about programs
    when you are studing something that isn't a program at all.

    Thats like saying you can determine a taxominy of Cats, but studying
    Flowers.

    You are just showing how stupid and ignorant you are.

    Your "logic" is based on making up lies about what you need to do to
    show what you want, and then just going with that fraud.

    It seems you are trying to use every logical fallicy possible.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to olcott on Tue Mar 11 13:42:39 2025
    On 11/03/2025 13:26, olcott wrote:
    On 3/11/2025 5:01 AM, Richard Heathfield wrote:

    <snip>

    And yet I can't even /see/ HHH, let alone judge what it does or
    does not do correctly. All I see is a call to it.


    It is stipulated that HHH correctly emulates N
    steps of the x86 machine code of its input functions.
    This may or may not include HHH emulating itself
    emulating an input.

    Not good enough. Show us the code. It may contain a bug that you
    haven't spotted.

    And ld concurs. It can't see HHH either.

    I suggest that Mr Olcott should supply the missing source code
    if he wishes to be taken seriously.


    Not required for the above thought experience where
    every relevant behavior has been fully specified. This
    is merely another lame attempt on your part to perpetually
    dodge the point.

    Dodge what point? You must be confusing me with someone else,
    because I have no idea what your point is, unless it's to
    demonstrate that you have read up on the Halting Problem. Jolly
    good tick VG, but it's a done deal, it's in the literature, and
    you're almost a century too late.

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to olcott on Tue Mar 11 13:46:19 2025
    On 11/03/2025 13:31, olcott wrote:
    On 3/11/2025 5:28 AM, Mikko wrote:
    On 2025-03-10 23:41:13 +0000, olcott said:

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

    void Infinite_Loop()
    {
       HERE: goto HERE;
       return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.

    Every competent programmer knows that the information given is
    insufficient to determine whether HHH emulates at all, and whether
    it emulates correctly if it does.

    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.

    Whether HHH does see those patterns cannot be inferred from the
    information
    given. Only about DDD one can see that it halts if HHH returns.
    In addition,
    the given information does not tell whether HHH can see
    patterns that are
    not there.

    How many competent programmers you have asked?


    Two C programmers with masters degrees in computer science
    agree that DDD correctly emulated by HHH cannot possibly
    reach its own "return" instruction and terminate normally.

    Bring 'em on. Perhaps /they/ have the source to HHH, because
    without it you don't have anything. (And btw whatever it is you
    claim to have is far from clear, because all I've seen so far is
    an attempt to express the Halting Problem in C and pseuodocode,
    where the pseudocode reads: HHH(){ magic happens }



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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to olcott on Tue Mar 11 13:47:28 2025
    On 11/03/2025 13:34, olcott wrote:
    On 3/11/2025 5:30 AM, Mikko wrote:
    On 2025-03-11 02:27:42 +0000, olcott said:

    On 3/10/2025 9:21 PM, Richard Damon wrote:
    On 3/10/25 7:41 PM, olcott wrote:
    typedef void (*ptr)();
    int HHH(ptr P);

    void Infinite_Loop()
    {
       HERE: goto HERE;
       return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.

    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.


    Problem: DD Isn't a program, and if you try to compile it,
    you will get an undiefined symbol HHH.

    HHH need not be a program for this correct thought experiment.
    The only detail required to know about HHH is that it correctly
    emulates N steps of DD.

    Wrong. One nneds also to know how a call to HHH is interpreted,
    in particular
    if HHH is not a program.


    You are trying to get away with saying that
    one C function cannot call another C function
    according to the semantics of the C language?

    We don't know whether HHH is a C function because you keep
    forgetting to post its source code.

    --
    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 Mikko@21:1/5 to olcott on Tue Mar 11 15:58:45 2025
    On 2025-03-11 13:34:34 +0000, olcott said:

    On 3/11/2025 5:30 AM, Mikko wrote:
    On 2025-03-11 02:27:42 +0000, olcott said:

    On 3/10/2025 9:21 PM, Richard Damon wrote:
    On 3/10/25 7:41 PM, olcott wrote:
    typedef void (*ptr)();
    int HHH(ptr P);

    void Infinite_Loop()
    {
       HERE: goto HERE;
       return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.

    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.


    Problem: DD Isn't a program, and if you try to compile it, you will get >>>> an undiefined symbol HHH.

    HHH need not be a program for this correct thought experiment.
    The only detail required to know about HHH is that it correctly
    emulates N steps of DD.

    Wrong. One nneds also to know how a call to HHH is interpreted, in particular
    if HHH is not a program.

    You are trying to get away with saying that
    one C function cannot call another C function
    according to the semantics of the C language?

    You are trying to get away with a distraction by lying?

    Calling is possible if the functions are in the same file or if they
    are linked together and the called function is global.

    What is not possible is to determine the consequnces of such call
    without knowing enough about the called function. As you would
    know if you knew anything about programming.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Tue Mar 11 16:06:41 2025
    On 2025-03-11 13:37:49 +0000, olcott said:

    On 3/11/2025 5:36 AM, Mikko wrote:
    On 2025-03-11 08:55:22 +0000, Fred. Zwarts said:

    Op 11.mrt.2025 om 00:41 schreef olcott:
    typedef void (*ptr)();
    int HHH(ptr P);

    void Infinite_Loop()
    {
      HERE: goto HERE;
      return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.


    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.

    All competent C programmers see that HHH correctly reports that it
    cannot possibly reach the 'return' instruction.

    How may competent C programmers did you ask?


    Two C programmers with masters degrees in computer
    science both agreed that DDD correctly emulated by HHH
    cannot possibly reach its own "return" instruction and
    terminate normally.

    Irrelevant. Did they say that "HHH correctly reports that it cannot
    possibly reach the 'return' instruction"?

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Tue Mar 11 16:02:49 2025
    On 2025-03-11 13:26:55 +0000, olcott said:

    On 3/11/2025 5:01 AM, Richard Heathfield wrote:
    On 11/03/2025 08:55, Fred. Zwarts wrote:
    Op 11.mrt.2025 om 00:41 schreef olcott:
    typedef void (*ptr)();
    int HHH(ptr P);

    void Infinite_Loop()
    {
       HERE: goto HERE;
       return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.


    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.

    All competent C programmers see that HHH correctly reports that it
    cannot possibly reach the 'return' instruction.

    First, my credentials. I've been programming in C for over 35 years;
    I'm told that my book on C has been used on two undergraduate Comp Sci
    courses (one in the States and one in the UK); and I have my Knuth
    cheque. I don't claim to be any kind of programming guru, but I hope I
    do not overstate the case when I suggest that I can be regarded as
    competent not just as a programmer but specifically in the C language.

    And yet I can't even /see/ HHH, let alone judge what it does or does
    not do correctly. All I see is a call to it.

    It is stipulated that HHH correctly emulates N
    steps of the x86 machine code of its input functions.
    This may or may not include HHH emulating itself
    emulating an input.

    The stipulation does not include the value of N (although a reasonable interpretation is that it is finite). Nor does the stipulation specify
    what HHH does after the emulation.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Tue Mar 11 16:10:11 2025
    On 2025-03-11 13:31:21 +0000, olcott said:

    On 3/11/2025 5:28 AM, Mikko wrote:
    On 2025-03-10 23:41:13 +0000, olcott said:

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

    void Infinite_Loop()
    {
       HERE: goto HERE;
       return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.

    Every competent programmer knows that the information given is
    insufficient to determine whether HHH emulates at all, and whether
    it emulates correctly if it does.

    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.

    Whether HHH does see those patterns cannot be inferred from the information >> given. Only about DDD one can see that it halts if HHH returns. In addition, >> the given information does not tell whether HHH can see patterns that are
    not there.

    How many competent programmers you have asked?


    Two C programmers with masters degrees in computer science
    agree that DDD correctly emulated by HHH cannot possibly
    reach its own "return" instruction and terminate normally.

    A masters degree in computer science does not guarantee any
    competence in C programming.

    Two answers, even if similar, is not statistically significant.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Mikko on Tue Mar 11 14:13:34 2025
    On 11/03/2025 14:02, Mikko wrote:
    On 2025-03-11 13:26:55 +0000, olcott said:

    On 3/11/2025 5:01 AM, Richard Heathfield wrote:
    On 11/03/2025 08:55, Fred. Zwarts wrote:
    Op 11.mrt.2025 om 00:41 schreef olcott:
    typedef void (*ptr)();
    int HHH(ptr P);

    void Infinite_Loop()
    {
       HERE: goto HERE;
       return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.


    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.

    All competent C programmers see that HHH correctly reports
    that it cannot possibly reach the 'return' instruction.

    First, my credentials. I've been programming in C for over 35
    years; I'm told that my book on C has been used on two
    undergraduate Comp Sci courses (one in the States and one in
    the UK); and I have my Knuth cheque. I don't claim to be any
    kind of programming guru, but I hope I do not overstate the
    case when I suggest that I can be regarded as competent not
    just as a programmer but specifically in the C language.

    And yet I can't even /see/ HHH, let alone judge what it does
    or does not do correctly. All I see is a call to it.

    It is stipulated that HHH correctly emulates N
    steps of the x86 machine code of its input functions.
    This may or may not include HHH emulating itself
    emulating an input.

    The stipulation does not include the value of N (although a
    reasonable
    interpretation is that it is finite). Nor does the stipulation
    specify
    what HHH does after the emulation.

    Nor does the stipulation hold any water.

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Tue Mar 11 17:41:35 2025
    Op 11.mrt.2025 om 14:31 schreef olcott:
    On 3/11/2025 5:28 AM, Mikko wrote:
    On 2025-03-10 23:41:13 +0000, olcott said:

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

    void Infinite_Loop()
    {
       HERE: goto HERE;
       return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.

    Every competent programmer knows that the information given is
    insufficient to determine whether HHH emulates at all, and whether
    it emulates correctly if it does.

    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.

    Whether HHH does see those patterns cannot be inferred from the
    information
    given. Only about DDD one can see that it halts if HHH returns. In
    addition,
    the given information does not tell whether HHH can see patterns that are
    not there.

    How many competent programmers you have asked?


    Two C programmers with masters degrees in computer science
    agree that DDD correctly emulated by HHH cannot possibly
    reach its own "return" instruction and terminate normally.


    It is clear that that HHH cannot possibly simulate itself up to the end.
    DD is not even needed to see that:

    Olcott has admitted that in:

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

    HHH returns and reports that it cannot possibly reach the 'return'
    instruction in its simulation.
    So, what is the purpose of a simulation that is not able to reach the
    end, in particular when direct execution and world-class simulators have
    no problem to reach that end?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Tue Mar 11 18:22:44 2025
    Op 11.mrt.2025 om 18:09 schreef olcott:
    On 3/11/2025 11:41 AM, Fred. Zwarts wrote:
    Op 11.mrt.2025 om 14:31 schreef olcott:
    On 3/11/2025 5:28 AM, Mikko wrote:
    On 2025-03-10 23:41:13 +0000, olcott said:

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

    void Infinite_Loop()
    {
       HERE: goto HERE;
       return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.

    Every competent programmer knows that the information given is
    insufficient to determine whether HHH emulates at all, and whether
    it emulates correctly if it does.

    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.

    Whether HHH does see those patterns cannot be inferred from the
    information
    given. Only about DDD one can see that it halts if HHH returns. In
    addition,
    the given information does not tell whether HHH can see patterns
    that are
    not there.

    How many competent programmers you have asked?


    Two C programmers with masters degrees in computer science
    agree that DDD correctly emulated by HHH cannot possibly
    reach its own "return" instruction and terminate normally.


    It is clear that that HHH cannot possibly simulate itself up to the end.

    I say that the cat is black and you say
    No you are wrong because the dog is white.


    Cats and dogs are irrelevant.
    We are talking about HHH, for which it is clear that it cannot possibly correctly end the simulation.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to olcott on Tue Mar 11 17:49:52 2025
    On 11/03/2025 17:07, olcott wrote:

    <snip>

    You still sound like Richard Damon whom is unable to
    understand that semantic tautologies are irrefutable.

    Jolly good. You're right because you say so. Got it.

    Heads up: claiming that you're right because you're right doesn't
    make your claim irrefutable; it just makes it pointless to reason
    with you.

    When N steps of the above the above functions are
    correctly emulated by HHH
    (this is all that you need to know able HHH) then
    none of them reach their "return" instruction and
    terminate normally.

    HHH can and does emulate itself emulating DDD and DD.

    It doesn't compile here, so it can't, but it does anyway because
    you're right, right? And round and round you go...

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to olcott on Tue Mar 11 17:35:02 2025
    On 11/03/2025 17:01, olcott wrote:
    On 3/11/2025 8:42 AM, Richard Heathfield wrote:
    On 11/03/2025 13:26, olcott wrote:
    On 3/11/2025 5:01 AM, Richard Heathfield wrote:

    <snip>

    And yet I can't even /see/ HHH, let alone judge what it does
    or does not do correctly. All I see is a call to it.


    It is stipulated that HHH correctly emulates N
    steps of the x86 machine code of its input functions.
    This may or may not include HHH emulating itself
    emulating an input.typedef void (*ptr)();
    int HHH(ptr P);

    void Infinite_Loop()
    {
      HERE: goto HERE;
      return;
    }

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

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

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

    Yeah, I got all that.

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.

    We can't know that without seeing the code.

    Not good enough. Show us the code. It may contain a bug that
    you haven't spotted.


    The above is a semantic tautology thus making bugs
    impossible.

    Clearly you haven't done much programming. Bugs are very possible.



    https://github.com/plolcott/x86utm/blob/master/Halt7.c

    Ah! At last, source for HHH.

    u32 HHH(ptr P)
    {
    u32* Aborted;
    u32* execution_trace;
    u32 End_Of_Code;
    goto SKIP;

    DATA1:
    #ifdef _WIN32

    <grin> I see.

    Nice talking to you.

    I suggest that Mr Olcott should supply the missing source
    code if he wishes to be taken seriously.

    He has now done so: <
    https://github.com/plolcott/x86utm/blob/master/Halt7.c>

    It's illegible, of course, but that turns out not to matter.


    Not required for the above thought experience where
    every relevant behavior has been fully specified. This
    is merely another lame attempt on your part to perpetually
    dodge the point.

    Dodge what point? You must be confusing me with someone else,
    because I have no idea what your point is, unless it's to
    demonstrate that you have read up on the Halting Problem. Jolly
    good tick VG, but it's a done deal, it's in the literature, and
    you're almost a century too late.


    If you as not Richard Damon pretending to be someone
    else, great!!!

    I as indeed not Richard Damon pretending to be someone else but,
    in the time it has taken you to establish that, you have
    succeeded in losing my interest because you clearly have nothing
    to say that's worth hearing. Bye-de-bye.

    --
    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 Richard Heathfield on Tue Mar 11 17:42:52 2025
    On 11/03/2025 13:46, Richard Heathfield wrote:
    On 11/03/2025 13:31, olcott wrote:
    On 3/11/2025 5:28 AM, Mikko wrote:
    On 2025-03-10 23:41:13 +0000, olcott said:

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

    void Infinite_Loop()
    {
       HERE: goto HERE;
       return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.

    Every competent programmer knows that the information given is
    insufficient to determine whether HHH emulates at all, and whether
    it emulates correctly if it does.

    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.

    Whether HHH does see those patterns cannot be inferred from the information >>> given. Only about DDD one can see that it halts if HHH returns. In addition,
    the given information does not tell whether HHH can see patterns that are >>> not there.

    How many competent programmers you have asked?


    Two C programmers with masters degrees in computer science
    agree that DDD correctly emulated by HHH cannot possibly
    reach its own "return" instruction and terminate normally.

    Bring 'em on. Perhaps /they/ have the source to HHH, because without it you don't have anything.
    (And btw whatever it is you claim to have is far from clear, because all I've seen so far is an
    attempt to express the Halting Problem in C and pseuodocode, where the pseudocode reads: HHH(){
    magic happens }

    It takes newcommers a while to understand the context behind what PO is saying, and he never bothers
    to properly explain it himself, and is incapable of doing so in any rigorous fashion.

    So I'll explain for you my interpretation.

    His HHH is a C function called by DDD, which will "simulate" DDD(). The simulation consists of
    simulating the individual x86 instructions of DDD [and functions it calls] sequentially, and may
    only be a /partial/ simulation, because HHH also contains logic to analyse the progress of the
    simulation, and it may decide at some point to simply stop simulating. (This being referred to as
    HHH "aborting" its simulation.)

    Of course, we expect that the (partial) simulation of DDD will exactly track the direct execution of
    DDD, up to the point where HHH aborts the simulation. [This is NOT what PO's actual HHH code does,
    due to bugs/design errors/misunderstandings etc., but for the purpose of PO's current point, you
    might consider this to be what happens.]

    So if we imagine HHH never aborts, then HHH simulates DDD(), which calls HHH, and (simulated) HHH
    will again simulate DDD() - a nested simulation. (PO calls this recursive simulation.) This
    continues, and such an HHH will obviously never terminate - in particular THE SIMULATION by outer
    HHH will never proceed as far as DDD's final ret instruction. (This is genuine "infinitely
    recursive simulation")

    OTOH if HHH logic aborts the simulation at some point, regardless of how many nested levels of
    simulation have built up, it will be the /outer/ HHH that aborts, because the outer HHH is ahead of
    all the simulated HHH's in its progress and will reach its abort criterion first. At the point
    where it aborts, the DDD it is simulating will clearly not have reached its final ret instruction,
    as then its simulation would have ended "normally" rather than aborting.

    So whatever HHH's exact logic and abort criteria, it will not be the case that its *simulation of
    DDD* progresses as far as DDD's final ret instruction: either HHH never aborts so never terminates,
    or if it does abort, the (outer) HHH simulating it will abort DDD before it gets to the final ret
    instruction.

    The key point here is that we are not talking about whether DDD() halts! We are only talking about
    whether HHH's /simulation/ of DDD proceeds as far as simulating the final DDD ret instruction. So
    at this point we are not talking about the Halting Problem, as that is concerned with whether DDD()
    halts, not whether some partial simulation of DDD() simulates as far as the ret instruction.

    Given that HHH is free to stop simulating DDD *whenever it wants*, you might consider it rather
    banal to be arguing for several months over whether it actually simulates as far as DDD's return.
    After all, it could simulate one instruction and then give up, so it didn't get as far as DDD
    returning - but SO WHAT!? Why is PO even considering such a question?

    [PO would say something like "/however far/ HHH simulates this remains the case", misunderstanding
    the fact that here he is talking about multiple different HHHs, each with their own distinct DDDs.
    (Yes, none of those different HHHs simulate their corresponding DDD to completion, but all of those
    DDD halt [if run directly], assuming their HHH aborts the simulation at some point. We can see this
    just from the given code of DDD: if HHH returns, DDD returns...)]

    But if you think PO properly understands this you would be vastly overestimating his reasoning
    powers and his capacity for abstract thought. Even if you "agree" that HHH (however coded) will not
    simulate DDD to completion, you would not really be "agreeing" with PO as such, because that would
    imply you understand PO's understanding of all that's been said, and that there is a shared
    agreement on the meaning of what's been said and its consequences etc., and we can guarantee that
    will NOT be the case! We could say PO "fractally" misunderstands every technical concept needed to
    properly discuss the halting problem (or any other technical topic).

    PO's "understanding" will entail some idea that the situation means that DDD "actually" doesn't
    halt, or that HHH is "correct" to say that DDD doesn't halt. (Even though it demonstrably DOES halt
    if not aborted and simulated further. E.g. PO acknowledges that SimulateNoAbort(DDD) would
    simulates to DDD's final ret and DDD() called directly from main() returns and so on).

    Finally, if you really want to see the actual HHH code, its in the halt7.c file (along with DDD)
    that PO provides links to from time to time. However it's not very illuminating due to bugs/design
    errors/misunderstandings which only serve to obfuscate PO's errors in thinking.

    Regards,
    Mike.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Mike Terry on Tue Mar 11 18:23:24 2025
    On 11/03/2025 17:42, Mike Terry wrote:
    Finally, if you really want to see the actual HHH code, its in
    the halt7.c file (along with DDD) that PO provides links to from
    time to time.  However it's not very illuminating due to
    bugs/design errors/misunderstandings which only serve to
    obfuscate PO's errors in thinking.

    [I've now seen the code. Oh deary deary me.]

    Thank you for a spirited attempt to be cogent - or at least as
    cogent as it is possible to be in the circumstances!

    I think PO's first step must be to demonstrate that HHH()
    correctly diagnoses some easy functions, such as these:

    int rha(unsigned int i)
    {
    while(--i > 0)while(--i > 0);
    return 0;
    }

    int rhb(unsigned int i)
    {
    if(i > 0)
    {
    rhb(i/10);
    }
    return putchar(i + '0');
    }

    int rhc(unsigned int i)
    {
    typedef int(*pf)(unsigned int);
    pf arr[3] = {rha, rhb, rhc};
    return arr[i % 3];
    }

    and other such obvious tests.

    HHH(), the procedure that decides whether a program halts, is
    required to work for all programs and all inputs. Does it work on
    those cited above? I'm guessing it doesn't.

    --
    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 wij on Tue Mar 11 19:06:10 2025
    On 11/03/2025 18:33, wij wrote:
    On Tue, 2025-03-11 at 18:23 +0000, Richard Heathfield wrote:
    On 11/03/2025 17:42, Mike Terry wrote:
    Finally, if you really want to see the actual HHH code, its in
    the halt7.c file (along with DDD) that PO provides links to from
    time to time.  However it's not very illuminating due to
    bugs/design errors/misunderstandings which only serve to
    obfuscate PO's errors in thinking.

    [I've now seen the code. Oh deary deary me.]

    Thank you for a spirited attempt to be cogent - or at least as
    cogent as it is possible to be in the circumstances!

    I think PO's first step must be to demonstrate that HHH()
    correctly diagnoses some easy functions, such as these:

    int rha(unsigned int i)
    {
       while(--i > 0)while(--i > 0);
       return 0;
    }

    int rhb(unsigned int i)
    {
       if(i > 0)
       {
         rhb(i/10);
       }
       return putchar(i + '0');
    }

    int rhc(unsigned int i)
    {
       typedef int(*pf)(unsigned int);
       pf arr[3] = {rha, rhb, rhc};
       return arr[i % 3];
    }

    and other such obvious tests.

    HHH(), the procedure that decides whether a program halts, is
    required to work for all programs and all inputs. Does it work on
    those cited above? I'm guessing it doesn't.


    No TM can simulate itself.

    It doesn't have to. For a start, it can take source code as input
    and analyse it in much the same way that a compiler does.

    Proving HP in this way is dead end.

    Proving it any way is a dead end, because the answer to the
    Halting Problem is already known, and has been known since at
    least 1936.

    But if the OP is /going/ to write a decision function to attack
    the Halting Problem, he either writes a general purpose decision
    function or risks tackling the wrong problem.

    --
    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 wij on Tue Mar 11 19:49:10 2025
    On 11/03/2025 19:32, wij wrote:
    On Tue, 2025-03-11 at 19:06 +0000, Richard Heathfield wrote:
    On 11/03/2025 18:33, wij wrote:
    On Tue, 2025-03-11 at 18:23 +0000, Richard Heathfield wrote:
    On 11/03/2025 17:42, Mike Terry wrote:
    Finally, if you really want to see the actual HHH code, its in
    the halt7.c file (along with DDD) that PO provides links to from
    time to time.  However it's not very illuminating due to
    bugs/design errors/misunderstandings which only serve to
    obfuscate PO's errors in thinking.

    [I've now seen the code. Oh deary deary me.]

    Thank you for a spirited attempt to be cogent - or at least as
    cogent as it is possible to be in the circumstances!

    I think PO's first step must be to demonstrate that HHH()
    correctly diagnoses some easy functions, such as these:

    int rha(unsigned int i)
    {
        while(--i > 0)while(--i > 0);
        return 0;
    }

    int rhb(unsigned int i)
    {
        if(i > 0)
        {
          rhb(i/10);
        }
        return putchar(i + '0');
    }

    int rhc(unsigned int i)
    {
        typedef int(*pf)(unsigned int);
        pf arr[3] = {rha, rhb, rhc};
        return arr[i % 3];
    }

    and other such obvious tests.

    HHH(), the procedure that decides whether a program halts, is
    required to work for all programs and all inputs. Does it work on
    those cited above? I'm guessing it doesn't.


    No TM can simulate itself.

    It doesn't have to. For a start, it can take source code as input
    and analyse it in much the same way that a compiler does.

    SO, what is 'it', the decider?

    Yes. `It' is the program that determines whether an input program
    (fed in at runtime) will halt when supplied with data also fed in
    at run time.

    (note: its input is the source of itself)

    No. Its input is /any/ program. Yes, it must be able to handle
    itself (or its own source, if it works on source code), but a
    decider that can only handle itself is trivial to write, and it
    doesn't even have to read the source:

    int halts(struct source *s)
    {
    return 1;
    }

    Gee, that was hard. But it doesn't address the Halting Problem. A
    general decider is required, and HHH() isn't one.

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to olcott on Tue Mar 11 20:29:14 2025
    On 11/03/2025 20:14, olcott wrote:
    there is no need to
    see the code.

    These are not the droids I'm looking for.

    But now that you have shown the code, it is obvious that it is
    not a general purpose decision procedure for determining whether
    arbitrary programs terminate, and so it is not fit for purpose,
    stipulated or 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 Mike Terry@21:1/5 to Richard Heathfield on Tue Mar 11 20:37:04 2025
    On 11/03/2025 18:23, Richard Heathfield wrote:
    On 11/03/2025 17:42, Mike Terry wrote:
    Finally, if you really want to see the actual HHH code, its in the halt7.c file (along with DDD)
    that PO provides links to from time to time.  However it's not very illuminating due to
    bugs/design errors/misunderstandings which only serve to obfuscate PO's errors in thinking.

    [I've now seen the code. Oh deary deary me.]

    :)


    Thank you for a spirited attempt to be cogent - or at least as cogent as it is possible to be in the
    circumstances!

    I think PO's first step must be to demonstrate that HHH() correctly diagnoses some easy functions,
    such as these:

    Not really necessary - PO is not trying or claiming to have a (full) halt decider.

    Originally his claim was that he had a program which worked for the counter-example TM used in the
    common (e.g. Linz book) proof. Such a program is impossible, as Linz and others prove, so having a
    program H and its corresponding "counter-example" D, such that H correctly decides D, would
    certainly show that the Linz proof is wrong. His claim was always that he had "refuted the HP
    proof", or sometimes that he had refuted the HP theorem itself although he's been told dozens of
    times that there are many alternative proofs for the result.

    [As it turned out, PO's D(D) halted when run under his x86utm environment, while H(D,D) which is
    required to return the halting status of computation D(D) returned 0 (=non-halting). That is
    exactly what the Linz proofs claim!]

    Anyhow, his decider only /has/ to correctly decide the one input, which is the D constructed from H
    by the usual method (basically D calls H to see what H claims is the halting behaviour, then does
    the opposite - I'm not sure if you're familiar with the proof, but imagine you would be given your
    background).

    His decider H works (subject to design errors/bugs and so on) by single-stepping a simulation of its
    input computation, and monitoring for conditions that PO believes indicate non-termination. He
    tests a couple of conditions, and when one of those matches H aborts and returns non-halting.
    Alternatively if the simulation halts normally, H returns halting. The problem is (at least) one of
    his non-halting-behaviour tests is invalid, matching during the simulation of DDD, which is a
    halting computation.

    It is true that sometimes his tests match and the input is indeed non-halting. PO quotes this as
    evidence that his tests "work", so when the decided non-halting for a halting computation they must
    be correct and the halting computation in fact is non-halting because it "exhibited non-halting
    behaviour"!



    int rha(unsigned int i)
    {
      while(--i > 0)while(--i > 0);
      return 0;
    }

    int rhb(unsigned int i)
    {
      if(i > 0)
      {
        rhb(i/10);
      }
      return putchar(i + '0');
    }

    int rhc(unsigned int i)
    {
      typedef int(*pf)(unsigned int);
      pf arr[3] = {rha, rhb, rhc};
      return arr[i % 3];
    }

    and other such obvious tests.

    HHH(), the procedure that decides whether a program halts, is required to work for all programs and
    all inputs. Does it work on those cited above? I'm guessing it doesn't.


    I would have to think a bit about your examples - or more likely just try them out (which I'm not
    motivated to do). PO's non-halting tests involve observing loops and conditional branches in some
    combination. The major problem for his HHH/DDD is with the simulation aspect - the tests can match
    when the same code address is reached but across completely different simulation levels. PO does
    not appreciate that tests which /might/ work in a non-simulation setting, could go horribly wrong
    when simulation is involved... (so your tests aren't especially relevant for PO's code logic - and
    as I said there is only the one case that he really has to handle.)

    Mike.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Mike Terry on Tue Mar 11 21:10:55 2025
    On 11/03/2025 20:37, Mike Terry wrote:
    On 11/03/2025 18:23, Richard Heathfield wrote:
    On 11/03/2025 17:42, Mike Terry wrote:
    Finally, if you really want to see the actual HHH code, its in
    the halt7.c file (along with DDD) that PO provides links to
    from time to time.  However it's not very illuminating due to
    bugs/design errors/misunderstandings which only serve to
    obfuscate PO's errors in thinking.

    [I've now seen the code. Oh deary deary me.]

    :)


    Thank you for a spirited attempt to be cogent - or at least as
    cogent as it is possible to be in the circumstances!

    I think PO's first step must be to demonstrate that HHH()
    correctly diagnoses some easy functions, such as these:

    Not really necessary - PO is not trying or claiming to have a
    (full) halt decider.

    In which case he has nothing. And I'll stipulate that, so he
    can't even argue back.


    Originally his claim was that he had a program which worked for
    the counter-example TM used in the common (e.g. Linz book)
    proof.  Such a program is impossible, as Linz and others prove,
    so having a program H and its corresponding "counter-example" D,
    such that H correctly decides D, would certainly show that the
    Linz proof is wrong.  His claim was always that he had "refuted
    the HP proof", or sometimes that he had refuted the HP theorem
    itself although he's been told dozens of times that there are
    many alternative proofs for the result.

    He's beginning to remind me of a few other Usenet characters.


    [As it turned out, PO's D(D) halted when run under his x86utm
    environment, while H(D,D) which is required to return the halting
    status of computation D(D) returned 0 (=non-halting).  That is
    exactly what the Linz proofs claim!]

    Anyhow, his decider only /has/ to correctly decide the one input,
    which is the D constructed from H by the usual method (basically
    D calls H to see what H claims is the halting behaviour, then
    does the opposite - I'm not sure if you're familiar with the
    proof, but imagine you would be given your background).

    It's in GEB, so I first read it roughly a thousand years ago.

    I would take issue with one thing though - if his decider doesn't
    handle arbitrary programs as input and correctly diagnose them,
    he is addressing an entirely different problem.


    His decider H works (subject to design errors/bugs and so on) by single-stepping a simulation of its input computation, and
    monitoring for conditions that PO believes indicate
    non-termination.  He tests a couple of conditions, and when one
    of those matches H aborts and returns non-halting. Alternatively
    if the simulation halts normally, H returns halting.  The problem
    is (at least) one of his non-halting-behaviour tests is invalid,
    matching during the simulation of DDD, which is a halting
    computation.

    It is true that sometimes his tests match and the input is indeed non-halting.  PO quotes this as evidence that his tests "work",
    so when the decided non-halting for a halting computation they
    must be correct and the halting computation in fact is
    non-halting because it "exhibited non-halting behaviour"!

    Did he pay out a ball of twine behind him?

    int rha(unsigned int i)
    {
       while(--i > 0)while(--i > 0);
       return 0;
    }

    int rhb(unsigned int i)
    {
       if(i > 0)
       {
         rhb(i/10);
       }
       return putchar(i + '0');
    }

    int rhc(unsigned int i)
    {
       typedef int(*pf)(unsigned int);
       pf arr[3] = {rha, rhb, rhc};
       return arr[i % 3];
    }

    and other such obvious tests.

    HHH(), the procedure that decides whether a program halts, is
    required to work for all programs and all inputs. Does it work
    on those cited above? I'm guessing it doesn't.


    I would have to think a bit about your examples - or more likely
    just try them out (which I'm not motivated to do).

    I knew you were smart. :-)

    PO's
    non-halting tests involve observing loops and conditional
    branches in some combination.  The major problem for his HHH/DDD
    is with the simulation aspect - the tests can match when the same
    code address is reached but across completely different
    simulation levels.  PO does not appreciate that tests which
    /might/ work in a non-simulation setting, could go horribly wrong
    when simulation is involved...  (so your tests aren't especially
    relevant for PO's code logic - and as I said there is only the
    one case that he really has to handle.)

    I must disagree. HP is about detecting whether an ***arbitrary***
    program (and to show willing I'll buy 'function' for 'program')
    will terminate. Special cases need not apply.

    If his decision procedure cannot handle arbitrary functions, he
    isn't addressing HP.

    Those functions I rattled off weren't intended to be particularly
    hard exercises - just opportunities for a proof of concept. I
    don't expect him to avail himself of that opportunity because I
    don't believe him to be arguing in good faith.

    --
    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 Tue Mar 11 18:46:56 2025
    On 3/11/25 2:54 PM, olcott wrote:
    On 3/11/2025 8:58 AM, Mikko wrote:
    On 2025-03-11 13:34:34 +0000, olcott said:

    On 3/11/2025 5:30 AM, Mikko wrote:
    On 2025-03-11 02:27:42 +0000, olcott said:

    On 3/10/2025 9:21 PM, Richard Damon wrote:
    On 3/10/25 7:41 PM, olcott wrote:
    typedef void (*ptr)();
    int HHH(ptr P);

    void Infinite_Loop()
    {
       HERE: goto HERE;
       return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.

    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.


    Problem: DD Isn't a program, and if you try to compile it, you
    will get an undiefined symbol HHH.

    HHH need not be a program for this correct thought experiment.
    The only detail required to know about HHH is that it correctly
    emulates N steps of DD.

    Wrong. One nneds also to know how a call to HHH is interpreted, in
    particular
    if HHH is not a program.

    You are trying to get away with saying that
    one C function cannot call another C function
    according to the semantics of the C language?

    You are trying to get away with a distraction by lying?

    Calling is possible if the functions are in the same file or if they
    are linked together and the called function is global.

    What is not possible is to determine the consequnces of such call
    without knowing enough about the called function. As you would
    know if you knew anything about programming.


    I specified that the functions are correctly emulated
    by HHH (by whatever means) and added that for HHH(DD)
    and HHH(DDD) HHH does emulate itself emulating these
    inputs to an arbitrary recursive depth.


    Which isn't a full definition, and is infact self-contradictory, and
    thus your "logic" is just a fraud.

    You aren't allowed to just assume that something can happen, like HHH
    does correctly emulate itself and also returns an answer.

    If HHH meets your requirements, it does not answer and thus fails to be
    a decider, and YES, it IS reasonable to require a correct simulator
    (even if it is trying to be a decider) to get stuck in that infinite
    loop, as that is part of the requirements to be a correct emulator.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Mike Terry on Wed Mar 12 04:54:25 2025
    On 12/03/2025 04:33, Mike Terry wrote:
    He won't be interested in your cases.  In the end he is just
    interested in the one input case which he feels "refutes the Linz
    proof".

    Thank you for a highly informative reply. It has convinced me to
    do what I should have done hours ago...

    ...done.

    Now that he's out of the way, it occurs to me to speculate that
    the Halting Problem would be an interesting project to hand to
    one of these newfangled AIs. "All right, Mr CleverAlgorithm; if
    you're so smart let's see you handle a paradox."

    --
    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 Richard Heathfield on Wed Mar 12 04:33:46 2025
    On 11/03/2025 21:10, Richard Heathfield wrote:
    On 11/03/2025 20:37, Mike Terry wrote:
    On 11/03/2025 18:23, Richard Heathfield wrote:
    On 11/03/2025 17:42, Mike Terry wrote:
    Finally, if you really want to see the actual HHH code, its in the halt7.c file (along with DDD)
    that PO provides links to from time to time.  However it's not very illuminating due to
    bugs/design errors/misunderstandings which only serve to obfuscate PO's errors in thinking.

    [I've now seen the code. Oh deary deary me.]

    :)


    Thank you for a spirited attempt to be cogent - or at least as cogent as it is possible to be in
    the circumstances!

    I think PO's first step must be to demonstrate that HHH() correctly diagnoses some easy
    functions, such as these:

    Not really necessary - PO is not trying or claiming to have a (full) halt decider.

    In which case he has nothing. And I'll stipulate that, so he can't even argue back.


    Originally his claim was that he had a program which worked for the counter-example TM used in the
    common (e.g. Linz book) proof.  Such a program is impossible, as Linz and others prove, so having
    a program H and its corresponding "counter-example" D, such that H correctly decides D, would
    certainly show that the Linz proof is wrong.  His claim was always that he had "refuted the HP
    proof", or sometimes that he had refuted the HP theorem itself although he's been told dozens of
    times that there are many alternative proofs for the result.

    He's beginning to remind me of a few other Usenet characters.


    [As it turned out, PO's D(D) halted when run under his x86utm environment, while H(D,D) which is
    required to return the halting status of computation D(D) returned 0 (=non-halting).  That is
    exactly what the Linz proofs claim!]

    Anyhow, his decider only /has/ to correctly decide the one input, which is the D constructed from
    H by the usual method (basically D calls H to see what H claims is the halting behaviour, then
    does the opposite - I'm not sure if you're familiar with the proof, but imagine you would be given
    your background).

    It's in GEB, so I first read it roughly a thousand years ago.

    I would take issue with one thing though - if his decider doesn't handle arbitrary programs as input
    and correctly diagnose them, he is addressing an entirely different problem.


    His decider H works (subject to design errors/bugs and so on) by single-stepping a simulation of
    its input computation, and monitoring for conditions that PO believes indicate non-termination.
    He tests a couple of conditions, and when one of those matches H aborts and returns non-halting.
    Alternatively if the simulation halts normally, H returns halting.  The problem is (at least) one
    of his non-halting-behaviour tests is invalid, matching during the simulation of DDD, which is a
    halting computation.

    It is true that sometimes his tests match and the input is indeed non-halting.  PO quotes this as
    evidence that his tests "work", so when the decided non-halting for a halting computation they
    must be correct and the halting computation in fact is non-halting because it "exhibited
    non-halting behaviour"!

    Did he pay out a ball of twine behind him?

    int rha(unsigned int i)
    {
       while(--i > 0)while(--i > 0);
       return 0;
    }

    int rhb(unsigned int i)
    {
       if(i > 0)
       {
         rhb(i/10);
       }
       return putchar(i + '0');
    }

    int rhc(unsigned int i)
    {
       typedef int(*pf)(unsigned int);
       pf arr[3] = {rha, rhb, rhc};
       return arr[i % 3];
    }

    and other such obvious tests.

    HHH(), the procedure that decides whether a program halts, is required to work for all programs
    and all inputs. Does it work on those cited above? I'm guessing it doesn't. >>>

    I would have to think a bit about your examples - or more likely just try them out (which I'm not
    motivated to do).

    I knew you were smart. :-)

    PO's non-halting tests involve observing loops and conditional branches in some combination.  The
    major problem for his HHH/DDD is with the simulation aspect - the tests can match when the same
    code address is reached but across completely different simulation levels.  PO does not appreciate
    that tests which /might/ work in a non-simulation setting, could go horribly wrong when simulation
    is involved...  (so your tests aren't especially relevant for PO's code logic - and as I said
    there is only the one case that he really has to handle.)

    I must disagree. HP is about detecting whether an ***arbitrary*** program (and to show willing I'll
    buy 'function' for 'program') will terminate. Special cases need not apply.

    If his decision procedure cannot handle arbitrary functions, he isn't addressing HP.

    Sure - if PO wants to prove that HP theorem is false, a clear way for him to do that would be to
    produce a halt decider, and like you say, such a HD must decide /every/ input correctly.

    Then again, if his claim is only that Linz HP proof is invalid, he could just attack the /proof/
    presented in Linz.

    Linz proof high level summary:
    [I use <P> notation to denote "TM tape encoding of P", where P is a TM or TM input.]
    1) Suppose H is a halt decider, taking inputs (<P>,<I>) where
    <P>: a TM description, suitably encoded
    <I>: a TM tape, suitably encoded
    2) ..then from H we can construct a new TM H^ by modifying H in the following manner:
    a) H^ is basically a wrapped version of H, with additional pre/post processing
    steps
    b) pre-processing: H^ duplicates the input on its tape, [its single input
    parameter becoming the two input parameters for wrapped H]
    c) post-processing: if wrapped_H decided HALTS, enter infinite loop
    else if it decided DOESNT_HALT, halt straight away
    3) With H^ so constructed, it is easily shown that
    if H^(<H^>) halts, then H(<H^>,<H^>) decides DOESNT_HALT, and
    if H^(<H^>) doesn't halt, then H(<H^>,<H^>) decides HALTS.
    4) Either way, H fails to decide the specific input (<H^>,<H^>) correctly,
    contrary to assumption (1). Hence no halt decider exists.

    While the proof assumes H is a (full) halt decider (deciding ALL inputs correctly), the logic of the
    proof can be applied to any H meeting the much weaker requirement that H simply decides (correctly
    or incorrectly) the one particular input (<H^>,<H^>). Applied with this weaker requirent, the proof
    shows such an H must decide that specific input /incorrectly/. [The proof never talks about the
    behaviour of H for any input other than (<H^>,<H^>), so still applies even if H gets other inputs
    wrong or even fails to halt for other inputs...]

    PO claimed he had an actual example of such an H which decides input (H^,H^) /correctly/. If this
    were true, the proof logic (1)-(4) would clearly be incorrect somewhere, and PO would have "refuted
    the Linz proof of HP". *It would not matter that his H is not a full halt decider* - the proof
    would still be refuted.

    Of course, it turned out that his H /incorrectly/ decided the critical input exactly as Linz claims,
    so that should have been the end of things! But PO just doubles down, claiming that his H was
    correct to decide DOESNT_HALT even though his H^(H^) demonstrably halts. All his subsequent posts
    are efforts to explain why Wrong is Right for whatever reason.

    So... your remark was fair if PO claims HP theorem is false, not so much if he merely claims to have
    refuted one specific proof of the theorem.


    Those functions I rattled off weren't intended to be particularly hard exercises - just
    opportunities for a proof of concept. I don't expect him to avail himself of that opportunity
    because I don't believe him to be arguing in good faith.


    He won't be interested in your cases. In the end he is just interested in the one input case which
    he feels "refutes the Linz proof".


    Regards,
    Mike.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Wed Mar 12 11:01:40 2025
    On 2025-03-11 18:54:20 +0000, olcott said:

    On 3/11/2025 8:58 AM, Mikko wrote:
    On 2025-03-11 13:34:34 +0000, olcott said:

    On 3/11/2025 5:30 AM, Mikko wrote:
    On 2025-03-11 02:27:42 +0000, olcott said:

    On 3/10/2025 9:21 PM, Richard Damon wrote:
    On 3/10/25 7:41 PM, olcott wrote:
    typedef void (*ptr)();
    int HHH(ptr P);

    void Infinite_Loop()
    {
       HERE: goto HERE;
       return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.

    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.


    Problem: DD Isn't a program, and if you try to compile it, you will get >>>>>> an undiefined symbol HHH.

    HHH need not be a program for this correct thought experiment.
    The only detail required to know about HHH is that it correctly
    emulates N steps of DD.

    Wrong. One nneds also to know how a call to HHH is interpreted, in particular
    if HHH is not a program.

    You are trying to get away with saying that
    one C function cannot call another C function
    according to the semantics of the C language?

    You are trying to get away with a distraction by lying?

    Calling is possible if the functions are in the same file or if they
    are linked together and the called function is global.

    What is not possible is to determine the consequnces of such call
    without knowing enough about the called function. As you would
    know if you knew anything about programming.


    I specified that the functions are correctly emulated
    by HHH (by whatever means)

    No, you didn't. You just stated someting about the (maybe counterfactual) hypothesis that it does.

    and added that for HHH(DD) and HHH(DDD) HHH does emulate itself
    emulating these inputs to an arbitrary recursive depth.

    No, there is no such addition above or in OP.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Wed Mar 12 10:24:06 2025
    Op 11.mrt.2025 om 21:37 schreef Mike Terry:
    On 11/03/2025 18:23, Richard Heathfield wrote:
    On 11/03/2025 17:42, Mike Terry wrote:
    Finally, if you really want to see the actual HHH code, its in the
    halt7.c file (along with DDD) that PO provides links to from time to
    time.  However it's not very illuminating due to bugs/design errors/
    misunderstandings which only serve to obfuscate PO's errors in thinking.

    [I've now seen the code. Oh deary deary me.]

    :)


    Thank you for a spirited attempt to be cogent - or at least as cogent
    as it is possible to be in the circumstances!

    I think PO's first step must be to demonstrate that HHH() correctly
    diagnoses some easy functions, such as these:

    Not really necessary - PO is not trying or claiming to have a (full)
    halt decider.

    Originally his claim was that he had a program which worked for the counter-example TM used in the common (e.g. Linz book) proof.  Such a program is impossible, as Linz and others prove, so having a program H
    and its corresponding "counter-example" D, such that H correctly decides
    D, would certainly show that the Linz proof is wrong.  His claim was
    always that he had "refuted the HP proof", or sometimes that he had
    refuted the HP theorem itself although he's been told dozens of times
    that there are many alternative proofs for the result.

    [As it turned out, PO's D(D) halted when run under his x86utm
    environment, while H(D,D) which is required to return the halting status
    of computation D(D) returned 0 (=non-halting).  That is exactly what the Linz proofs claim!]

    Anyhow, his decider only /has/ to correctly decide the one input, which
    is the D constructed from H by the usual method (basically D calls H to
    see what H claims is the halting behaviour, then does the opposite - I'm
    not sure if you're familiar with the proof, but imagine you would be
    given your background).

    His decider H works (subject to design errors/bugs and so on) by single- stepping a simulation of its input computation, and monitoring for
    conditions that PO believes indicate non-termination.  He tests a couple
    of conditions, and when one of those matches H aborts and returns non- halting. Alternatively if the simulation halts normally, H returns
    halting.  The problem is (at least) one of his non-halting-behaviour
    tests is invalid, matching during the simulation of DDD, which is a
    halting computation.

    It seems that he does not understand that the these conditions (that
    indicate non-termination behaviour), form exactly the halting problem.
    PO claims that simulation is the solution, but he only shifts the
    problem of non-termination detection to the detection of these 'special conditions'.
    When we realise that, we understand that a finite or infinite simulation
    is not very relevant. The discussion should address these conditions.
    But PO carefully avoids discussions about the detection of these
    conditions, although they are the heart of the problem.


    It is true that sometimes his tests match and the input is indeed non- halting.  PO quotes this as evidence that his tests "work", so when the decided non-halting for a halting computation they must be correct and
    the halting computation in fact is non-halting because it "exhibited non-halting behaviour"!



    int rha(unsigned int i)
    {
       while(--i > 0)while(--i > 0);
       return 0;
    }

    int rhb(unsigned int i)
    {
       if(i > 0)
       {
         rhb(i/10);
       }
       return putchar(i + '0');
    }

    int rhc(unsigned int i)
    {
       typedef int(*pf)(unsigned int);
       pf arr[3] = {rha, rhb, rhc};
       return arr[i % 3];
    }

    and other such obvious tests.

    HHH(), the procedure that decides whether a program halts, is required
    to work for all programs and all inputs. Does it work on those cited
    above? I'm guessing it doesn't.


    I would have to think a bit about your examples - or more likely just
    try them out (which I'm not motivated to do).  PO's non-halting tests involve observing loops and conditional branches in some combination.
    The major problem for his HHH/DDD is with the simulation aspect - the
    tests can match when the same code address is reached but across
    completely different simulation levels.  PO does not appreciate that
    tests which /might/ work in a non-simulation setting, could go horribly
    wrong when simulation is involved...  (so your tests aren't especially relevant for PO's code logic - and as I said there is only the one case
    that he really has to handle.)

    Mike.


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Wed Mar 12 11:32:08 2025
    On 2025-03-11 19:16:35 +0000, olcott said:

    On 3/11/2025 9:02 AM, Mikko wrote:
    On 2025-03-11 13:26:55 +0000, olcott said:

    On 3/11/2025 5:01 AM, Richard Heathfield wrote:
    On 11/03/2025 08:55, Fred. Zwarts wrote:
    Op 11.mrt.2025 om 00:41 schreef olcott:
    typedef void (*ptr)();
    int HHH(ptr P);

    void Infinite_Loop()
    {
       HERE: goto HERE;
       return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.


    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.

    All competent C programmers see that HHH correctly reports that it
    cannot possibly reach the 'return' instruction.

    First, my credentials. I've been programming in C for over 35 years;
    I'm told that my book on C has been used on two undergraduate Comp Sci >>>> courses (one in the States and one in the UK); and I have my Knuth
    cheque. I don't claim to be any kind of programming guru, but I hope I >>>> do not overstate the case when I suggest that I can be regarded as
    competent not just as a programmer but specifically in the C language. >>>>
    And yet I can't even /see/ HHH, let alone judge what it does or does
    not do correctly. All I see is a call to it.

    It is stipulated that HHH correctly emulates N
    steps of the x86 machine code of its input functions.
    This may or may not include HHH emulating itself
    emulating an input.

    The stipulation does not include the value of N (although a reasonable
    interpretation is that it is finite). Nor does the stipulation specify
    what HHH does after the emulation.


    It need not those are totally
    irrelevant to the primary point:

    When HHH correctly emulates N steps of the
    above functions none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.

    That's almost self-evident. Unless some special fieatures of C are used,
    and none of these are used above, no other function can do anything when
    one functin does something.

    For HHH(DDD) and HHH(DD) it is stipulated that
    HHH does correctly emulate itself emulating
    these inputs.

    But not that the emulation is complete, the emulation is discontinued
    when the total step count is N.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Wed Mar 12 11:38:56 2025
    On 2025-03-11 17:07:38 +0000, olcott said:

    On 3/11/2025 8:46 AM, Richard Heathfield wrote:
    On 11/03/2025 13:31, olcott wrote:
    On 3/11/2025 5:28 AM, Mikko wrote:
    On 2025-03-10 23:41:13 +0000, olcott said:

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

    void Infinite_Loop()
    {
       HERE: goto HERE;
       return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.

    Every competent programmer knows that the information given is
    insufficient to determine whether HHH emulates at all, and whether
    it emulates correctly if it does.

    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.

    Whether HHH does see those patterns cannot be inferred from the information
    given. Only about DDD one can see that it halts if HHH returns. In addition,
    the given information does not tell whether HHH can see patterns that are >>>> not there.

    How many competent programmers you have asked?

    Two C programmers with masters degrees in computer science
    agree that DDD correctly emulated by HHH cannot possibly
    reach its own "return" instruction and terminate normally.

    Bring 'em on. Perhaps /they/ have the source to HHH, because without it
    you don't have anything. (And btw whatever it is you claim to have is
    far from clear, because all I've seen so far is an attempt to express
    the Halting Problem in C and pseuodocode, where the pseudocode reads:
    HHH(){ magic happens }

    You still sound like Richard Damon whom is unable to
    understand that semantic tautologies are irrefutable.

    That a false claim about one person is similar to a false claim about
    another is not suffecent ro conclude or even sustpect that they are
    the same. A better measure is how meny indignificant typos each makes.

    When N steps of the above the above functions are
    correctly emulated by HHH
    (this is all that you need to know able HHH) then
    none of them reach their "return" instruction and
    terminate normally.

    HHH can and does emulate itself emulating DDD and DD.

    Not completely. Not to the point where the emulated HHH returns.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Mikko on Wed Mar 12 09:55:53 2025
    On 12/03/2025 09:38, Mikko wrote:
    On 2025-03-11 17:07:38 +0000, olcott said:


    <snip>


    You still sound like Richard Damon whom is unable to
    understand that semantic tautologies are irrefutable.

    That a false claim about one person is similar to a false
    claim about another is not suffecent ro conclude or even
    sustpect that they are the same. A better measure is how meny
    indignificant typos each makes.

    Quite so.

    And while we're on the subject of semantics, the OP seems unaware
    that he can't use stipulative definitions to define away the
    difficult parts of a problem. At best, he can stipulatively
    define a /new/ problem, but by redefining terms he steps away
    from the original problem. He can argue till he's blue in the
    face about the Olcott Problem, but he is no longer saying
    anything meaningful about the Halting Problem or the Linz proof
    thereof.

    <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 Mikko@21:1/5 to wij on Wed Mar 12 11:50:41 2025
    On 2025-03-11 18:33:15 +0000, wij said:

    On Tue, 2025-03-11 at 18:23 +0000, Richard Heathfield wrote:
    On 11/03/2025 17:42, Mike Terry wrote:
    Finally, if you really want to see the actual HHH code, its in> > the
    halt7.c file (along with DDD) that PO provides links to from> > time to
    time.  However it's not very illuminating due to> > bugs/design
    errors/misunderstandings which only serve to> > obfuscate PO's errors
    in thinking.

    [I've now seen the code. Oh deary deary me.]

    Thank you for a spirited attempt to be cogent - or at least as> cogent
    as it is possible to be in the circumstances!

    I think PO's first step must be to demonstrate that HHH()> correctly
    diagnoses some easy functions, such as these:

    int rha(unsigned int i)
    {
       while(--i > 0)while(--i > 0);
       return 0;
    }

    int rhb(unsigned int i)
    {
       if(i > 0)
       {
         rhb(i/10);
       }
       return putchar(i + '0');
    }

    int rhc(unsigned int i)
    {
       typedef int(*pf)(unsigned int);
       pf arr[3] = {rha, rhb, rhc};
       return arr[i % 3];
    }

    and other such obvious tests.

    HHH(), the procedure that decides whether a program halts, is> required
    to work for all programs and all inputs. Does it work on> those cited
    above? I'm guessing it doesn't.


    No TM can simulate itself. Proving HP in this way is dead end.

    An universal Turing machine can.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Mikko on Wed Mar 12 10:00:50 2025
    On 12/03/2025 09:49, Mikko wrote:
    On 2025-03-11 18:23:24 +0000, Richard Heathfield said:

    int rhc(unsigned int i)
    {
       typedef int(*pf)(unsigned int);
       pf arr[3] = {rha, rhb, rhc};
       return arr[i % 3];

    The return instruction has wrong type.

    Good spot, but no, it's fine. The bug is elsewhere. That line
    should read:

    return arr[i % 3](i);

    arr is of type int(*)(unsigned int)[3]
    arr[i % 3] is of type int(*)(unsigned int)
    arr[i % 3](i) is a function call returning int

    --
    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 Mikko@21:1/5 to Richard Heathfield on Wed Mar 12 11:49:15 2025
    On 2025-03-11 18:23:24 +0000, Richard Heathfield said:

    int rhc(unsigned int i)
    {
    typedef int(*pf)(unsigned int);
    pf arr[3] = {rha, rhb, rhc};
    return arr[i % 3];

    The return instruction has wrong type.

    }

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Wed Mar 12 12:51:27 2025
    On 2025-03-11 19:19:40 +0000, olcott said:

    On 3/11/2025 9:10 AM, Mikko wrote:
    On 2025-03-11 13:31:21 +0000, olcott said:

    On 3/11/2025 5:28 AM, Mikko wrote:
    On 2025-03-10 23:41:13 +0000, olcott said:

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

    void Infinite_Loop()
    {
       HERE: goto HERE;
       return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.

    Every competent programmer knows that the information given is
    insufficient to determine whether HHH emulates at all, and whether
    it emulates correctly if it does.

    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.

    Whether HHH does see those patterns cannot be inferred from the information
    given. Only about DDD one can see that it halts if HHH returns. In addition,
    the given information does not tell whether HHH can see patterns that are >>>> not there.

    How many competent programmers you have asked?

    Two C programmers with masters degrees in computer science
    agree that DDD correctly emulated by HHH cannot possibly
    reach its own "return" instruction and terminate normally.

    A masters degree in computer science does not guarantee any
    competence in C programming.

    Two answers, even if similar, is not statistically significant.

    Mere competence in C completely proves my point.

    Not even the pointless point of OP.

    You have presented so many false claim about words of other people
    that nothing you say about other people can be trusted.

    Remember that a liar can be truthful, and the best liars usually are,
    but a liar is never trustworthy.

    When HHH correctly emulates N steps of the
    above functions none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.

    For HHH(DDD) and HHH(DD) it is stipulated that
    HHH does correctly emulate itself emulating
    these inputs.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mike Terry@21:1/5 to Fred. Zwarts on Wed Mar 12 18:35:26 2025
    On 12/03/2025 09:24, Fred. Zwarts wrote:
    Op 11.mrt.2025 om 21:37 schreef Mike Terry:
    On 11/03/2025 18:23, Richard Heathfield wrote:
    On 11/03/2025 17:42, Mike Terry wrote:
    Finally, if you really want to see the actual HHH code, its in the halt7.c file (along with DDD)
    that PO provides links to from time to time.  However it's not very illuminating due to
    bugs/design errors/ misunderstandings which only serve to obfuscate PO's errors in thinking.

    [I've now seen the code. Oh deary deary me.]

    :)


    Thank you for a spirited attempt to be cogent - or at least as cogent as it is possible to be in
    the circumstances!

    I think PO's first step must be to demonstrate that HHH() correctly diagnoses some easy
    functions, such as these:

    Not really necessary - PO is not trying or claiming to have a (full) halt decider.

    Originally his claim was that he had a program which worked for the counter-example TM used in the
    common (e.g. Linz book) proof.  Such a program is impossible, as Linz and others prove, so having
    a program H and its corresponding "counter-example" D, such that H correctly decides D, would
    certainly show that the Linz proof is wrong.  His claim was always that he had "refuted the HP
    proof", or sometimes that he had refuted the HP theorem itself although he's been told dozens of
    times that there are many alternative proofs for the result.

    [As it turned out, PO's D(D) halted when run under his x86utm environment, while H(D,D) which is
    required to return the halting status of computation D(D) returned 0 (=non-halting).  That is
    exactly what the Linz proofs claim!]

    Anyhow, his decider only /has/ to correctly decide the one input, which is the D constructed from
    H by the usual method (basically D calls H to see what H claims is the halting behaviour, then
    does the opposite - I'm not sure if you're familiar with the proof, but imagine you would be given
    your background).

    His decider H works (subject to design errors/bugs and so on) by single- stepping a simulation of
    its input computation, and monitoring for conditions that PO believes indicate non-termination.
    He tests a couple of conditions, and when one of those matches H aborts and returns non- halting.
    Alternatively if the simulation halts normally, H returns halting.  The problem is (at least) one
    of his non-halting-behaviour tests is invalid, matching during the simulation of DDD, which is a
    halting computation.

    It seems that he does not understand that the these conditions (that indicate non-termination
    behaviour), form exactly the halting problem.
    PO claims that simulation is the solution, but he only shifts the problem of non-termination
    detection to the detection of these 'special conditions'.
    When we realise that, we understand that a finite or infinite simulation is not very relevant. The
    discussion should address these conditions. But PO carefully avoids discussions about the detection
    of these conditions, although they are the heart of the problem.

    I completely agree.

    We could create a (partial) simulating halt decider (PSHD) that works by simulating the steps of its
    input computation, and looking for patterns in the resulting trace indicating halting or non-halting
    behaviour. If these patterns were /*sound*/, meaning that matching guarantees the computation
    behaviour is indeed halting/non-halting as the test claims, then the PSHD could abort the simulation
    and decide halting behaviour correctly on that basis. [This much is obvious, and is basically what
    Sipser means in his "agreement" statement that PO often quotes, although PO has his own differing
    interpretation of what that means.]

    If H is such a PSHD, H might correctly decide many inputs, and moreover if it does manage to decide
    a particular input it will do so correctly, since its patterns are assumed sound. E.g. we could
    define a sound pattern matching tight loops, and computations entering such a tight loop would be
    correctly identified as non-halting.

    But such an H cannot detect /all/ non-halting conditions, and in particular cannot decide the
    behaviour of its corresponding H^(H^) computation. When H simulates H^(H^), none of its tests will
    ever match against the trace of H^(H^), and the computation will never terminate, so H would just
    run forever, never deciding the input. (We said H was only a partial decider, so no problem.)
    Every PSHD suffers this same flaw, no matter how many different (sound) tests it incorporates.

    The logic of the Linz proof proves this behaviour (non-halting of H when given input (<H^>,<H^>), so
    PO's claim to have built such an H would be a problem for the Linz proof if correct. Obviously his
    claim was not correct, and the problem here is that PO's "Infinite Recursive Simulation" pattern is
    clearly NOT sound! [So PO's H is not a PSHD by the above definition.]

    I pointed this out to PO years ago and suggested that to proceed he will have to provide a proof
    that his test is sound. That was slightly tongue-in-cheek, as it's clear PO lacks the ability to
    construct a proof of just about anything, let alone something that's clearly false. Sure enough PO
    has never seriously attempted such a proof! [He did make an attempt once, which started with PO
    introducing an Axiom saying that the test was sound. No, I'm not kidding, that really happened.]

    I do find it strange that PO makes so little reference to the test and its details, since in the end
    it underpins PO's belief that his H is correct to decide non-halting for H^(H^), even though that
    computation demonstrably halts. All he ever says about this is that H is correct because the input
    "exhibits non-terminating behaviour" when simulated by H.

    Well that's totally vague, right?, but clearly what PO is saying is that his "Infinite Recursive
    Simulation" pattern matches, and so H^(H^) /really is non-halting/ ! He has an almost religious
    fervour in his intuition that his test is sound, despite having absolutely no proof or valid
    reasoning to back it up... The belief is so strong that even direct empirical evidence to the
    contrary [H^(H^) halting when run under his own x86utm.exe] is rejected and must be "explained away"
    with further bizarre and unsupported claims about pathelogical self reference etc..

    Regards,
    Mike.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to Richard Heathfield on Thu Mar 13 11:15:04 2025
    On 2025-03-12 09:55:53 +0000, Richard Heathfield said:

    On 12/03/2025 09:38, Mikko wrote:
    On 2025-03-11 17:07:38 +0000, olcott said:


    <snip>


    You still sound like Richard Damon whom is unable to
    understand that semantic tautologies are irrefutable.

    That a false claim about one person is similar to a false
    claim about another is not suffecent ro conclude or even
    sustpect that they are the same. A better measure is how meny
    indignificant typos each makes.

    Quite so.

    And while we're on the subject of semantics, the OP seems unaware that
    he can't use stipulative definitions to define away the difficult parts
    of a problem. At best, he can stipulatively define a /new/ problem, but
    by redefining terms he steps away from the original problem. He can
    argue till he's blue in the face about the Olcott Problem, but he is no longer saying anything meaningful about the Halting Problem or the Linz
    proof thereof.

    He has moved away from the orignal problems long ago. What "every
    sufficiently competent C programmer knows" is fairly uninteresting
    and irrelevant to the original problems.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to Richard Heathfield on Thu Mar 13 12:25:55 2025
    On 2025-03-12 10:00:50 +0000, Richard Heathfield said:

    On 12/03/2025 09:49, Mikko wrote:
    On 2025-03-11 18:23:24 +0000, Richard Heathfield said:

    int rhc(unsigned int i)
    {
       typedef int(*pf)(unsigned int);
       pf arr[3] = {rha, rhb, rhc};
       return arr[i % 3];

    The return instruction has wrong type.

    Good spot, but no, it's fine. The bug is elsewhere. That line should read:

    return arr[i % 3](i);

    Error corrected.

    arr is of type int(*)(unsigned int)[3]
    arr[i % 3] is of type int(*)(unsigned int)
    arr[i % 3](i) is a function call returning int


    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ben Bacarisse@21:1/5 to Mike Terry on Thu Mar 13 15:44:34 2025
    Mike Terry <news.dead.person.stones@darjeeling.plus.com> writes:

    On 11/03/2025 18:23, Richard Heathfield wrote:
    On 11/03/2025 17:42, Mike Terry wrote:
    Finally, if you really want to see the actual HHH code, its in the
    halt7.c file (along with DDD) that PO provides links to from time to
    time.  However it's not very illuminating due to bugs/design
    errors/misunderstandings which only serve to obfuscate PO's errors in
    thinking.
    [I've now seen the code. Oh deary deary me.]

    :)

    Thank you for a spirited attempt to be cogent - or at least as cogent as
    it is possible to be in the circumstances!
    I think PO's first step must be to demonstrate that HHH() correctly
    diagnoses some easy functions, such as these:

    Not really necessary - PO is not trying or claiming to have a (full)
    halt decider.

    Originally his claim was that he had a program which worked for the counter-example TM used in the common (e.g. Linz book) proof.

    That, of course, depends on the way the wind's blowing. For example in
    2020:

    "The non-halting decider that I defined accepts any and all
    non-halting inputs and rejects any and all halting inputs."

    But then he retreated to the "once case" argument again until:

    Me: "Recent posts have said that you really do claim to have a halting
    decider. Have you extended your claim or was that a
    misunderstanding?"

    PO: "I really do have a halting decider."

    ... Such a
    program is impossible, as Linz and others prove, so having a program H and its corresponding "counter-example" D, such that H correctly decides D,
    would certainly show that the Linz proof is wrong. His claim was always
    that he had "refuted the HP proof", or sometimes that he had refuted the HP theorem itself although he's been told dozens of times that there are many alternative proofs for the result.

    Way back in 2004 he was sure that:

    "I have correctly refuted each and every mechanism by which the
    [halting theorem] has been proven to be true. I have not shown that
    solving the Halting Problem is possible, merely refuted every proof
    that it is impossible."

    I expect a publication anytime. 20 years is just about enough to get
    all the details right.

    [As it turned out, PO's D(D) halted when run under his x86utm environment, while H(D,D) which is required to return the halting status of computation D(D) returned 0 (=non-halting). That is exactly what the Linz proofs
    claim!]

    We must always remember that PO has re-defined what it means for the
    answer to be correct:

    Me: "Here's the key question: do you still assert that H(P,P) == false
    is the "correct" answer even though P(P) halts?"

    PO: "Yes that is the correct answer even though P(P) halts."

    He's been quite clear about it:

    "When we make the single change that I suggest the halting problem
    ceases to be impossible to solve because this revised question is not
    subject to pathological self-reference."

    "This transforms an undecidable problem into a decidable problem."

    I hope you forgive me just chipping in with stuff you know perfectly
    well, but I thought I'd just give some background as Richard is a new participant and my comments fit better with your post than his.

    --
    Ben.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Ben Bacarisse on Thu Mar 13 16:12:19 2025
    On 13/03/2025 15:44, Ben Bacarisse wrote:
    I hope you forgive me just chipping in with stuff you know perfectly
    well, but I thought I'd just give some background as Richard is a new participant and my comments fit better with your post than his.

    New to this debate, at any rate. :-)

    It took me a while to get a handle on what OP was actually trying
    to achieve, because on face value it looked like he was claiming
    to have a decision algorithm, which he clearly hasn't. Mike Terry
    straightened me out there, and your news that the OP once wrote:
    "I really do have a halting decider" is certainly interesting.

    I can't help thinking that, tempting though it might be to have a
    stab at cutting decider code, to do so is a mistake. I mean sure,
    if you manage to get one working you get to be the man who proved
    Turing wrong. But if you get one /almost/ working, to the point
    where it gives you the counter-theoretical answer you're
    expecting, there has to be a tendency to trust your own code a
    little too much, and it may be necessary to tweak reality a bit
    (those "stipulative definitions" of the OP's) to make it fit your
    code.

    An example unrelated to HP:

    Yesterday, I spent half an hour scouring the Web looking for bug
    reports of gcc failing to zero-fill partially initialised arrays.
    I was (foolish enough to be) convinced I'd uncovered a compiler bug.

    The bug was, of course, in my own code --- and it was the kind of
    mistake I never, ever make in a handful of lines of astoundingly
    simple code, so I knew it wasn't my mistake... but it was.

    I suspect that most programmers go through this from time to
    time. /Theory/ says `yes, okay, the compiler /might/ have bugs,
    but really truly it's probably your code that's wrong', but you
    can't quite bring yourself to believe the theory, especially when
    the code in front of you is, as mine was, self-evidently flawless.

    Theory would have saved me time, if only I'd listened to it.
    Theory says that the OP's software cannot work as a solution to
    the Halting Problem because, no matter how clever it is, it is
    always possible to construct an input it can't handle correctly.

    Having said that, I still maintain that thanks to thermodynamics
    the following decider is always correct:

    int halts(program *p, data *d)
    {
    return 1; /* EVERYTHING 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 Mikko@21:1/5 to olcott on Sun Mar 16 12:31:15 2025
    On 2025-03-11 13:34:34 +0000, olcott said:

    On 3/11/2025 5:30 AM, Mikko wrote:
    On 2025-03-11 02:27:42 +0000, olcott said:

    On 3/10/2025 9:21 PM, Richard Damon wrote:
    On 3/10/25 7:41 PM, olcott wrote:
    typedef void (*ptr)();
    int HHH(ptr P);

    void Infinite_Loop()
    {
       HERE: goto HERE;
       return;
    }

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

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

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

    That when HHH correctly emulates N steps of the
    above functions that none of these functions can
    possibly reach their own "return" instruction
    and terminate normally.

    Since HHH does see that same pattern that competent
    C programmers see it correctly aborts its emulation
    and rejects these inputs as non terminating.


    Problem: DD Isn't a program, and if you try to compile it, you will get >>>> an undiefined symbol HHH.

    HHH need not be a program for this correct thought experiment.
    The only detail required to know about HHH is that it correctly
    emulates N steps of DD.

    Wrong. One nneds also to know how a call to HHH is interpreted, in particular
    if HHH is not a program.

    You are trying to get away with saying that
    one C function cannot call another C function
    according to the semantics of the C language?

    False. You didn't say that HHH is a C function. In particular, the code
    shown above does not say so.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Mikko on Sun Mar 16 11:17:53 2025
    On 16/03/2025 10:31, Mikko wrote:
    False. You didn't say that HHH is a C function. In particular,
    the code
    shown above does not say so.

    It scarcely qualifies as C.

    For example, it begins by a goto this code:

    __asm__("lea eax, DATA1");
    __asm__("mov Aborted, eax");
    __asm__("lea eax, DATA2");
    __asm__("mov execution_trace, eax");
    __asm__("mov eax, END_OF_CODE");
    __asm__("mov End_Of_Code, eax");

    which any C compiler is free to reject.

    C99 introduced the asm keyword, but that's spelled asm, not
    __asm__, and of course it's not a magic wand, so it can't make an
    inherently unportable program work on every platform supported by
    C compilers. C/370, for example, would have a fit.

    --
    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 Mikko@21:1/5 to Richard Heathfield on Sun Mar 16 15:07:26 2025
    On 2025-03-16 11:17:53 +0000, Richard Heathfield said:

    On 16/03/2025 10:31, Mikko wrote:
    False. You didn't say that HHH is a C function. In particular, the code
    shown above does not say so.

    It scarcely qualifies as C.

    A text is a conforming C program if a conforming compiler accepts and
    compiles it. As a conforming compiler can have all sorts of extesions
    any text can be a conforming program.

    For example, it begins by a goto this code:

    __asm__("lea eax, DATA1");
    __asm__("mov Aborted, eax");
    __asm__("lea eax, DATA2");
    __asm__("mov execution_trace, eax");
    __asm__("mov eax, END_OF_CODE");
    __asm__("mov End_Of_Code, eax");

    which any C compiler is free to reject.

    C99 introduced the asm keyword, but that's spelled asm, not __asm__,
    and of course it's not a magic wand, so it can't make an inherently unportable program work on every platform supported by C compilers.
    C/370, for example, would have a fit.

    Words that start with an underscore, except ones defined in the
    standard, are reserved for implementation specifc extensions.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Mikko on Sun Mar 16 13:16:23 2025
    On 16/03/2025 13:07, Mikko wrote:
    On 2025-03-16 11:17:53 +0000, Richard Heathfield said:

    On 16/03/2025 10:31, Mikko wrote:
    False. You didn't say that HHH is a C function. In particular,
    the code
    shown above does not say so.

    It scarcely qualifies as C.

    A text is a conforming C program if a conforming compiler accepts
    and
    compiles it.

    Indeed, and there is at least one conforming C implementation
    that cheerfuuly accepts and compiles Fortran, so Fortran programs
    are C programs.

    The definition of a "conforming program" is sufficiently weak
    enough to make it pointless.

    --
    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 Keith Thompson on Sun Mar 16 21:01:22 2025
    On 16/03/2025 19:26, Keith Thompson wrote:
    Richard Heathfield <rjh@cpax.org.uk> writes:
    On 16/03/2025 10:31, Mikko wrote:
    False. You didn't say that HHH is a C function. In particular, the
    code
    shown above does not say so.

    It scarcely qualifies as C.

    For example, it begins by a goto this code:

    __asm__("lea eax, DATA1");
    __asm__("mov Aborted, eax");
    __asm__("lea eax, DATA2");
    __asm__("mov execution_trace, eax");
    __asm__("mov eax, END_OF_CODE");
    __asm__("mov End_Of_Code, eax");

    which any C compiler is free to reject.

    C99 introduced the asm keyword, but that's spelled asm, not __asm__,
    and of course it's not a magic wand, so it can't make an inherently
    unportable program work on every platform supported by C
    compilers. C/370, for example, would have a fit.

    No, C99 didn't introduce the asm keyword.

    You're right, of course. Refusing to trust my memory for
    post-1990 C, I checked by searching my PDF, found it, and forgot
    to check where I'd ended up (deep in the heart of "common
    extensions").

    I don't think Olcott intends HHH to be fully portable C (assuming
    he knows what that means).

    That's a daring assumption.

    In any case, his claims about "Every
    sufficiently competent C programmer" are ludicrous.

    I can remove almost half the words from that sentence without
    affecting its inherent accuracy.

    --
    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)