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

    From Fred. Zwarts@21:1/5 to All on Wed Jul 10 19:45:43 2024
    XPost: sci.logic

    Op 10.jul.2024 om 17:03 schreef olcott:
    typedef void (*ptr)();
    int HHH(ptr P);

    void DDD()
    {
      HHH(DDD);
    }

    int main()
    {
      HHH(DDD);
    }

    Unneeded complexity. It is equivalent to:

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


    We stipulate that the only measure of a correct emulation
    is the semantics of the x86 programming language. By this
    measure when 1 to ∞ steps of DDD are correctly emulated by
    each pure function x86 emulator HHH (of the infinite set
    of every HHH that can possibly exist) then DDD cannot
    possibly reach past its own machine address of 0000216b
    and halt.

    Proving that the simulation is incorrect. Because a correct simulation
    would not abort a halting program halfway its simulation.

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


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

    *This algorithm is used by the simulating termination analyzers*
    <MIT Professor Sipser agreed to ONLY these verbatim words 10/13/2022>
        If simulating halt decider H correctly simulates its input D
        until H correctly determines that its simulated D would never
        stop running unless aborted then

        H can abort its simulation of D and correctly report that D
        specifies a non-halting sequence of configurations.
    </MIT Professor Sipser agreed to ONLY these verbatim words 10/13/2022>

    But these words do not apply for the above example, because these words
    apply to a correct simulation, not to HHH, which performs an incorrect simulation.


    Simulating termination analyzer HHH aborts its emulation of DDD
    as soon as it correctly detects any non-halting behavior pattern.
    At this point it aborts its emulation and returns 0 indicating
    that it rejected this input as non-halting.


    It cannot detect a non-halting pattern in a program that is programmed
    to halt after a few cycles of recursive simulation.

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

    So, not only is the simulation incorrect, also the detection of a
    non-halting pattern failed.
    So, the only report that it can make is that its own simulation failed.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Alan Mackenzie@21:1/5 to Fred. Zwarts on Wed Jul 10 18:12:08 2024
    XPost: sci.logic

    [ Followup-To: set ]

    In comp.theory Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:

    [ .... ]

    Proving that the simulation is incorrect. Because a correct simulation
    would not abort a halting program halfway its simulation.

    Just for clarity, a correct simulation wouldn't abort a non-halting
    program either, would it? Or have I misunderstood this correctness?

    [ .... ]

    --
    Alan Mackenzie (Nuremberg, Germany).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Wed Jul 10 20:24:49 2024
    Op 10.jul.2024 om 20:12 schreef Alan Mackenzie:
    [ Followup-To: set ]

    In comp.theory Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:

    [ .... ]

    Proving that the simulation is incorrect. Because a correct simulation
    would not abort a halting program halfway its simulation.

    Just for clarity, a correct simulation wouldn't abort a non-halting
    program either, would it? Or have I misunderstood this correctness?

    [ .... ]


    A non-halting program cannot be simulated correctly in a finite time.
    So, it depends whether we can call it a correct simulation, when it does
    not abort. But, for some meaning of 'correct', indeed, a simulator
    should not abort a non-halting program either.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Wed Jul 10 20:30:44 2024
    XPost: sci.logic

    Op 10.jul.2024 om 19:53 schreef olcott:
    On 7/10/2024 12:45 PM, Fred. Zwarts wrote:
    Op 10.jul.2024 om 17:03 schreef olcott:
    typedef void (*ptr)();
    int HHH(ptr P);

    void DDD()
    {
       HHH(DDD);
    }

    int main()
    {
       HHH(DDD);
    }

    Unneeded complexity. It is equivalent to:

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



    Every time any HHH correctly emulates DDD it calls the
    x86utm operating system to create a separate process
    context with its own memory virtual registers and stack,
    thus each recursively emulated DDD is a different instance.

    Irrelevant information.


    The instance of main() can't possibly halt HHH correctly
    aborts and rejects as non-halting. The entirely different
    instance of main() that calls HHH only halts because HHH
    was correct to abort its simulated instance.


    HHH cannot possibly simulate itself correctly. So, it aborts the
    simulation one cycle too soon. So, it aborts incorrectly.
    Aborting a halting program halfway its simulation is incorrect.
    Therefore, its report is not about halting, but about correct simulation.
    HHH reports that its simulation failed.
    When HHH aborts, it can only report that its simulation failed. It
    cannot report about halting behaviour, because that behaviour is present
    in the part of the program that was skipped by the abort.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Alan Mackenzie@21:1/5 to Fred. Zwarts on Wed Jul 10 18:55:47 2024
    Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:
    Op 10.jul.2024 om 20:12 schreef Alan Mackenzie:
    [ Followup-To: set ]

    In comp.theory Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:

    [ .... ]

    Proving that the simulation is incorrect. Because a correct simulation
    would not abort a halting program halfway its simulation.

    Just for clarity, a correct simulation wouldn't abort a non-halting
    program either, would it? Or have I misunderstood this correctness?

    [ .... ]


    A non-halting program cannot be simulated correctly in a finite time.
    So, it depends whether we can call it a correct simulation, when it does
    not abort. But, for some meaning of 'correct', indeed, a simulator
    should not abort a non-halting program either.

    OK, thanks!

    --
    Alan Mackenzie (Nuremberg, Germany).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Wed Jul 10 20:01:41 2024
    XPost: sci.logic

    On 7/10/24 1:53 PM, olcott wrote:
    On 7/10/2024 12:45 PM, Fred. Zwarts wrote:
    Op 10.jul.2024 om 17:03 schreef olcott:
    typedef void (*ptr)();
    int HHH(ptr P);

    void DDD()
    {
       HHH(DDD);
    }

    int main()
    {
       HHH(DDD);
    }

    Unneeded complexity. It is equivalent to:

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



    Every time any HHH correctly emulates DDD it calls the
    x86utm operating system to create a separate process
    context with its own memory virtual registers and stack,
    thus each recursively emulated DDD is a different instance.

    The instance of main() can't possibly halt HHH correctly
    aborts and rejects as non-halting. The entirely different
    instance of main() that calls HHH only halts because HHH
    was correct to abort its simulated instance.


    But ALL instances of the smsame program must behavir the same, or you
    are proving that your HHH isn't actualy a pure function, or doesn't
    correct emulate its input.

    So, it CAN'T say that its emulated version is correct determined to not
    return without admiting that something about it make it different when
    emulated which means either it fails to be pure, or fails to correctly
    emulate itself.

    So, you just blew up your argument in a great big LIE.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Thu Jul 11 09:25:09 2024
    On 2024-07-10 17:53:38 +0000, olcott said:

    On 7/10/2024 12:45 PM, Fred. Zwarts wrote:
    Op 10.jul.2024 om 17:03 schreef olcott:
    typedef void (*ptr)();
    int HHH(ptr P);

    void DDD()
    {
       HHH(DDD);
    }

    int main()
    {
       HHH(DDD);
    }

    Unneeded complexity. It is equivalent to:

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



    Every time any HHH correctly emulates DDD it calls the
    x86utm operating system to create a separate process
    context with its own memory virtual registers and stack,
    thus each recursively emulated DDD is a different instance.

    However, each of those instances has the same sequence of instructions
    that the x86 language specifies the same operational meaning.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Thu Jul 11 09:22:09 2024
    On 2024-07-10 15:03:46 +0000, olcott said:

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

    void DDD()
    {
    HHH(DDD);
    }

    int main()
    {
    HHH(DDD);
    }

    We stipulate that the only measure of a correct emulation
    is the semantics of the x86 programming language. By this
    measure when 1 to ∞ steps of DDD are correctly emulated by
    each pure function x86 emulator HHH (of the infinite set
    of every HHH that can possibly exist) then DDD cannot
    possibly reach past its own machine address of 0000216b
    and halt.

    For every instruction that the C compiler generates the x86 language
    specifies an unambiguous meaning, leaving no room for "can".

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Thu Jul 11 09:28:39 2024
    On 2024-07-10 18:58:14 +0000, olcott said:

    On 7/10/2024 1:55 PM, Alan Mackenzie wrote:
    Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:
    Op 10.jul.2024 om 20:12 schreef Alan Mackenzie:
    [ Followup-To: set ]

    In comp.theory Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:

    [ .... ]

    Proving that the simulation is incorrect. Because a correct simulation >>>>> would not abort a halting program halfway its simulation.

    Just for clarity, a correct simulation wouldn't abort a non-halting
    program either, would it? Or have I misunderstood this correctness?

    [ .... ]


    A non-halting program cannot be simulated correctly in a finite time.
    So, it depends whether we can call it a correct simulation, when it does >>> not abort. But, for some meaning of 'correct', indeed, a simulator
    should not abort a non-halting program either.

    OK, thanks!


    In other words he is saying that when you do
    1 step correctly you did 0 steps correctly.

    That is possible as "correctly" has different meaning when talking
    about steps from when talking about simulations.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Thu Jul 11 09:20:32 2024
    Op 10.jul.2024 om 20:58 schreef olcott:
    On 7/10/2024 1:55 PM, Alan Mackenzie wrote:
    Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:
    Op 10.jul.2024 om 20:12 schreef Alan Mackenzie:
    [ Followup-To: set ]

    In comp.theory Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:

    [ .... ]

    Proving that the simulation is incorrect. Because a correct simulation >>>>> would not abort a halting program halfway its simulation.

    Just for clarity, a correct simulation wouldn't abort a non-halting
    program either, would it?  Or have I misunderstood this correctness?

    [ .... ]


    A non-halting program cannot be simulated correctly in a finite time.
    So, it depends whether we can call it a correct simulation, when it does >>> not abort. But, for some meaning of 'correct', indeed, a simulator
    should not abort a non-halting program either.

    OK, thanks!


    In other words he is saying that when you do
    1 step correctly you did 0 steps correctly.


    That is not what I said.
    What I said is that if a program needs two steps for a simulation, it is incorrect to simulate only one step and then abort and report it will
    never halt.
    English seems to be a difficult language for you.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Thu Jul 11 09:25:49 2024
    XPost: sci.logic

    Op 10.jul.2024 om 22:53 schreef olcott:
    On 7/10/2024 3:49 PM, olcott wrote:
    On 7/10/2024 1:55 PM, Alan Mackenzie wrote:
    Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:
    Op 10.jul.2024 om 20:12 schreef Alan Mackenzie:
    [ Followup-To: set ]

    In comp.theory Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:

    [ .... ]

    Proving that the simulation is incorrect. Because a correct
    simulation
    would not abort a halting program halfway its simulation.

    Just for clarity, a correct simulation wouldn't abort a non-halting
    program either, would it?  Or have I misunderstood this correctness?

    [ .... ]


    A non-halting program cannot be simulated correctly in a finite time.
    So, it depends whether we can call it a correct simulation, when it
    does
    not abort. But, for some meaning of 'correct', indeed, a simulator
    should not abort a non-halting program either.

    OK, thanks!


    In other words he is saying that when you do
    1 step correctly you did 0 steps correctly.


    In other words he is using deceitful weasel wording to
    try to escape a truism.

    Why are you twisting my words? Is English such a difficult language for you?


    We stipulate that the only measure of a correct emulation is the
    semantics of the x86 programming language. By this measure when 1 to ∞ steps of DDD are correctly emulated by each pure function x86 emulator
    HHH (of the infinite set of every HHH that can possibly exist) then DDD cannot possibly reach past its own machine address of 0000216b and halt.

    And since HHH is a program that halts, this proves that the simulation
    was aborted halfway, which makes it incorrect.
    Showing that the set of HHH that can correctly simulate itself is empty.
    When a correct simulation needs N steps and you abort it halfway after M
    steps, with M much smaller than N, then the simulation of N steps is
    correct, but the simulation as a whole is incorrect, because the
    semantics of the x86 languages specifies that N steps must me simulated.


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

    On 10/14/2022 7:44 PM, Ben Bacarisse wrote:
    But H determines (correctly) that D would not halt
    if it were not halted.  That much is a truism.



    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Thu Jul 11 09:32:22 2024
    XPost: sci.logic

    Op 10.jul.2024 om 20:32 schreef olcott:
    On 7/10/2024 1:12 PM, Alan Mackenzie wrote:
    [ Followup-To: set ]

    In comp.theory Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:

    [ .... ]

    Proving that the simulation is incorrect. Because a correct simulation
    would not abort a halting program halfway its simulation.

    Just for clarity, a correct simulation wouldn't abort a non-halting
    program either, would it?  Or have I misunderstood this correctness?

    [ .... ]


    Welcome back.
    I stipulate that I am referring to 1 to ∞ steps of correct
    emulation according to the semantics of the x86 language.

    This means that when HHH does correctly emulate 1 step
    that *it is a correct emulation* of this 1 step, thus
    making everyone that disagrees disagree with a tautology
    making them look foolish.

    And nobody disagrees with that. So, *you* look foolish. The disagreement
    is that you think that simulating only 1 step for a program that needs N
    steps is correct, whereas we know that a correct simulation needs N
    steps. It is a finite recursion as in:

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

    It seems that you do not understand the semantics of the x86 language,
    which requires the simulation of all N steps.


    We stipulate that the only measure of a correct emulation
    is the semantics of the x86 programming language.

    So, use it. Simulate all N steps.
    We know that an aborting program does halt, so the number of steps to
    simulate is finite.
    Your problem is that HHH cannot possibly simulate itself correctly up to
    the end. You need another simulator for that.

    By this
    measure when 1 to ∞ steps of DDD are correctly emulated
    by each pure function x86 emulator HHH (of the infinite
    set of every HHH that can possibly exist) then DDD cannot
    possibly reach past its own machine address of 0000216b
    and halt.

    Yes. This proves that HHH cannot possibly simulate itself correctly up
    to the end.


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


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Thu Jul 11 09:43:48 2024
    XPost: sci.logic

    Op 10.jul.2024 om 20:54 schreef olcott:
    On 7/10/2024 1:12 PM, Alan Mackenzie wrote:
    [ Followup-To: set ]

    In comp.theory Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:

    [ .... ]

    Proving that the simulation is incorrect. Because a correct simulation
    would not abort a halting program halfway its simulation.

    Just for clarity, a correct simulation wouldn't abort a non-halting
    program either, would it?  Or have I misunderstood this correctness?

    [ .... ]




    Welcome back.
    I stipulate that I am referring to 1 to ∞ steps of correct
    emulation according to the semantics of the x86 language.

    This means that when HHH does correctly emulate 1 step
    that *it is a correct emulation* of this 1 step,

    But not a correct simulation of a program. The x86 language specifies
    that it is insufficient to interpret only one instruction of a program.
    For a correct simulation of a halting program, all instructions must be simulated.
    Maybe you don't know the x86 language well enough to understand that the behaviour of a program is not defined by the first few instructions.

    thus
    making everyone that disagrees disagree with a tautology
    making them look foolish.




    We stipulate that the only measure of a correct emulation
    is the semantics of the x86 programming language. By this
    measure when 1 to ∞ steps of DDD are correctly emulated
    by each pure function x86 emulator HHH (of the infinite
    set of every HHH that can possibly exist) then DDD cannot
    possibly reach past its own machine address of 0000216b
    and halt.

    Which proves that the simulation is incomplete and, therefore, incorrect.
    You proved again that HHH cannot possibly simulate itself correctly.
    Even when you wish it very very much that it is correct and even if you
    repeat it a thousand times more, that will not make it correct.
    A correct simulation by another simulator shows that the correct
    simulation is possible, but not by HHH itself.


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


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Thu Jul 11 14:25:45 2024
    Am Thu, 11 Jul 2024 09:10:24 -0500 schrieb olcott:
    On 7/11/2024 1:25 AM, Mikko wrote:
    On 2024-07-10 17:53:38 +0000, olcott said:
    On 7/10/2024 12:45 PM, Fred. Zwarts wrote:
    Op 10.jul.2024 om 17:03 schreef olcott:

    void DDD()
    {
       HHH(DDD);
    }
    int main()
    {
       HHH(DDD);
    }
    Unneeded complexity. It is equivalent to:
           int main()
           {
             return HHH(main);
           }
    Every time any HHH correctly emulates DDD it calls the x86utm
    operating system to create a separate process context with its own
    memory virtual registers and stack, thus each recursively emulated DDD
    is a different instance.

    However, each of those instances has the same sequence of instructions
    that the x86 language specifies the same operational meaning.

    *That is counter-factual*
    Contradicting yourself? "Counterfactual" usually means "if it were
    different".

    When DDD is correctly emulated by HHH according to the semantics of the
    x86 programming language HHH must abort its emulation of DDD or both HHH
    and DDD never halt.
    If the recursive call to HHH from DDD halts, the outer HHH doesn't need
    to abort. DDD depends totally on HHH; it halts exactly when HHH does.
    Which it does, because it aborts.

    When DDD is correctly emulated by HHH1 according to the semantics of the
    x86 programming language HHH1 need not abort its emulation of DDD
    because HHH has already done this.
    Where does HHH figure into this? It is not the simulator here.

    The behavior of DDD emulated by HHH1 is identical to the behavior of the directly executed DDD().
    At last!

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Thu Jul 11 20:19:14 2024
    Am Thu, 11 Jul 2024 10:05:58 -0500 schrieb olcott:
    On 7/11/2024 9:25 AM, joes wrote:
    Am Thu, 11 Jul 2024 09:10:24 -0500 schrieb olcott:
    On 7/11/2024 1:25 AM, Mikko wrote:
    On 2024-07-10 17:53:38 +0000, olcott said:
    On 7/10/2024 12:45 PM, Fred. Zwarts wrote:
    Op 10.jul.2024 om 17:03 schreef olcott:

    Unneeded complexity. It is equivalent to:
           int main()
           {
             return HHH(main);
           }
    Every time any HHH correctly emulates DDD it calls the x86utm
    operating system to create a separate process context with its own
    memory virtual registers and stack, thus each recursively emulated
    DDD is a different instance.
    However, each of those instances has the same sequence of
    instructions that the x86 language specifies the same operational
    meaning.
    *That is counter-factual*
    Contradicting yourself? "Counterfactual" usually means "if it were
    different".

    When DDD is correctly emulated by HHH according to the semantics of
    the x86 programming language HHH must abort its emulation of DDD or
    both HHH and DDD never halt.
    If the recursive call to HHH from DDD halts, the outer HHH doesn't need
    to abort.
    Sure and when squares are round you can measure the radius of a square.
    Do you mean that HHH doesn't halt?

    DDD depends totally on HHH; it halts exactly when HHH does.
    Which it does, because it aborts.
    Halting means reaching its own last instruction and terminating
    normally.
    What does HHH do after it aborts?

    When DDD is correctly emulated by HHH1 according to the semantics of
    the x86 programming language HHH1 need not abort its emulation of DDD
    because HHH has already done this.
    Where does HHH figure into this? It is not the simulator here.
    The behavior of DDD emulated by HHH1 is identical to the behavior of
    the directly executed DDD().
    At last!
    HHH must abort its simulation. HHH1 does not need to do that because HHH
    has already done this.
    No, HHH1 doesn't need to because DDD is just a regular program to it,
    not constructed to be unsimulatable.

    DDD correctly simulated by HHH has provably different behavior than DDD correctly simulated by HHH1.
    Which means that HHH is not doing the simulation correctly.

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Thu Jul 11 22:08:18 2024
    On 7/11/24 10:02 AM, olcott wrote:
    On 7/11/2024 1:22 AM, Mikko wrote:
    On 2024-07-10 15:03:46 +0000, olcott said:

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

    void DDD()
    {
       HHH(DDD);
    }

    int main()
    {
       HHH(DDD);
    }

    We stipulate that the only measure of a correct emulation
    is the semantics of the x86 programming language. By this
    measure when 1 to ∞ steps of DDD are correctly emulated by
    each pure function x86 emulator HHH (of the infinite set
    of every HHH that can possibly exist) then DDD cannot
    possibly reach past its own machine address of 0000216b
    and halt.

    For every instruction that the C compiler generates the x86 language
    specifies an unambiguous meaning, leaving no room for "can".


    then DDD cannot possibly reach past its own machine
    address of 0000216b and halt.

    Sure it can, if the HHH aborts its simulation from any call to it, it
    will do it for ALL calls to it, even to the DDD that calls it.


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

    Sure it can, if HHH ever aborts its simulation and returns.

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

    (1) I am referring to an infinite set of HHH/DDD pairs each
    HHH having different behavior.

    And these divide into to classes, the class where HHH(DDD) returns, and
    the class where HHH(DDD) never returns.


    (2) No DDD of this infinite set reaches past its
    own machine address of 0000216b.

    No, EVERY one of them does that had an HHH that returns from HHH(DDD).

    You are just confusing the observation by HHH of the behavior of
    DDD<.which is only partial if it ever aborts, and the actual behavior of
    DDD, showing you don't unddrstand the difference between Truth and
    Knowledge.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Fri Jul 12 11:03:57 2024
    On 2024-07-11 14:10:24 +0000, olcott said:

    On 7/11/2024 1:25 AM, Mikko wrote:
    On 2024-07-10 17:53:38 +0000, olcott said:

    On 7/10/2024 12:45 PM, Fred. Zwarts wrote:
    Op 10.jul.2024 om 17:03 schreef olcott:
    typedef void (*ptr)();
    int HHH(ptr P);

    void DDD()
    {
       HHH(DDD);
    }

    int main()
    {
       HHH(DDD);
    }

    Unneeded complexity. It is equivalent to:

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



    Every time any HHH correctly emulates DDD it calls the
    x86utm operating system to create a separate process
    context with its own memory virtual registers and stack,
    thus each recursively emulated DDD is a different instance.

    However, each of those instances has the same sequence of instructions
    that the x86 language specifies the same operational meaning.


    *That is counter-factual*
    When DDD is correctly emulated by HHH according to the
    semantics of the x86 programming language HHH must abort
    its emulation of DDD or both HHH and DDD never halt.

    There is not "must" anywhere in the semantics of the programming language.

    When DDD is correctly emulated by HHH1 according to the
    semantics of the x86 programming language HHH1 need not
    abort its emulation of DDD because HHH has already done this.

    However, the program DDD is the same in both cases and therefore the
    its behavioral meaning per x86 semantics is also the same.

    The behavior of DDD emulated by HHH1 is identical to the
    behavior of the directly executed DDD().

    Which is the behaviour of DDD accordint to the semantics of x86 language.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Fri Jul 12 08:08:59 2024
    Am Thu, 11 Jul 2024 15:56:09 -0500 schrieb olcott:
    On 7/11/2024 3:19 PM, joes wrote:
    Am Thu, 11 Jul 2024 10:05:58 -0500 schrieb olcott:
    On 7/11/2024 9:25 AM, joes wrote:
    Am Thu, 11 Jul 2024 09:10:24 -0500 schrieb olcott:
    On 7/11/2024 1:25 AM, Mikko wrote:
    On 2024-07-10 17:53:38 +0000, olcott said:
    On 7/10/2024 12:45 PM, Fred. Zwarts wrote:
    Op 10.jul.2024 om 17:03 schreef olcott:

    When DDD is correctly emulated by HHH according to the semantics of
    the x86 programming language HHH must abort its emulation of DDD or
    both HHH and DDD never halt.
    If the recursive call to HHH from DDD halts, the outer HHH doesn't
    need to abort.
    Do you mean that HHH doesn't halt?
    This.

    DDD depends totally on HHH; it halts exactly when HHH does.
    Which it does, because it aborts.
    What does HHH do after it aborts?
    And this one.

    DDD correctly simulated by HHH has provably different behavior than
    DDD correctly simulated by HHH1.
    Which means that HHH is not doing the simulation correctly.
    When HHH simulates DDD according to the semantics of the x86 language
    then HHH is simulating correctly. When people disagree with the
    semantics of the x86 language THEY ARE WRONG !!!
    Aborting is not a correct simulation.
    Please answer the other questions above.

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

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

    On 7/11/2024 1:25 AM, Mikko wrote:
    On 2024-07-10 17:53:38 +0000, olcott said:

    On 7/10/2024 12:45 PM, Fred. Zwarts wrote:
    Op 10.jul.2024 om 17:03 schreef olcott:
    typedef void (*ptr)();
    int HHH(ptr P);

    void DDD()
    {
       HHH(DDD);
    }

    int main()
    {
       HHH(DDD);
    }

    Unneeded complexity. It is equivalent to:

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



    Every time any HHH correctly emulates DDD it calls the
    x86utm operating system to create a separate process
    context with its own memory virtual registers and stack,
    thus each recursively emulated DDD is a different instance.

    However, each of those instances has the same sequence of instructions
    that the x86 language specifies the same operational meaning.


    *That is counter-factual*

    You mean those instances don't really exist?

    --
    Mikko

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

    On 7/11/2024 1:22 AM, Mikko wrote:
    On 2024-07-10 15:03:46 +0000, olcott said:

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

    void DDD()
    {
       HHH(DDD);
    }

    int main()
    {
       HHH(DDD);
    }

    We stipulate that the only measure of a correct emulation
    is the semantics of the x86 programming language. By this
    measure when 1 to ∞ steps of DDD are correctly emulated by
    each pure function x86 emulator HHH (of the infinite set
    of every HHH that can possibly exist) then DDD cannot
    possibly reach past its own machine address of 0000216b
    and halt.

    For every instruction that the C compiler generates the x86 language
    specifies an unambiguous meaning, leaving no room for "can".


    then DDD cannot possibly reach past its own machine
    address of 0000216b and halt.

    As I already said, there is not room for "can". That means there is
    no room for "cannot", either. The x86 semantics of the unshown code
    determines unambigously what happens.

    --
    Mikko

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

    On 7/11/2024 1:28 AM, Mikko wrote:
    On 2024-07-10 18:58:14 +0000, olcott said:

    On 7/10/2024 1:55 PM, Alan Mackenzie wrote:
    Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:
    Op 10.jul.2024 om 20:12 schreef Alan Mackenzie:
    [ Followup-To: set ]

    In comp.theory Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:

    [ .... ]

    Proving that the simulation is incorrect. Because a correct simulation >>>>>>> would not abort a halting program halfway its simulation.

    Just for clarity, a correct simulation wouldn't abort a non-halting >>>>>> program either, would it?  Or have I misunderstood this correctness? >>>>
    [ .... ]


    A non-halting program cannot be simulated correctly in a finite time. >>>>> So, it depends whether we can call it a correct simulation, when it does >>>>> not abort. But, for some meaning of 'correct', indeed, a simulator
    should not abort a non-halting program either.

    OK, thanks!


    In other words he is saying that when you do
    1 step correctly you did 0 steps correctly.

    That is possible as "correctly" has different meaning when talking
    about steps from when talking about simulations.


    *No that is always false*
    When you did one anythings correctly then you did
    more than zero anythings correctly.

    If I only correcly do one thing that is not a part of my routine then
    I don't do my routine correctly. If I do correctly every part of my routine
    but do them in a wrong order I don't do my routine correctly.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Fri Jul 12 13:46:21 2024
    Am Fri, 12 Jul 2024 07:34:59 -0500 schrieb olcott:

    On 7/12/2024 3:08 AM, joes wrote:
    Am Thu, 11 Jul 2024 15:56:09 -0500 schrieb olcott:
    On 7/11/2024 3:19 PM, joes wrote:
    Am Thu, 11 Jul 2024 10:05:58 -0500 schrieb olcott:
    On 7/11/2024 9:25 AM, joes wrote:
    Am Thu, 11 Jul 2024 09:10:24 -0500 schrieb olcott:
    On 7/11/2024 1:25 AM, Mikko wrote:
    On 2024-07-10 17:53:38 +0000, olcott said:
    On 7/10/2024 12:45 PM, Fred. Zwarts wrote:
    Op 10.jul.2024 om 17:03 schreef olcott:

    When DDD is correctly emulated by HHH according to the semantics >>>>>>> of the x86 programming language HHH must abort its emulation of
    DDD or both HHH and DDD never halt.
    If the recursive call to HHH from DDD halts, the outer HHH doesn't >>>>>> need to abort.
    Do you mean that HHH doesn't halt?

    DDD depends totally on HHH; it halts exactly when HHH does.
    Which it does, because it aborts.
    What does HHH do after it aborts?

    DDD correctly simulated by HHH has provably different behavior than
    DDD correctly simulated by HHH1.
    Which means that HHH is not doing the simulation correctly.
    When HHH simulates DDD according to the semantics of the x86 language
    then HHH is simulating correctly. When people disagree with the
    semantics of the x86 language THEY ARE WRONG !!!
    Aborting is not a correct simulation.
    Please answer the other questions above.
    Aborting is what a simulating termination analyzer must do for any input
    that cannot possibly otherwise stop running.
    Yes, which makes it not a simulator.
    Why does DDD not halt?

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Fri Jul 12 16:22:27 2024
    Op 12.jul.2024 om 15:20 schreef olcott:
    On 7/12/2024 3:03 AM, Mikko wrote:
    On 2024-07-11 14:10:24 +0000, olcott said:

    On 7/11/2024 1:25 AM, Mikko wrote:
    On 2024-07-10 17:53:38 +0000, olcott said:

    On 7/10/2024 12:45 PM, Fred. Zwarts wrote:
    Op 10.jul.2024 om 17:03 schreef olcott:
    typedef void (*ptr)();
    int HHH(ptr P);

    void DDD()
    {
       HHH(DDD);
    }

    int main()
    {
       HHH(DDD);
    }

    Unneeded complexity. It is equivalent to:

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



    Every time any HHH correctly emulates DDD it calls the
    x86utm operating system to create a separate process
    context with its own memory virtual registers and stack,
    thus each recursively emulated DDD is a different instance.

    However, each of those instances has the same sequence of instructions >>>> that the x86 language specifies the same operational meaning.


    *That is counter-factual*
    When DDD is correctly emulated by HHH according to the
    semantics of the x86 programming language HHH must abort
    its emulation of DDD or both HHH and DDD never halt.

    There is not "must" anywhere in the semantics of the programming
    language.


    The semantics of the language specifies the behavior of
    the machine code thus deriving the must.

    The x86 language does not specify that an abort must be done for a
    halting program. If the simulation of an aborting simulator was not
    aborted, it would halt, according to the x86 language.
    This shows that HHH does not follow the semantics of the x86 language.

    When DDD is correctly emulated by HHH1 according to the
    semantics of the x86 programming language HHH1 need not
    abort its emulation of DDD because HHH has already done this.

    However, the program DDD is the same in both cases and therefore the
    its behavioral meaning per x86 semantics is also the same.


    HHH1(DDD) only halts because HHH(DDD) aborts its emulation
    thus proving the the behaviors are different.

    No, it proves that HHH1's simulation is correct, whereas HHH's
    simulation is incorrect, because HHH aborts one cycle too soon.
    It proves that HHH cannot possibly simulate itself correctly.


    The behavior of DDD emulated by HHH1 is identical to the
    behavior of the directly executed DDD().

    Which is the behaviour of DDD accordint to the semantics of x86 language.


    If you stupidly ignore that DDD does call HHH in recursive
    emulation it might superfically seem that way.


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

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

    This has the same problem. Proving that the problem is not in DDD, but
    in HHH, which is required to halt, but it decides that HHH does not halt.

    HHH is unable to decide about finite recursions.

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

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Fri Jul 12 16:32:28 2024
    Op 12.jul.2024 om 15:25 schreef olcott:
    On 7/12/2024 3:15 AM, Mikko wrote:
    On 2024-07-11 14:12:15 +0000, olcott said:

    On 7/11/2024 1:28 AM, Mikko wrote:
    On 2024-07-10 18:58:14 +0000, olcott said:

    On 7/10/2024 1:55 PM, Alan Mackenzie wrote:
    Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:
    Op 10.jul.2024 om 20:12 schreef Alan Mackenzie:
    [ Followup-To: set ]

    In comp.theory Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:

    [ .... ]

    Proving that the simulation is incorrect. Because a correct
    simulation
    would not abort a halting program halfway its simulation.

    Just for clarity, a correct simulation wouldn't abort a non-halting >>>>>>>> program either, would it?  Or have I misunderstood this
    correctness?

    [ .... ]


    A non-halting program cannot be simulated correctly in a finite
    time.
    So, it depends whether we can call it a correct simulation, when >>>>>>> it does
    not abort. But, for some meaning of 'correct', indeed, a simulator >>>>>>> should not abort a non-halting program either.

    OK, thanks!


    In other words he is saying that when you do
    1 step correctly you did 0 steps correctly.

    That is possible as "correctly" has different meaning when talking
    about steps from when talking about simulations.


    *No that is always false*
    When you did one anythings correctly then you did
    more than zero anythings correctly.

    If I only correcly do one thing that is not a part of my routine then
    I don't do my routine correctly. If I do correctly every part of my
    routine
    but do them in a wrong order I don't do my routine correctly.


    Fred was trying to get away with saying that when 1
    step of DDD is correctly emulated by HHH that 0 steps
    were emulated correctly.


    Olcott has a problem with the English language.
    I said that when a program needs 2 cycles of simulation, it is incorrect
    to abort after 1 cycle and decide it is non-halting.
    His problem seems to be that he thinks that skipping x86 instructions in
    the simulation does not change the behaviour of a program.

    There are more situations where he seems to have a problem with the
    English language. He thinks that everything greater than 2 equals
    infinity. When a program has more than two recursions, he thinks it is non-halting.

    It is very difficult to discuss with someone with such a poor
    understanding of the English language, because he continuously twists
    the meaning of words, both his own words as well as the words of his
    opponents.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to Fred. Zwarts on Sat Jul 13 10:53:18 2024
    On 2024-07-12 14:32:28 +0000, Fred. Zwarts said:

    Op 12.jul.2024 om 15:25 schreef olcott:
    On 7/12/2024 3:15 AM, Mikko wrote:
    On 2024-07-11 14:12:15 +0000, olcott said:

    On 7/11/2024 1:28 AM, Mikko wrote:
    On 2024-07-10 18:58:14 +0000, olcott said:

    On 7/10/2024 1:55 PM, Alan Mackenzie wrote:
    Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:
    Op 10.jul.2024 om 20:12 schreef Alan Mackenzie:
    [ Followup-To: set ]

    In comp.theory Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:

    [ .... ]

    Proving that the simulation is incorrect. Because a correct simulation
    would not abort a halting program halfway its simulation.

    Just for clarity, a correct simulation wouldn't abort a non-halting >>>>>>>>> program either, would it?  Or have I misunderstood this correctness? >>>>>>>
    [ .... ]


    A non-halting program cannot be simulated correctly in a finite time. >>>>>>>> So, it depends whether we can call it a correct simulation, when it does
    not abort. But, for some meaning of 'correct', indeed, a simulator >>>>>>>> should not abort a non-halting program either.

    OK, thanks!


    In other words he is saying that when you do
    1 step correctly you did 0 steps correctly.

    That is possible as "correctly" has different meaning when talking
    about steps from when talking about simulations.


    *No that is always false*
    When you did one anythings correctly then you did
    more than zero anythings correctly.

    If I only correcly do one thing that is not a part of my routine then
    I don't do my routine correctly. If I do correctly every part of my routine >>> but do them in a wrong order I don't do my routine correctly.


    Fred was trying to get away with saying that when 1
    step of DDD is correctly emulated by HHH that 0 steps
    were emulated correctly.


    Olcott has a problem with the English language.
    I said that when a program needs 2 cycles of simulation, it is
    incorrect to abort after 1 cycle and decide it is non-halting.
    His problem seems to be that he thinks that skipping x86 instructions
    in the simulation does not change the behaviour of a program.

    There are more situations where he seems to have a problem with the
    English language. He thinks that everything greater than 2 equals
    infinity. When a program has more than two recursions, he thinks it is non-halting.

    It is very difficult to discuss with someone with such a poor
    understanding of the English language, because he continuously twists
    the meaning of words, both his own words as well as the words of his opponents.

    I think he is less harmful that way. His lack of clarity and obvious twisting of the meaning of words reduce the risk that anyone would believe what he
    tries to say.

    --
    Mikko

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

    On 7/12/2024 3:27 AM, Mikko wrote:
    On 2024-07-11 14:02:52 +0000, olcott said:

    On 7/11/2024 1:22 AM, Mikko wrote:
    On 2024-07-10 15:03:46 +0000, olcott said:

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

    void DDD()
    {
       HHH(DDD);
    }

    int main()
    {
       HHH(DDD);
    }

    We stipulate that the only measure of a correct emulation
    is the semantics of the x86 programming language. By this
    measure when 1 to ∞ steps of DDD are correctly emulated by
    each pure function x86 emulator HHH (of the infinite set
    of every HHH that can possibly exist) then DDD cannot
    possibly reach past its own machine address of 0000216b
    and halt.

    For every instruction that the C compiler generates the x86 language
    specifies an unambiguous meaning, leaving no room for "can".


    then DDD cannot possibly reach past its own machine
    address of 0000216b and halt.

    As I already said, there is not room for "can". That means there is
    no room for "cannot", either. The x86 semantics of the unshown code
    determines unambigously what happens.


    Of an infinite set behavior X exists for at least one element
    or behavior X does not exist for at least one element.
    Of the infinite set of HHH/DDD pairs zero DDD elements halt.

    That is so far from the Common Language that I can't parse.

    --
    Mikko

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

    On 7/12/2024 3:03 AM, Mikko wrote:
    On 2024-07-11 14:10:24 +0000, olcott said:

    On 7/11/2024 1:25 AM, Mikko wrote:
    On 2024-07-10 17:53:38 +0000, olcott said:

    On 7/10/2024 12:45 PM, Fred. Zwarts wrote:
    Op 10.jul.2024 om 17:03 schreef olcott:
    typedef void (*ptr)();
    int HHH(ptr P);

    void DDD()
    {
       HHH(DDD);
    }

    int main()
    {
       HHH(DDD);
    }

    Unneeded complexity. It is equivalent to:

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



    Every time any HHH correctly emulates DDD it calls the
    x86utm operating system to create a separate process
    context with its own memory virtual registers and stack,
    thus each recursively emulated DDD is a different instance.

    However, each of those instances has the same sequence of instructions >>>> that the x86 language specifies the same operational meaning.


    *That is counter-factual*
    When DDD is correctly emulated by HHH according to the
    semantics of the x86 programming language HHH must abort
    its emulation of DDD or both HHH and DDD never halt.

    There is not "must" anywhere in the semantics of the programming language. >>

    The semantics of the language specifies the behavior of
    the machine code thus deriving the must.

    How can one derive "must" from the semantics of the machine code?

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Sat Jul 13 14:31:27 2024
    Op 13.jul.2024 om 14:19 schreef olcott:
    On 7/13/2024 2:55 AM, Mikko wrote:
    On 2024-07-12 13:28:15 +0000, olcott said:

    On 7/12/2024 3:27 AM, Mikko wrote:
    On 2024-07-11 14:02:52 +0000, olcott said:

    On 7/11/2024 1:22 AM, Mikko wrote:
    On 2024-07-10 15:03:46 +0000, olcott said:

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

    void DDD()
    {
       HHH(DDD);
    }

    int main()
    {
       HHH(DDD);
    }

    We stipulate that the only measure of a correct emulation
    is the semantics of the x86 programming language. By this
    measure when 1 to ∞ steps of DDD are correctly emulated by
    each pure function x86 emulator HHH (of the infinite set
    of every HHH that can possibly exist) then DDD cannot
    possibly reach past its own machine address of 0000216b
    and halt.

    For every instruction that the C compiler generates the x86 language >>>>>> specifies an unambiguous meaning, leaving no room for "can".


    then DDD cannot possibly reach past its own machine
    address of 0000216b and halt.

    As I already said, there is not room for "can". That means there is
    no room for "cannot", either. The x86 semantics of the unshown code
    determines unambigously what happens.


    Of an infinite set behavior X exists for at least one element
    or behavior X does not exist for at least one element.
    Of the infinite set of HHH/DDD pairs zero DDD elements halt.

    That is so far from the Common Language that I can't parse.


    *This proves that every rebuttal is wrong somewhere*
    No DDD instance of each HHH/DDD pair of the infinite set of
    every HHH/DDD pair ever reaches past its own machine address of
    0000216b

    That is correct and it proves that the simulation is incorrect, because
    it aborts too soon. Look at the full trace you referenced to. It also
    shows that HHH is unable to reach the end of its own simulation.

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

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

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

    HHH is unable to decide about finite recursions.

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

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

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

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

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Sat Jul 13 14:33:34 2024
    Op 13.jul.2024 om 14:22 schreef olcott:
    On 7/13/2024 3:00 AM, Mikko wrote:
    On 2024-07-12 13:20:53 +0000, olcott said:

    On 7/12/2024 3:03 AM, Mikko wrote:
    On 2024-07-11 14:10:24 +0000, olcott said:

    On 7/11/2024 1:25 AM, Mikko wrote:
    On 2024-07-10 17:53:38 +0000, olcott said:

    On 7/10/2024 12:45 PM, Fred. Zwarts wrote:
    Op 10.jul.2024 om 17:03 schreef olcott:
    typedef void (*ptr)();
    int HHH(ptr P);

    void DDD()
    {
       HHH(DDD);
    }

    int main()
    {
       HHH(DDD);
    }

    Unneeded complexity. It is equivalent to:

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



    Every time any HHH correctly emulates DDD it calls the
    x86utm operating system to create a separate process
    context with its own memory virtual registers and stack,
    thus each recursively emulated DDD is a different instance.

    However, each of those instances has the same sequence of
    instructions
    that the x86 language specifies the same operational meaning.


    *That is counter-factual*
    When DDD is correctly emulated by HHH according to the
    semantics of the x86 programming language HHH must abort
    its emulation of DDD or both HHH and DDD never halt.

    There is not "must" anywhere in the semantics of the programming
    language.


    The semantics of the language specifies the behavior of
    the machine code thus deriving the must.

    How can one derive "must" from the semantics of the machine code?


    Deciders are required to (thus must) halt.


    Indeed, therefore, the correct simulation of a decider must halt as well.
    And since HHH cannot possibly reach its own end when simulating itself,
    it proves that such a simulator cannot be the basis of a decider.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Sat Jul 13 14:35:50 2024
    Op 13.jul.2024 om 14:18 schreef olcott:
    On 7/13/2024 2:53 AM, Mikko wrote:
    On 2024-07-12 14:32:28 +0000, Fred. Zwarts said:

    Op 12.jul.2024 om 15:25 schreef olcott:
    On 7/12/2024 3:15 AM, Mikko wrote:
    On 2024-07-11 14:12:15 +0000, olcott said:

    On 7/11/2024 1:28 AM, Mikko wrote:
    On 2024-07-10 18:58:14 +0000, olcott said:

    On 7/10/2024 1:55 PM, Alan Mackenzie wrote:
    Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:
    Op 10.jul.2024 om 20:12 schreef Alan Mackenzie:
    [ Followup-To: set ]

    In comp.theory Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:

    [ .... ]

    Proving that the simulation is incorrect. Because a correct >>>>>>>>>>>> simulation
    would not abort a halting program halfway its simulation. >>>>>>>>>
    Just for clarity, a correct simulation wouldn't abort a
    non-halting
    program either, would it?  Or have I misunderstood this >>>>>>>>>>> correctness?

    [ .... ]


    A non-halting program cannot be simulated correctly in a
    finite time.
    So, it depends whether we can call it a correct simulation, >>>>>>>>>> when it does
    not abort. But, for some meaning of 'correct', indeed, a
    simulator
    should not abort a non-halting program either.

    OK, thanks!


    In other words he is saying that when you do
    1 step correctly you did 0 steps correctly.

    That is possible as "correctly" has different meaning when talking >>>>>>> about steps from when talking about simulations.


    *No that is always false*
    When you did one anythings correctly then you did
    more than zero anythings correctly.

    If I only correcly do one thing that is not a part of my routine then >>>>> I don't do my routine correctly. If I do correctly every part of my
    routine
    but do them in a wrong order I don't do my routine correctly.


    Fred was trying to get away with saying that when 1
    step of DDD is correctly emulated by HHH that 0 steps
    were emulated correctly.


    Olcott has a problem with the English language.
    I said that when a program needs 2 cycles of simulation, it is
    incorrect to abort after 1 cycle and decide it is non-halting.
    His problem seems to be that he thinks that skipping x86 instructions
    in the simulation does not change the behaviour of a program.

    There are more situations where he seems to have a problem with the
    English language. He thinks that everything greater than 2 equals
    infinity. When a program has more than two recursions, he thinks it
    is non-halting.

    It is very difficult to discuss with someone with such a poor
    understanding of the English language, because he continuously twists
    the meaning of words, both his own words as well as the words of his
    opponents.

    I think he is less harmful that way. His lack of clarity and obvious
    twisting
    of the meaning of words reduce the risk that anyone would believe what he
    tries to say.


    *This proves that every rebuttal is wrong somewhere*
    No DDD instance of each HHH/DDD pair of the infinite set of
    every HHH/DDD pair ever reaches past its own machine address of
    0000216b and halts thus proving that every HHH is correct to
    reject its input DDD as non-halting.

    People disagree with this on the basis they they believe
    that they can disagree with the x86 language. That is the
    same as disagreeing with arithmetic, not allowed.



    The real issue is that olcott thinks he can change the semantics of the
    x86 language at will. He thinks that the behaviour of a program does not
    change if it is halted halfway its execution. Therefore, he does not
    understand that when the simulation of a halting program is aborted
    before it reaches its end, it is an incorrect simulation according to
    the semantics of the x86 language.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Sat Jul 13 22:57:44 2024
    Am Fri, 12 Jul 2024 08:20:53 -0500 schrieb olcott:
    On 7/12/2024 3:03 AM, Mikko wrote:
    On 2024-07-11 14:10:24 +0000, olcott said:
    On 7/11/2024 1:25 AM, Mikko wrote:
    On 2024-07-10 17:53:38 +0000, olcott said:
    On 7/10/2024 12:45 PM, Fred. Zwarts wrote:
    Op 10.jul.2024 om 17:03 schreef olcott:

    However, each of those instances has the same sequence of
    instructions that the x86 language specifies the same operational
    meaning.
    *That is counter-factual*
    When DDD is correctly emulated by HHH according to the semantics of
    the x86 programming language HHH must abort its emulation of DDD or
    both HHH and DDD never halt.
    The assembly is not concerned with aborting or halting.

    When DDD is correctly emulated by HHH1 according to the semantics of
    the x86 programming language HHH1 need not abort its emulation of DDD
    because HHH has already done this.
    However, the program DDD is the same in both cases and therefore the
    its behavioral meaning per x86 semantics is also the same.
    HHH1(DDD) only halts because HHH(DDD) aborts its emulation thus proving
    the the behaviors are different.
    The simple fact remains that if the behaviour of a program depends
    on what is simulating it, that simulator is faulty.

    The behavior of DDD emulated by HHH1 is identical to the behavior of
    the directly executed DDD().
    Which is the behaviour of DDD accordint to the semantics of x86
    language.
    If you stupidly ignore that DDD does call HHH in recursive emulation it
    might superfically seem that way.
    It does that in every (non-)simulation, no change there.

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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Sat Jul 13 19:45:11 2024
    On 7/13/24 7:00 PM, olcott wrote:
    On 7/13/2024 5:57 PM, joes wrote:
    Am Fri, 12 Jul 2024 08:20:53 -0500 schrieb olcott:
    On 7/12/2024 3:03 AM, Mikko wrote:
    On 2024-07-11 14:10:24 +0000, olcott said:
    On 7/11/2024 1:25 AM, Mikko wrote:
    On 2024-07-10 17:53:38 +0000, olcott said:
    On 7/10/2024 12:45 PM, Fred. Zwarts wrote:
    Op 10.jul.2024 om 17:03 schreef olcott:

    However, each of those instances has the same sequence of
    instructions that the x86 language specifies the same operational
    meaning.
    *That is counter-factual*
    When DDD is correctly emulated by HHH according to the semantics of
    the x86 programming language HHH must abort its emulation of DDD or
    both HHH and DDD never halt.
    The assembly is not concerned with aborting or halting.

    When DDD is correctly emulated by HHH1 according to the semantics of >>>>> the x86 programming language HHH1 need not abort its emulation of DDD >>>>> because HHH has already done this.
    However, the program DDD is the same in both cases and therefore the
    its behavioral meaning per x86 semantics is also the same.
    HHH1(DDD) only halts because HHH(DDD) aborts its emulation thus proving
    the the behaviors are different.
    The simple fact remains that if the behaviour of a program depends
    on what is simulating it, that simulator is faulty.

    The behavior of DDD emulated by HHH1 is identical to the behavior of >>>>> the directly executed DDD().
    Which is the behaviour of DDD accordint to the semantics of x86
    language.
    If you stupidly ignore that DDD does call HHH in recursive emulation it
    might superfically seem that way.

    It does that in every (non-)simulation, no change there.



    DDD cannot call HHH in recursive emulation WITHOUT EMULATION.


    But, since HHH does conditional emulation, if HHH will abort its
    emulation it is not infinite recursive emulation.

    If HHH can not handle emulating programs that call versions of it, then
    it is just defective or incomplete.

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

    On 7/13/2024 2:55 AM, Mikko wrote:
    On 2024-07-12 13:28:15 +0000, olcott said:

    On 7/12/2024 3:27 AM, Mikko wrote:
    On 2024-07-11 14:02:52 +0000, olcott said:

    On 7/11/2024 1:22 AM, Mikko wrote:
    On 2024-07-10 15:03:46 +0000, olcott said:

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

    void DDD()
    {
       HHH(DDD);
    }

    int main()
    {
       HHH(DDD);
    }

    We stipulate that the only measure of a correct emulation
    is the semantics of the x86 programming language. By this
    measure when 1 to ∞ steps of DDD are correctly emulated by
    each pure function x86 emulator HHH (of the infinite set
    of every HHH that can possibly exist) then DDD cannot
    possibly reach past its own machine address of 0000216b
    and halt.

    For every instruction that the C compiler generates the x86 language >>>>>> specifies an unambiguous meaning, leaving no room for "can".


    then DDD cannot possibly reach past its own machine
    address of 0000216b and halt.

    As I already said, there is not room for "can". That means there is
    no room for "cannot", either. The x86 semantics of the unshown code
    determines unambigously what happens.


    Of an infinite set behavior X exists for at least one element
    or behavior X does not exist for at least one element.
    Of the infinite set of HHH/DDD pairs zero DDD elements halt.

    That is so far from the Common Language that I can't parse.


    *This proves that every rebuttal is wrong somewhere*
    No DDD instance of each HHH/DDD pair of the infinite set of
    every HHH/DDD pair ever reaches past its own machine address of
    0000216b and halts thus proving that every HHH is correct to
    reject its input DDD as non-halting.

    Here you attempt to use the same name for a constant programs and univesally quantifed variable with a poorly specified range. That is a form of a well known mistake called the "fallacy of equivocation".

    --
    Mikko

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

    On 7/13/2024 3:00 AM, Mikko wrote:
    On 2024-07-12 13:20:53 +0000, olcott said:

    On 7/12/2024 3:03 AM, Mikko wrote:
    On 2024-07-11 14:10:24 +0000, olcott said:

    On 7/11/2024 1:25 AM, Mikko wrote:
    On 2024-07-10 17:53:38 +0000, olcott said:

    On 7/10/2024 12:45 PM, Fred. Zwarts wrote:
    Op 10.jul.2024 om 17:03 schreef olcott:
    typedef void (*ptr)();
    int HHH(ptr P);

    void DDD()
    {
       HHH(DDD);
    }

    int main()
    {
       HHH(DDD);
    }

    Unneeded complexity. It is equivalent to:

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



    Every time any HHH correctly emulates DDD it calls the
    x86utm operating system to create a separate process
    context with its own memory virtual registers and stack,
    thus each recursively emulated DDD is a different instance.

    However, each of those instances has the same sequence of instructions >>>>>> that the x86 language specifies the same operational meaning.


    *That is counter-factual*
    When DDD is correctly emulated by HHH according to the
    semantics of the x86 programming language HHH must abort
    its emulation of DDD or both HHH and DDD never halt.

    There is not "must" anywhere in the semantics of the programming language. >>>>

    The semantics of the language specifies the behavior of
    the machine code thus deriving the must.

    How can one derive "must" from the semantics of the machine code?


    Deciders are required to (thus must) halt.

    The semantics of the x86 language does not require that, nor that any of
    the programs is a decider.

    --
    Mikko

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

    On 7/13/2024 2:53 AM, Mikko wrote:
    On 2024-07-12 14:32:28 +0000, Fred. Zwarts said:

    Op 12.jul.2024 om 15:25 schreef olcott:
    On 7/12/2024 3:15 AM, Mikko wrote:
    On 2024-07-11 14:12:15 +0000, olcott said:

    On 7/11/2024 1:28 AM, Mikko wrote:
    On 2024-07-10 18:58:14 +0000, olcott said:

    On 7/10/2024 1:55 PM, Alan Mackenzie wrote:
    Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:
    Op 10.jul.2024 om 20:12 schreef Alan Mackenzie:
    [ Followup-To: set ]

    In comp.theory Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:

    [ .... ]

    Proving that the simulation is incorrect. Because a correct simulation
    would not abort a halting program halfway its simulation. >>>>>>>>>
    Just for clarity, a correct simulation wouldn't abort a non-halting >>>>>>>>>>> program either, would it?  Or have I misunderstood this correctness?

    [ .... ]


    A non-halting program cannot be simulated correctly in a finite time.
    So, it depends whether we can call it a correct simulation, when it does
    not abort. But, for some meaning of 'correct', indeed, a simulator >>>>>>>>>> should not abort a non-halting program either.

    OK, thanks!


    In other words he is saying that when you do
    1 step correctly you did 0 steps correctly.

    That is possible as "correctly" has different meaning when talking >>>>>>> about steps from when talking about simulations.


    *No that is always false*
    When you did one anythings correctly then you did
    more than zero anythings correctly.

    If I only correcly do one thing that is not a part of my routine then >>>>> I don't do my routine correctly. If I do correctly every part of my routine
    but do them in a wrong order I don't do my routine correctly.


    Fred was trying to get away with saying that when 1
    step of DDD is correctly emulated by HHH that 0 steps
    were emulated correctly.


    Olcott has a problem with the English language.
    I said that when a program needs 2 cycles of simulation, it is
    incorrect to abort after 1 cycle and decide it is non-halting.
    His problem seems to be that he thinks that skipping x86 instructions
    in the simulation does not change the behaviour of a program.

    There are more situations where he seems to have a problem with the
    English language. He thinks that everything greater than 2 equals
    infinity. When a program has more than two recursions, he thinks it is
    non-halting.

    It is very difficult to discuss with someone with such a poor
    understanding of the English language, because he continuously twists
    the meaning of words, both his own words as well as the words of his
    opponents.

    I think he is less harmful that way. His lack of clarity and obvious twisting
    of the meaning of words reduce the risk that anyone would believe what he
    tries to say.


    *This proves that every rebuttal is wrong somewhere*
    No DDD instance of each HHH/DDD pair of the infinite set of
    every HHH/DDD pair ever reaches past its own machine address of
    0000216b and halts thus proving that every HHH is correct to
    reject its input DDD as non-halting.

    People disagree with this on the basis they they believe
    that they can disagree with the x86 language. That is the
    same as disagreeing with arithmetic, not allowed.

    See, not very convincing, is it?

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From joes@21:1/5 to All on Mon Jul 15 00:21:33 2024
    Am Sun, 14 Jul 2024 09:13:41 -0500 schrieb olcott:
    On 7/14/2024 3:40 AM, Mikko wrote:
    On 2024-07-13 12:22:24 +0000, olcott said:
    On 7/13/2024 3:00 AM, Mikko wrote:
    On 2024-07-12 13:20:53 +0000, olcott said:
    On 7/12/2024 3:03 AM, Mikko wrote:
    On 2024-07-11 14:10:24 +0000, olcott said:
    On 7/11/2024 1:25 AM, Mikko wrote:
    On 2024-07-10 17:53:38 +0000, olcott said:
    On 7/10/2024 12:45 PM, Fred. Zwarts wrote:
    Op 10.jul.2024 om 17:03 schreef olcott:

    However, each of those instances has the same sequence of
    instructions that the x86 language specifies the same operational >>>>>>>> meaning.
    *That is counter-factual*
    When DDD is correctly emulated by HHH according to the semantics >>>>>>> of the x86 programming language HHH must abort its emulation of
    DDD or both HHH and DDD never halt.
    There is not "must" anywhere in the semantics of the programming
    language.
    The semantics of the language specifies the behavior of the machine
    code thus deriving the must.
    How can one derive "must" from the semantics of the machine code?
    Deciders are required to (thus must) halt.
    The semantics of the x86 language does not require that, nor that any
    of the programs is a decider.
    The subject our our conversion is a simulating termination analyzer AKA partial halt decider that accepts a finite string of x86 code as
    specifying halting behavior or rejects this finite string. Deciders are required to halt thus must abort the emulation of any input that would prevent this.
    Any input that must be aborted to prevent the non termination of HHH necessarily specifies non-halting behavior or it would never need to be aborted.
    DDD nor HHH however are non-halting inputs and do not need to be aborted.

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

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

    On 7/14/2024 3:40 AM, Mikko wrote:
    On 2024-07-13 12:22:24 +0000, olcott said:

    On 7/13/2024 3:00 AM, Mikko wrote:
    On 2024-07-12 13:20:53 +0000, olcott said:

    On 7/12/2024 3:03 AM, Mikko wrote:
    On 2024-07-11 14:10:24 +0000, olcott said:

    On 7/11/2024 1:25 AM, Mikko wrote:
    On 2024-07-10 17:53:38 +0000, olcott said:

    On 7/10/2024 12:45 PM, Fred. Zwarts wrote:
    Op 10.jul.2024 om 17:03 schreef olcott:
    typedef void (*ptr)();
    int HHH(ptr P);

    void DDD()
    {
       HHH(DDD);
    }

    int main()
    {
       HHH(DDD);
    }

    Unneeded complexity. It is equivalent to:

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



    Every time any HHH correctly emulates DDD it calls the
    x86utm operating system to create a separate process
    context with its own memory virtual registers and stack,
    thus each recursively emulated DDD is a different instance.

    However, each of those instances has the same sequence of instructions >>>>>>>> that the x86 language specifies the same operational meaning.


    *That is counter-factual*
    When DDD is correctly emulated by HHH according to the
    semantics of the x86 programming language HHH must abort
    its emulation of DDD or both HHH and DDD never halt.

    There is not "must" anywhere in the semantics of the programming language.


    The semantics of the language specifies the behavior of
    the machine code thus deriving the must.

    How can one derive "must" from the semantics of the machine code?


    Deciders are required to (thus must) halt.

    The semantics of the x86 language does not require that, nor that any of
    the programs is a decider.

    The subject our our conversion is a simulating termination
    analyzer

    No, it is not. As stated on the Subject line, the subject is correctness of
    the rejection of DDD as non-halting.

    AKA partial halt decider

    That "AKA" is incorrect. The term "termination analyzer" means a program
    of a certain kind and the term "partial halt decider" means a program of
    a different kind.

    that accepts a finite string of x86 code as specifying halting behavior
    or rejects this finite string. Deciders are required to halt thus must
    abort the emulation of any input that would prevent this.

    However, that is not sufficient. The decider must not accpet inputs that
    its specification does not specify as acceptable and must not reject inputs that its specification does not specify as rejectable. As you call your
    program a "partial halt decider" you should also specify how it is partial, i.e., what inputs it is required to answer the same whay as a halt decider
    and what it may do with the other inputs.

    --
    Mikko

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

    On 7/14/2024 3:48 AM, Mikko wrote:
    On 2024-07-13 12:19:36 +0000, olcott said:

    On 7/13/2024 2:55 AM, Mikko wrote:
    On 2024-07-12 13:28:15 +0000, olcott said:

    On 7/12/2024 3:27 AM, Mikko wrote:
    On 2024-07-11 14:02:52 +0000, olcott said:

    On 7/11/2024 1:22 AM, Mikko wrote:
    On 2024-07-10 15:03:46 +0000, olcott said:

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

    void DDD()
    {
       HHH(DDD);
    }

    int main()
    {
       HHH(DDD);
    }

    We stipulate that the only measure of a correct emulation
    is the semantics of the x86 programming language. By this
    measure when 1 to ∞ steps of DDD are correctly emulated by >>>>>>>>> each pure function x86 emulator HHH (of the infinite set
    of every HHH that can possibly exist) then DDD cannot
    possibly reach past its own machine address of 0000216b
    and halt.

    For every instruction that the C compiler generates the x86 language >>>>>>>> specifies an unambiguous meaning, leaving no room for "can".


    then DDD cannot possibly reach past its own machine
    address of 0000216b and halt.

    As I already said, there is not room for "can". That means there is >>>>>> no room for "cannot", either. The x86 semantics of the unshown code >>>>>> determines unambigously what happens.


    Of an infinite set behavior X exists for at least one element
    or behavior X does not exist for at least one element.
    Of the infinite set of HHH/DDD pairs zero DDD elements halt.

    That is so far from the Common Language that I can't parse.


    *This proves that every rebuttal is wrong somewhere*
    No DDD instance of each HHH/DDD pair of the infinite set of
    every HHH/DDD pair ever reaches past its own machine address of
    0000216b and halts thus proving that every HHH is correct to
    reject its input DDD as non-halting.

    Here you attempt to use the same name for a constant programs and univesally >> quantifed variable with a poorly specified range. That is a form of a well >> known mistake called the "fallacy of equivocation".

    I incorporated your suggestion in my paper.
    DDD is a fixed constant finite string that calls its
    HHH at the same fixed constant machine address.

    That does not make sense. Which HHH does that DDD call? Which HHH
    is at that fixed machine address?

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

    It is not possible to execute more steps than there are, so you add that
    the emulation may terminate earlier if the input halts. Unless you
    only want to prove that those programs don't halt unless the halt.

    --
    Mikko

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

    On 7/14/2024 3:49 AM, Mikko wrote:
    On 2024-07-13 12:18:27 +0000, olcott said:

    On 7/13/2024 2:53 AM, Mikko wrote:
    On 2024-07-12 14:32:28 +0000, Fred. Zwarts said:

    Op 12.jul.2024 om 15:25 schreef olcott:
    On 7/12/2024 3:15 AM, Mikko wrote:
    On 2024-07-11 14:12:15 +0000, olcott said:

    On 7/11/2024 1:28 AM, Mikko wrote:
    On 2024-07-10 18:58:14 +0000, olcott said:

    On 7/10/2024 1:55 PM, Alan Mackenzie wrote:
    Fred. Zwarts <F.Zwarts@hetnet.nl> wrote:
    Op 10.jul.2024 om 20:12 schreef Alan Mackenzie:
    [ Followup-To: set ]

    In comp.theory Fred. Zwarts <F.Zwarts@hetnet.nl> wrote: >>>>>>>>>>>
    [ .... ]

    Proving that the simulation is incorrect. Because a correct simulation
    would not abort a halting program halfway its simulation. >>>>>>>>>>>
    Just for clarity, a correct simulation wouldn't abort a non-halting
    program either, would it?  Or have I misunderstood this correctness?

    [ .... ]


    A non-halting program cannot be simulated correctly in a finite time.
    So, it depends whether we can call it a correct simulation, when it does
    not abort. But, for some meaning of 'correct', indeed, a simulator >>>>>>>>>>>> should not abort a non-halting program either.

    OK, thanks!


    In other words he is saying that when you do
    1 step correctly you did 0 steps correctly.

    That is possible as "correctly" has different meaning when talking >>>>>>>>> about steps from when talking about simulations.


    *No that is always false*
    When you did one anythings correctly then you did
    more than zero anythings correctly.

    If I only correcly do one thing that is not a part of my routine then >>>>>>> I don't do my routine correctly. If I do correctly every part of my routine
    but do them in a wrong order I don't do my routine correctly.


    Fred was trying to get away with saying that when 1
    step of DDD is correctly emulated by HHH that 0 steps
    were emulated correctly.


    Olcott has a problem with the English language.
    I said that when a program needs 2 cycles of simulation, it is
    incorrect to abort after 1 cycle and decide it is non-halting.
    His problem seems to be that he thinks that skipping x86 instructions >>>>> in the simulation does not change the behaviour of a program.

    There are more situations where he seems to have a problem with the
    English language. He thinks that everything greater than 2 equals
    infinity. When a program has more than two recursions, he thinks it is >>>>> non-halting.

    It is very difficult to discuss with someone with such a poor
    understanding of the English language, because he continuously twists >>>>> the meaning of words, both his own words as well as the words of his >>>>> opponents.

    I think he is less harmful that way. His lack of clarity and obvious twisting
    of the meaning of words reduce the risk that anyone would believe what he >>>> tries to say.


    *This proves that every rebuttal is wrong somewhere*
    No DDD instance of each HHH/DDD pair of the infinite set of
    every HHH/DDD pair ever reaches past its own machine address of
    0000216b and halts thus proving that every HHH is correct to
    reject its input DDD as non-halting.

    People disagree with this on the basis they they believe
    that they can disagree with the x86 language. That is the
    same as disagreeing with arithmetic, not allowed.

    See, not very convincing, is it?


    Likewise for people that do not know how to count to
    five can disagree that 2 + 3 = 5.

    When the source of your disagreement is your own ignorance
    then your disagreement has no actual basis.

    *You can comprehend this is a truism or fail to*
    *comprehend it disagreement is necessarily incorrect*
    Any input that must be aborted to prevent the non
    termination of HHH necessarily specifies non-halting
    behavior or it would never need to be aborted.

    Disagreeing with the above is analogous to disagreeing
    with arithmetic.

    A lame analogy. A better one is: 2 + 3 = 5 is a proven theorem just
    like the uncomputability of halting is. Therefore, disagreeing with
    2 + 3 = 5 is equivalent to disagreeing with the uncomputability of
    halting.

    --
    Mikko

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

    On 7/15/2024 2:41 AM, Mikko wrote:
    On 2024-07-14 14:13:41 +0000, olcott said:

    On 7/14/2024 3:40 AM, Mikko wrote:
    On 2024-07-13 12:22:24 +0000, olcott said:

    Deciders are required to (thus must) halt.

    The semantics of the x86 language does not require that, nor that any of >>>> the programs is a decider.

    The subject our our conversion is a simulating termination
    analyzer

    No, it is not. As stated on the Subject line, the subject is correctness of >> the rejection of DDD as non-halting.

    AKA partial halt decider

    That "AKA" is incorrect. The term "termination analyzer" means a program
    of a certain kind and the term "partial halt decider" means a program of
    a different kind.


    Not for the subset of inputs that we are examining.

    Yes with all inputs. Their input spaces are distinct and they are required
    to answer a different question.

    --
    Mikko

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

    On 7/15/2024 2:52 AM, Mikko wrote:
    On 2024-07-14 14:44:27 +0000, olcott said:

    On 7/14/2024 3:48 AM, Mikko wrote:
    On 2024-07-13 12:19:36 +0000, olcott said:

    On 7/13/2024 2:55 AM, Mikko wrote:
    On 2024-07-12 13:28:15 +0000, olcott said:

    On 7/12/2024 3:27 AM, Mikko wrote:
    On 2024-07-11 14:02:52 +0000, olcott said:

    On 7/11/2024 1:22 AM, Mikko wrote:
    On 2024-07-10 15:03:46 +0000, olcott said:

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

    void DDD()
    {
       HHH(DDD);
    }

    int main()
    {
       HHH(DDD);
    }

    We stipulate that the only measure of a correct emulation >>>>>>>>>>> is the semantics of the x86 programming language. By this >>>>>>>>>>> measure when 1 to ∞ steps of DDD are correctly emulated by >>>>>>>>>>> each pure function x86 emulator HHH (of the infinite set >>>>>>>>>>> of every HHH that can possibly exist) then DDD cannot
    possibly reach past its own machine address of 0000216b
    and halt.

    For every instruction that the C compiler generates the x86 language >>>>>>>>>> specifies an unambiguous meaning, leaving no room for "can". >>>>>>>>>>

    then DDD cannot possibly reach past its own machine
    address of 0000216b and halt.

    As I already said, there is not room for "can". That means there is >>>>>>>> no room for "cannot", either. The x86 semantics of the unshown code >>>>>>>> determines unambigously what happens.


    Of an infinite set behavior X exists for at least one element
    or behavior X does not exist for at least one element.
    Of the infinite set of HHH/DDD pairs zero DDD elements halt.

    That is so far from the Common Language that I can't parse.


    *This proves that every rebuttal is wrong somewhere*
    No DDD instance of each HHH/DDD pair of the infinite set of
    every HHH/DDD pair ever reaches past its own machine address of
    0000216b and halts thus proving that every HHH is correct to
    reject its input DDD as non-halting.

    Here you attempt to use the same name for a constant programs and univesally
    quantifed variable with a poorly specified range. That is a form of a well >>>> known mistake called the "fallacy of equivocation".

    I incorporated your suggestion in my paper.
    DDD is a fixed constant finite string that calls its
    HHH at the same fixed constant machine address.

    That does not make sense. Which HHH does that DDD call? Which HHH
    is at that fixed machine address?


    HHH₁ to HHH∞ forming an infinite set of HHH/DDD pairs

    HHH₁/DDD₁ to HHH∞/DDD∞ is another way to specify this
    infinite set of HHH/DDD pairs.

    You should not say "another way" before you have one way. What you
    presented earlier is not a way as it did not make sense. It you
    mean what you say now that is the way to say it. But you still must
    specify avout each DDD which HHH it calls.

    --
    Mikko

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

    On 7/15/2024 2:57 AM, Mikko wrote:
    On 2024-07-14 14:48:05 +0000, olcott said:

    On 7/14/2024 3:49 AM, Mikko wrote:
    On 2024-07-13 12:18:27 +0000, olcott said:

    When the source of your disagreement is your own ignorance
    then your disagreement has no actual basis.

    *You can comprehend this is a truism or fail to*
    *comprehend it disagreement is necessarily incorrect*
    Any input that must be aborted to prevent the non
    termination of HHH necessarily specifies non-halting
    behavior or it would never need to be aborted.

    Disagreeing with the above is analogous to disagreeing
    with arithmetic.

    A lame analogy. A better one is: 2 + 3 = 5 is a proven theorem just
    like the uncomputability of halting is.

    The uncomputability of halting is only proven when the problem
    is framed this way: HHH is required to report on the behavior
    of an input that was defined to do exactly the opposite of
    whatever DDD reports.

    No, it is proven about the halting problem as that problem is.
    The program that predicts what HHH would say and does the opposite
    is just one eample of a program.

    When HHH is defined such that an input that was defined to
    do the opposite of whatever HHH reports can never reach this
    point in its execution trace then the prior halting problem
    proof has been defeated.

    No, not anymore that 2 + 3 = 5 is defeated by a 2 that is defined to
    shrink to 1 if 3 is added to it.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Tue Jul 16 20:23:28 2024
    Op 16.jul.2024 om 16:34 schreef olcott:
    On 7/16/2024 2:10 AM, Mikko wrote:
    On 2024-07-15 13:21:35 +0000, olcott said:

    On 7/15/2024 2:52 AM, Mikko wrote:
    On 2024-07-14 14:44:27 +0000, olcott said:

    On 7/14/2024 3:48 AM, Mikko wrote:
    On 2024-07-13 12:19:36 +0000, olcott said:

    On 7/13/2024 2:55 AM, Mikko wrote:
    On 2024-07-12 13:28:15 +0000, olcott said:

    On 7/12/2024 3:27 AM, Mikko wrote:
    On 2024-07-11 14:02:52 +0000, olcott said:

    On 7/11/2024 1:22 AM, Mikko wrote:
    On 2024-07-10 15:03:46 +0000, olcott said:

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

    void DDD()
    {
       HHH(DDD);
    }

    int main()
    {
       HHH(DDD);
    }

    We stipulate that the only measure of a correct emulation >>>>>>>>>>>>> is the semantics of the x86 programming language. By this >>>>>>>>>>>>> measure when 1 to ∞ steps of DDD are correctly emulated by >>>>>>>>>>>>> each pure function x86 emulator HHH (of the infinite set >>>>>>>>>>>>> of every HHH that can possibly exist) then DDD cannot >>>>>>>>>>>>> possibly reach past its own machine address of 0000216b >>>>>>>>>>>>> and halt.

    For every instruction that the C compiler generates the x86 >>>>>>>>>>>> language
    specifies an unambiguous meaning, leaving no room for "can". >>>>>>>>>>>>

    then DDD cannot possibly reach past its own machine
    address of 0000216b and halt.

    As I already said, there is not room for "can". That means >>>>>>>>>> there is
    no room for "cannot", either. The x86 semantics of the unshown >>>>>>>>>> code
    determines unambigously what happens.


    Of an infinite set behavior X exists for at least one element >>>>>>>>> or behavior X does not exist for at least one element.
    Of the infinite set of HHH/DDD pairs zero DDD elements halt.

    That is so far from the Common Language that I can't parse.


    *This proves that every rebuttal is wrong somewhere*
    No DDD instance of each HHH/DDD pair of the infinite set of
    every HHH/DDD pair ever reaches past its own machine address of
    0000216b and halts thus proving that every HHH is correct to
    reject its input DDD as non-halting.

    Here you attempt to use the same name for a constant programs and
    univesally
    quantifed variable with a poorly specified range. That is a form
    of a well
    known mistake called the "fallacy of equivocation".

    I incorporated your suggestion in my paper.
    DDD is a fixed constant finite string that calls its
    HHH at the same fixed constant machine address.

    That does not make sense. Which HHH does that DDD call? Which HHH
    is at that fixed machine address?


    HHH₁ to HHH∞ forming an infinite set of HHH/DDD pairs

    HHH₁/DDD₁ to HHH∞/DDD∞ is another way to specify this
    infinite set of HHH/DDD pairs.

    You should not say "another way" before you have one way. What you
    presented earlier is not a way as it did not make sense.

    DDD itself is a single immutable finite string have the exactly
    same instructions at the exact same machine addresses.

    If you want at look at DDD less literally and more figuratively
    then we can classify DDD as one member of a set of HHH/DDD pairs.

    There is no reason to do this because each DDD has the same behavior
    and each HHH is called at the same fixed constant machine address.

    Even a beginner knows that there can be only one function at a given
    address at a time. Each time HHH is replaced by another function at the
    same address, the behaviour of DDD changes, which makes DDD another program. You are trying to hide this fact, by introducing DDD.

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

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

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

    We cannot say that all programs 'main' that only one program at the same address are equal. Each programmer knows that the behaviour of a program
    (and of a function) is determined by the behaviour of the functions it
    calls. To deny that main (or DDD) does not change when HHH is changes is
    an error that is not even made by beginners.

    The problem is: HHH is unable to decide about finite recursions.

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

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

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

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

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


    The only reason that I have DDD/HHH pairs is because deceitful
    reviewers were trying to get away with saying tha some DDD have
    different behavior.

    It you
    mean what you say now that is the way to say it. But you still must
    specify avout each DDD which HHH it calls.


    *I have done that at least 1000 time in the last two years*

    No DDD of the infinite set of HHH/DDD pairs where DDD
    is emulated by HHH according to the semantics of the
    x86 language ever reaches past its own machine address
    0000216b.

    Which proves that each of these simulations is incorrect.
    We know that, because we have seen that other simulators are able to
    simulate HHH up to the end.
    In fact, each HHH that aborts after N cycles can be correctly simulated
    by a HHH that aborts after more than N cycles.
    HHH's problem is that it does not simulate more than N cycles.


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


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

    On 7/16/2024 2:06 AM, Mikko wrote:
    On 2024-07-15 13:15:29 +0000, olcott said:

    On 7/15/2024 2:41 AM, Mikko wrote:
    On 2024-07-14 14:13:41 +0000, olcott said:

    On 7/14/2024 3:40 AM, Mikko wrote:
    On 2024-07-13 12:22:24 +0000, olcott said:

    Deciders are required to (thus must) halt.

    The semantics of the x86 language does not require that, nor that any of >>>>>> the programs is a decider.

    The subject our our conversion is a simulating termination
    analyzer

    No, it is not. As stated on the Subject line, the subject is correctness of
    the rejection of DDD as non-halting.

    AKA partial halt decider

    That "AKA" is incorrect. The term "termination analyzer" means a program >>>> of a certain kind and the term "partial halt decider" means a program of >>>> a different kind.


    Not for the subset of inputs that we are examining.

    Yes with all inputs. Their input spaces are distinct and they are required >> to answer a different question.



    A partial halt decider is a termination analyzer for
    any input that has no inputs.

    A program with no inputs is a rather uninteresting speial case. That this special case does not reveal the difference in the meaning of the words
    does not mean that there is do difference.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Wed Jul 17 10:08:54 2024
    On 2024-07-16 14:46:40 +0000, olcott said:

    On 7/16/2024 2:18 AM, Mikko wrote:
    On 2024-07-15 13:32:27 +0000, olcott said:

    On 7/15/2024 2:57 AM, Mikko wrote:
    On 2024-07-14 14:48:05 +0000, olcott said:

    On 7/14/2024 3:49 AM, Mikko wrote:
    On 2024-07-13 12:18:27 +0000, olcott said:

    When the source of your disagreement is your own ignorance
    then your disagreement has no actual basis.

    *You can comprehend this is a truism or fail to*
    *comprehend it disagreement is necessarily incorrect*
    Any input that must be aborted to prevent the non
    termination of HHH necessarily specifies non-halting
    behavior or it would never need to be aborted.

    Disagreeing with the above is analogous to disagreeing
    with arithmetic.

    A lame analogy. A better one is: 2 + 3 = 5 is a proven theorem just
    like the uncomputability of halting is.

    The uncomputability of halting is only proven when the problem
    is framed this way: HHH is required to report on the behavior
    of an input that was defined to do exactly the opposite of
    whatever DDD reports.

    No, it is proven about the halting problem as that problem is.

    Which is simply a logical impossibility

    Yes, a halting decider is a logical impossibility, as can be and has
    been proven.

    thus no actual limit to computation more that this logical impossibility: What time is it (yes or no)?

    As construction of a halting decider is already known to be impossible
    why would anyone care whether there is other limitations about it?

    And of course the impossibility of halting decider prevents any applicaions
    of it, for example as a tool to solve other problems.

    *This is isomorphic the HP decider/input pair*
    Can Carol correctly answer “no” to this (yes/no) question? (Hehner:2018:2)

    Perhaps you can use the isomorphism to proove that Carol can't.
    But that should be faily easy anyway.

    --
    Mikko

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

    On 7/16/2024 2:10 AM, Mikko wrote:
    On 2024-07-15 13:21:35 +0000, olcott said:

    On 7/15/2024 2:52 AM, Mikko wrote:
    On 2024-07-14 14:44:27 +0000, olcott said:

    On 7/14/2024 3:48 AM, Mikko wrote:
    On 2024-07-13 12:19:36 +0000, olcott said:

    On 7/13/2024 2:55 AM, Mikko wrote:
    On 2024-07-12 13:28:15 +0000, olcott said:

    On 7/12/2024 3:27 AM, Mikko wrote:
    On 2024-07-11 14:02:52 +0000, olcott said:

    On 7/11/2024 1:22 AM, Mikko wrote:
    On 2024-07-10 15:03:46 +0000, olcott said:

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

    void DDD()
    {
       HHH(DDD);
    }

    int main()
    {
       HHH(DDD);
    }

    We stipulate that the only measure of a correct emulation >>>>>>>>>>>>> is the semantics of the x86 programming language. By this >>>>>>>>>>>>> measure when 1 to ∞ steps of DDD are correctly emulated by >>>>>>>>>>>>> each pure function x86 emulator HHH (of the infinite set >>>>>>>>>>>>> of every HHH that can possibly exist) then DDD cannot >>>>>>>>>>>>> possibly reach past its own machine address of 0000216b >>>>>>>>>>>>> and halt.

    For every instruction that the C compiler generates the x86 language
    specifies an unambiguous meaning, leaving no room for "can". >>>>>>>>>>>>

    then DDD cannot possibly reach past its own machine
    address of 0000216b and halt.

    As I already said, there is not room for "can". That means there is >>>>>>>>>> no room for "cannot", either. The x86 semantics of the unshown code >>>>>>>>>> determines unambigously what happens.


    Of an infinite set behavior X exists for at least one element >>>>>>>>> or behavior X does not exist for at least one element.
    Of the infinite set of HHH/DDD pairs zero DDD elements halt.

    That is so far from the Common Language that I can't parse.


    *This proves that every rebuttal is wrong somewhere*
    No DDD instance of each HHH/DDD pair of the infinite set of
    every HHH/DDD pair ever reaches past its own machine address of
    0000216b and halts thus proving that every HHH is correct to
    reject its input DDD as non-halting.

    Here you attempt to use the same name for a constant programs and univesally
    quantifed variable with a poorly specified range. That is a form of a well
    known mistake called the "fallacy of equivocation".

    I incorporated your suggestion in my paper.
    DDD is a fixed constant finite string that calls its
    HHH at the same fixed constant machine address.

    That does not make sense. Which HHH does that DDD call? Which HHH
    is at that fixed machine address?


    HHH₁ to HHH∞ forming an infinite set of HHH/DDD pairs

    HHH₁/DDD₁ to HHH∞/DDD∞ is another way to specify this
    infinite set of HHH/DDD pairs.

    You should not say "another way" before you have one way. What you
    presented earlier is not a way as it did not make sense.

    DDD itself is a single immutable finite string have the exactly
    same instructions at the exact same machine addresses.

    That string does not specify what the call to an address outside of the
    string does and whether it returns. The semantics of x86 as specified
    by Intel and implemented in various x86 processors is silent about that.
    A decider is required to decide about the given input and nothing else.
    If HHH uses any information not contained in its input string it violates
    that requirement.

    --
    Mikko

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

    On 7/16/2024 2:10 AM, Mikko wrote:
    On 2024-07-15 13:21:35 +0000, olcott said:

    On 7/15/2024 2:52 AM, Mikko wrote:
    On 2024-07-14 14:44:27 +0000, olcott said:

    On 7/14/2024 3:48 AM, Mikko wrote:
    On 2024-07-13 12:19:36 +0000, olcott said:

    On 7/13/2024 2:55 AM, Mikko wrote:
    On 2024-07-12 13:28:15 +0000, olcott said:

    On 7/12/2024 3:27 AM, Mikko wrote:
    On 2024-07-11 14:02:52 +0000, olcott said:

    On 7/11/2024 1:22 AM, Mikko wrote:
    On 2024-07-10 15:03:46 +0000, olcott said:

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

    void DDD()
    {
       HHH(DDD);
    }

    int main()
    {
       HHH(DDD);
    }

    We stipulate that the only measure of a correct emulation >>>>>>>>>>>>>>> is the semantics of the x86 programming language. By this >>>>>>>>>>>>>>> measure when 1 to ∞ steps of DDD are correctly emulated by >>>>>>>>>>>>>>> each pure function x86 emulator HHH (of the infinite set >>>>>>>>>>>>>>> of every HHH that can possibly exist) then DDD cannot >>>>>>>>>>>>>>> possibly reach past its own machine address of 0000216b >>>>>>>>>>>>>>> and halt.

    For every instruction that the C compiler generates the >>>>>>>>>>>>>> x86 language
    specifies an unambiguous meaning, leaving no room for "can". >>>>>>>>>>>>>>

    then DDD cannot possibly reach past its own machine
    address of 0000216b and halt.

    As I already said, there is not room for "can". That means >>>>>>>>>>>> there is
    no room for "cannot", either. The x86 semantics of the >>>>>>>>>>>> unshown code
    determines unambigously what happens.


    Of an infinite set behavior X exists for at least one element >>>>>>>>>>> or behavior X does not exist for at least one element.
    Of the infinite set of HHH/DDD pairs zero DDD elements halt. >>>>>>>>>>
    That is so far from the Common Language that I can't parse. >>>>>>>>>>

    *This proves that every rebuttal is wrong somewhere*
    No DDD instance of each HHH/DDD pair of the infinite set of
    every HHH/DDD pair ever reaches past its own machine address of >>>>>>>>> 0000216b and halts thus proving that every HHH is correct to >>>>>>>>> reject its input DDD as non-halting.

    Here you attempt to use the same name for a constant programs
    and univesally
    quantifed variable with a poorly specified range. That is a form >>>>>>>> of a well
    known mistake called the "fallacy of equivocation".

    I incorporated your suggestion in my paper.
    DDD is a fixed constant finite string that calls its
    HHH at the same fixed constant machine address.

    That does not make sense. Which HHH does that DDD call? Which HHH
    is at that fixed machine address?


    HHH₁ to HHH∞ forming an infinite set of HHH/DDD pairs

    HHH₁/DDD₁ to HHH∞/DDD∞ is another way to specify this
    infinite set of HHH/DDD pairs.

    You should not say "another way" before you have one way. What you
    presented earlier is not a way as it did not make sense.

    DDD itself is a single immutable finite string have the exactly
    same instructions at the exact same machine addresses.

    That string does not specify what the call to an address outside of the
    string does and whether it returns.

    It need not do that. It specifies the address of HHH and the empirical behavior of DDD correctly emulated by HHH shows this behavior.

    Also it is stipulated that HHH is an infinite set of x86 emulators
    that correctly emulate 1,2,3...∞ instructions of DDD.

    It is self-evident that a simulator cannot simulate an infinite set.
    So, you are talking about an infinite set of simulations, each of which
    is incorrect, because each of them abort one cycle too soon.
    So, the simulation invariant is: The simulation is incorrect.
    An infinite amount of evidence that the simulation is incorrect is
    sufficient proof that the simulation is incorrect.


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

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

    But HHH is programmed to abort after N cyles, so the 'unless abort' is misleading. The simulated HHH is programmed exactly the same way, so it
    is incorrect to abort it, when only N-1 cycles have been simulated.
    It is *self-evident* that the simulation of an halting function is
    incorrect, unless simulated up to the end.

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

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

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

    HHH is unable to decide about finite recursions.

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

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

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

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

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

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

    On 7/17/2024 3:03 AM, Mikko wrote:
    On 2024-07-16 14:34:19 +0000, olcott said:

    On 7/16/2024 2:10 AM, Mikko wrote:
    On 2024-07-15 13:21:35 +0000, olcott said:

    On 7/15/2024 2:52 AM, Mikko wrote:
    On 2024-07-14 14:44:27 +0000, olcott said:

    On 7/14/2024 3:48 AM, Mikko wrote:
    On 2024-07-13 12:19:36 +0000, olcott said:

    On 7/13/2024 2:55 AM, Mikko wrote:
    On 2024-07-12 13:28:15 +0000, olcott said:

    On 7/12/2024 3:27 AM, Mikko wrote:
    On 2024-07-11 14:02:52 +0000, olcott said:

    On 7/11/2024 1:22 AM, Mikko wrote:
    On 2024-07-10 15:03:46 +0000, olcott said:

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

    void DDD()
    {
       HHH(DDD);
    }

    int main()
    {
       HHH(DDD);
    }

    We stipulate that the only measure of a correct emulation >>>>>>>>>>>>>>> is the semantics of the x86 programming language. By this >>>>>>>>>>>>>>> measure when 1 to ∞ steps of DDD are correctly emulated by >>>>>>>>>>>>>>> each pure function x86 emulator HHH (of the infinite set >>>>>>>>>>>>>>> of every HHH that can possibly exist) then DDD cannot >>>>>>>>>>>>>>> possibly reach past its own machine address of 0000216b >>>>>>>>>>>>>>> and halt.

    For every instruction that the C compiler generates the x86 language
    specifies an unambiguous meaning, leaving no room for "can". >>>>>>>>>>>>>>

    then DDD cannot possibly reach past its own machine
    address of 0000216b and halt.

    As I already said, there is not room for "can". That means there is
    no room for "cannot", either. The x86 semantics of the unshown code
    determines unambigously what happens.


    Of an infinite set behavior X exists for at least one element >>>>>>>>>>> or behavior X does not exist for at least one element.
    Of the infinite set of HHH/DDD pairs zero DDD elements halt. >>>>>>>>>>
    That is so far from the Common Language that I can't parse. >>>>>>>>>>

    *This proves that every rebuttal is wrong somewhere*
    No DDD instance of each HHH/DDD pair of the infinite set of
    every HHH/DDD pair ever reaches past its own machine address of >>>>>>>>> 0000216b and halts thus proving that every HHH is correct to >>>>>>>>> reject its input DDD as non-halting.

    Here you attempt to use the same name for a constant programs and univesally
    quantifed variable with a poorly specified range. That is a form of a well
    known mistake called the "fallacy of equivocation".

    I incorporated your suggestion in my paper.
    DDD is a fixed constant finite string that calls its
    HHH at the same fixed constant machine address.

    That does not make sense. Which HHH does that DDD call? Which HHH
    is at that fixed machine address?


    HHH₁ to HHH∞ forming an infinite set of HHH/DDD pairs

    HHH₁/DDD₁ to HHH∞/DDD∞ is another way to specify this
    infinite set of HHH/DDD pairs.

    You should not say "another way" before you have one way. What you
    presented earlier is not a way as it did not make sense.

    DDD itself is a single immutable finite string have the exactly
    same instructions at the exact same machine addresses.

    That string does not specify what the call to an address outside of the
    string does and whether it returns.

    It need not do that. It specifies the address of HHH and the empirical behavior of DDD correctly emulated by HHH shows this behavior.

    Also it is stipulated that HHH is an infinite set of x86 emulators
    that correctly emulate 1,2,3...∞ instructions of DDD.

    That stipulation contradicts the semantics of x86 and C languages which
    require that all data is finite.

    If HHH is an infinite set then so is the behaviour of DDD. Consequently,
    the question of whether DDD halts is ill-posed and instead one must ask
    what subset of DDD is the subset of DDD's that halt.

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

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

    That is ambigouls so agreement is incorrect.

    --
    Mikko

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

    On 7/17/2024 2:08 AM, Mikko wrote:
    On 2024-07-16 14:46:40 +0000, olcott said:

    On 7/16/2024 2:18 AM, Mikko wrote:
    On 2024-07-15 13:32:27 +0000, olcott said:

    On 7/15/2024 2:57 AM, Mikko wrote:
    On 2024-07-14 14:48:05 +0000, olcott said:

    On 7/14/2024 3:49 AM, Mikko wrote:
    On 2024-07-13 12:18:27 +0000, olcott said:

    When the source of your disagreement is your own ignorance
    then your disagreement has no actual basis.

    *You can comprehend this is a truism or fail to*
    *comprehend it disagreement is necessarily incorrect*
    Any input that must be aborted to prevent the non
    termination of HHH necessarily specifies non-halting
    behavior or it would never need to be aborted.

    Disagreeing with the above is analogous to disagreeing
    with arithmetic.

    A lame analogy. A better one is: 2 + 3 = 5 is a proven theorem just >>>>>> like the uncomputability of halting is.

    The uncomputability of halting is only proven when the problem
    is framed this way: HHH is required to report on the behavior
    of an input that was defined to do exactly the opposite of
    whatever DDD reports.

    No, it is proven about the halting problem as that problem is.

    Which is simply a logical impossibility

    Yes, a halting decider is a logical impossibility, as can be and has
    been proven.


    If it is a logical impossibility then it places no
    actual limit on computation otherwise we would have
    "the CAD problem" of the logical impossibility of making
    a CAD system that correctly draws a square circle.

    A logical impossibility does place a limit on computation.
    Otherwise it would be possible to build a CAD system that
    can correctly draw a square circle.

    --
    Mikko

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

    On 7/18/2024 2:55 AM, Mikko wrote:
    On 2024-07-17 13:14:43 +0000, olcott said:

    On 7/17/2024 2:08 AM, Mikko wrote:
    On 2024-07-16 14:46:40 +0000, olcott said:

    On 7/16/2024 2:18 AM, Mikko wrote:
    On 2024-07-15 13:32:27 +0000, olcott said:

    On 7/15/2024 2:57 AM, Mikko wrote:
    On 2024-07-14 14:48:05 +0000, olcott said:

    On 7/14/2024 3:49 AM, Mikko wrote:
    On 2024-07-13 12:18:27 +0000, olcott said:

    When the source of your disagreement is your own ignorance
    then your disagreement has no actual basis.

    *You can comprehend this is a truism or fail to*
    *comprehend it disagreement is necessarily incorrect*
    Any input that must be aborted to prevent the non
    termination of HHH necessarily specifies non-halting
    behavior or it would never need to be aborted.

    Disagreeing with the above is analogous to disagreeing
    with arithmetic.

    A lame analogy. A better one is: 2 + 3 = 5 is a proven theorem just >>>>>>>> like the uncomputability of halting is.

    The uncomputability of halting is only proven when the problem
    is framed this way: HHH is required to report on the behavior
    of an input that was defined to do exactly the opposite of
    whatever DDD reports.

    No, it is proven about the halting problem as that problem is.

    Which is simply a logical impossibility

    Yes, a halting decider is a logical impossibility, as can be and has
    been proven.

    If it is a logical impossibility then it places no
    actual limit on computation otherwise we would have
    "the CAD problem" of the logical impossibility of making
    a CAD system that correctly draws a square circle.

    A logical impossibility does place a limit on computation.
    Otherwise it would be possible to build a CAD system that
    can correctly draw a square circle.

    Of the set of possible things TM's can do them all.

    Depends on the meanings of "possible" and "thing". Of things other than computation no TM can do any. A Turing machine can determine whether
    a sentence of Presburger arithmetic is provable but no Turing machine
    can determine whether a sentence of Peano arithmetic is provable.

    One of the possible things is for a TM to to be a quadrillion
    times smarter than any human at anything requiring human intelligence.

    Depends on the meaning of "smart" and how it is quantified. Often the
    meaning of "smart" includes that a good solution is found in a short time.
    Such meaning of "smart" is not even applicable to Turing machines as
    there is no time in the theory of Turing machines. The nearest is the
    number of steps needed for some computation, which is sometimes called
    time, but there are no such steps in human thinking, so no comparison
    can be made.

    One thing isomorphic to the halting problem is the liar paradox.

    No, the paradox is not isomorphic to the problem. There are more
    details in the problem than in the paradox but isomorphism requires
    the same number of details.

    Not even God can correctly determine whether this sentence is
    true or false: "This sentence is not true".

    Why would God want to?

    --
    Mikko

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

    On 7/19/2024 2:30 AM, Mikko wrote:
    On 2024-07-18 13:36:53 +0000, olcott said:

    On 7/18/2024 2:55 AM, Mikko wrote:
    On 2024-07-17 13:14:43 +0000, olcott said:

    On 7/17/2024 2:08 AM, Mikko wrote:
    On 2024-07-16 14:46:40 +0000, olcott said:

    On 7/16/2024 2:18 AM, Mikko wrote:
    On 2024-07-15 13:32:27 +0000, olcott said:

    On 7/15/2024 2:57 AM, Mikko wrote:
    On 2024-07-14 14:48:05 +0000, olcott said:

    On 7/14/2024 3:49 AM, Mikko wrote:
    On 2024-07-13 12:18:27 +0000, olcott said:

    When the source of your disagreement is your own ignorance >>>>>>>>>>> then your disagreement has no actual basis.

    *You can comprehend this is a truism or fail to*
    *comprehend it disagreement is necessarily incorrect*
    Any input that must be aborted to prevent the non
    termination of HHH necessarily specifies non-halting
    behavior or it would never need to be aborted.

    Disagreeing with the above is analogous to disagreeing
    with arithmetic.

    A lame analogy. A better one is: 2 + 3 = 5 is a proven theorem just >>>>>>>>>> like the uncomputability of halting is.

    The uncomputability of halting is only proven when the problem >>>>>>>>> is framed this way: HHH is required to report on the behavior >>>>>>>>> of an input that was defined to do exactly the opposite of
    whatever DDD reports.

    No, it is proven about the halting problem as that problem is.

    Which is simply a logical impossibility

    Yes, a halting decider is a logical impossibility, as can be and has >>>>>> been proven.

    If it is a logical impossibility then it places no
    actual limit on computation otherwise we would have
    "the CAD problem" of the logical impossibility of making
    a CAD system that correctly draws a square circle.

    A logical impossibility does place a limit on computation.
    Otherwise it would be possible to build a CAD system that
    can correctly draw a square circle.

    Of the set of possible things TM's can do them all.

    Depends on the meanings of "possible" and "thing". Of things other than
    computation no TM can do any. A Turing machine can determine whether
    a sentence of Presburger arithmetic is provable but no Turing machine
    can determine whether a sentence of Peano arithmetic is provable.

    Some undecidable expressions are only undecidable because
    they are self contradictory. In other words they are undecidable
    because there is something wrong with them.

    Being self-contradictory is a semantic property. Being uncdecidable is independent of any semantics. An arithmetic sentence is always about
    numbers, not about sentences. A proof is about sentences, not about
    numbers.

    The Liar Paradox: "This sentence is not true"

    cannot be said in the language of Peano arithmetic.

    --
    Mikko

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

    On 7/20/2024 3:42 AM, Mikko wrote:
    On 2024-07-19 13:48:49 +0000, olcott said:


    Some undecidable expressions are only undecidable because
    they are self contradictory. In other words they are undecidable
    because there is something wrong with them.

    Being self-contradictory is a semantic property. Being uncdecidable is
    independent of any semantics.

    Not it is not. When an expression is neither true nor false
    that makes it neither provable nor refutable.

    There is no aithmetic sentence that is neither true or false. If the sentnece contains both existentia and universal quantifiers it may be hard to find out whether it is true or false but there is no sentence that is neither.

    As Richard
    Montague so aptly showed Semantics can be specified syntactically.

    An arithmetic sentence is always about
    numbers, not about sentences.

    So when Gödel tried to show it could be about provability
    he was wrong before he even started?

    Gödel did not try to show that an arithmetic sentence is about provability.
    He constructed a sentence about numbers that is either true and provable
    or false and unprovable in the theory that is an extension of Peano arithmetics.

    A proof is about sentences, not about
    numbers.

    The Liar Paradox: "This sentence is not true"

    cannot be said in the language of Peano arithmetic.

    Since Tarski anchored his whole undefinability theorem in a self-contradictory sentence he only really showed that sentences that
    are neither true nor false cannot be proven true.

    By Gödel's completeness theorem every consistent incomplete first order
    theory has a model where at least one unprovable sentence is true.

    https://liarparadox.org/Tarski_247_248.pdf https://liarparadox.org/Tarski_275_276.pdf

    --
    Mikko

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