• That P(P) of main() halts does not contradict H(P,P)==0 [ Refuting

    From olcott@21:1/5 to Ben Bacarisse on Tue Sep 7 10:51:14 2021
    XPost: comp.theory, sci.logic, sci.math

    On 9/7/2021 10:31 AM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/7/2021 5:54 AM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/6/2021 8:57 PM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/6/2021 8:09 PM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/6/2021 7:40 PM, Ben Bacarisse wrote:

    TM at H^.qx is an "exact
    copy" of H. How can two TMs that are exact copies of each other make >>>>>>>>> different transitions given the same input?

    That H1 calls H means that H1 can see what H does.
    The H is called by H1 means that H does not even know that H1 exists. >>>>>>>
    TMs don't call each other.

    That H simulates ⟨Ĥ⟩ ⟨Ĥ⟩ creates a master slave relationship >>>>>> between H and Ĥ.

    The master can see exactly what the slave is doing.

    The slave it totally unaware of the existence of the master.

    The master can change its behavior on the basis of what the slave does. >>>>>>
    The slave cannot change its behavior on the basis of what the master does.

    Thus the master slave relationship can and does cause an identical >>>>>> function with the same input to have different behavior even if no one >>>>>> ever noticed this before.

    Function? Have you been only pretending to be talking about Turing
    machines the whole time? If you were not being deceitful, your H (the >>>>> TM) is wrong because

    H.q0 <H^><H^> |- H.qn

    No matter how much you ignore the fact that the master slave
    relationship where H is the master of Ĥ causes different behavior:

    H simulates ⟨Ĥ⟩ ⟨Ĥ⟩
    Ĥ.qx simulates ⟨Ĥ⟩ ⟨Ĥ⟩

    for two identical functions with the same input, this master slave
    relationship still causes differing behavior.

    Functions? You used the notation of Turing machines. Were you being
    deceptive? I am perfectly prepared to accept that you are cheating in
    some way with your hidden C functions, but you can't cheat with TMs.
    What you said using the notation of TMs was wrong (about TMs) because
    identical state transition functions produce the same transitions when
    given identical input. So your recent admission that your H should
    accept the string <H^><H^> means that

    H^.qx <H^><H^> |- H^.qn

    shows your H is wrong -- on your own terms. The facts of the matter
    come from you.

    I can stop posting if you admit you have been disingenuously using the
    notation of TMs to talk about your dodgy C code. If you want to keep
    talking about TMs you need to admit you are wrong. Identical state
    transition functions with identical inputs always generate the same
    sequence of machine configurations.

    So in other words you have another shortcoming in your technical
    knowledge this time it is directly in the field of computer science on
    not in related fields such as software engineering.

    You seem to be unaware that the TM description being simulated by a
    UTM has no access to see the internal steps of its simulator and yet
    the UTM can directly see all of the steps of the TM description that
    it is simulating.

    So you are talking about TMs after all? Please use the correct
    language. TMs don't have "functions" and don't make "calls".

    Identical state transition functions with identical inputs always
    generate the same sequence of machine configurations so, the often
    quoted property of your H^:

    H^.qx <H^><H^> |- H^.qn

    shows that your H is wrong.


    int main()
    {
    if (H1((u32)P, (u32)P) != H((u32)P, (u32)P))
    OutputString("Pathological self-reference error!");
    }

    if (H applied to ⟨Ĥ⟩ ⟨Ĥ⟩ != Ĥ applied to ⟨Ĥ⟩)
    OutputString("Pathological self-reference error!");


    How are you going to weasel out of that one to protect your ego?

    I'm not sure what you think I'd want to weasel out of. I'd like you to address your primary mistake. You tell us that H should accept <H^><H^>
    and you tell us that the TM at H^.qx is an "exact copy" of H and you
    tell us that H^.qx <H^><H^> |- H^.qn. You tell us everything we need to
    know that you are wrong. The only thing missing is an apology from you
    for ignoring these helpful explanations for so long.



    --
    Copyright 2021 Pete Olcott

    "Great spirits have always encountered violent opposition from mediocre
    minds." Einstein

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From olcott@21:1/5 to Ben Bacarisse on Tue Sep 7 22:07:05 2021
    XPost: comp.theory, sci.logic, sci.math

    On 9/7/2021 9:55 PM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/7/2021 7:42 PM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/7/2021 10:31 AM, Ben Bacarisse wrote:

    ... You tell us that H should accept <H^><H^>
    and you tell us that the TM at H^.qx is an "exact copy" of H and you >>>>> tell us that H^.qx <H^><H^> |- H^.qn. You tell us everything we need to >>>>> know that you are wrong. The only thing missing is an apology from you >>>>> for ignoring these helpful explanations for so long.

    Is there anything here you don't understand? It's not hard. Identical
    state transition functions always generate the same computational steps
    when presented with the same input.


    // Simplified Linz Ĥ (Linz:1990:319)
    // Strachey(1965) CPL translated to C
    void P(u32 x)
    {
    if (H(x, x))
    HERE: goto HERE;
    }

    When the exact analogy to H ⟨Ĥ⟩ ⟨Ĥ⟩
    int main() { H1(P,P); } is examined

    If your analogy does not match the facts I stated about TMs then it's
    wrong.

    Identical code with identical inputs must derive identical results.

    Does it conform that H <H^><H^> and H^.qx <H^><H^> both
    transition to the corresponding rejecting states, H.qn and H^.qn? If
    so, a simple "thanks, Ben, I was wrong" would do. If not, throw the
    analogy away because it's misleading you.


    // Simplified Linz Ĥ (Linz:1990:319)
    // Strachey(1965) CPL translated to C
    void P(u32 x)
    {
    if (H(x, x))
    HERE: goto HERE;
    }

    int main()
    {
    Output("Input_Halts = ", H1((u32)P, (u32)P));
    }

    As I just explained to Richard my x86 halt decider / emulators behave differently when their input refer to themselves than when their input
    does not refer to themselves.

    This is why H1(P,P) is a halt decider for its input and
    H ⟨Ĥ⟩ ⟨Ĥ⟩ is a halt decider for its input.

    // This also explains how this is a
    // pathological self-reference decider
    // that refutes Rice's Theorem
    //
    int main()
    {
    if (H1((u32)P, (u32)P) != H((u32)P, (u32)P))
    OutputString("Pathological self-reference error!");
    }


    --
    Copyright 2021 Pete Olcott

    "Great spirits have always encountered violent opposition from mediocre
    minds." Einstein

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From olcott@21:1/5 to Ben Bacarisse on Wed Sep 8 18:10:43 2021
    XPost: comp.theory, sci.logic, sci.math

    On 9/8/2021 5:52 PM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/8/2021 3:42 PM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/8/2021 9:58 AM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/7/2021 9:55 PM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/7/2021 7:42 PM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/7/2021 10:31 AM, Ben Bacarisse wrote:

    ... You tell us that H should accept <H^><H^>
    and you tell us that the TM at H^.qx is an "exact copy" of H and you
    tell us that H^.qx <H^><H^> |- H^.qn. You tell us everything we need to
    know that you are wrong. The only thing missing is an apology from you
    for ignoring these helpful explanations for so long.

    Is there anything here you don't understand? It's not hard. Identical
    state transition functions always generate the same computational steps
    when presented with the same input.


    // Simplified Linz Ĥ (Linz:1990:319)
    // Strachey(1965) CPL translated to C
    void P(u32 x)
    {
    if (H(x, x))
    HERE: goto HERE;
    }

    When the exact analogy to H ⟨Ĥ⟩ ⟨Ĥ⟩
    int main() { H1(P,P); } is examined
    If your analogy does not match the facts I stated about TMs then it's >>>>>>> wrong.

    Identical code with identical inputs must derive identical results. >>>>>
    No. That is obviously not true, except for some very rare languages >>>>> that you probably don't know.

    At this point I would estimate that your technical competence is much
    lower that I had assumed. I would ask you to provide a concrete
    example and would estimate that you would dodge thus sufficiently
    proving that your technical competence is very likely much lower that
    I had assumed.

    As you know, whether I am right or not has nothing to do with either my
    competence or your opinion of it. TMs are not "code". Code can do IO,
    use static objects, examine its execution environment and so on. A lot
    of x86 code even has access to hardware-generated random numbers. You
    know this.

    If you want to talk code, stop using the notation for TM configurations. >>> If you want to talk TMs, you will have to face the fact that you are
    wrong.

    So like I said you simply dodged supporting your obviously incorrect
    rebuttal that identical code (sequences of state transitions) cannot
    derive different results from the same input.

    Code is not a "sequence of state transitions", and TMs don't "derive
    results" (they accept, reject or fail to halt), but I don't want to get sucked into your bad wording.

    The state transition function of H and that at H^.qx are the same
    because one TM is an exact copy of the other (your words). The "inputs" (what you should call the tape) and the position of the tape head are
    also the same. The computations must evolve along exactly the same
    lines.


    This would seem intuitive yet false.

    If we look at it at the very high level of abstraction we can comprehend
    that simulating halt decider H need not abort the simulation of its
    input because the simulating halt decider at Ĥ.qx does abort the
    simulation of its input.

    // Simplified Linz Ĥ (Linz:1990:319)
    // Strachey(1965) CPL translated to C
    void P(u32 x)
    {
    if (H(x, x))
    HERE: goto HERE;
    }

    int main()
    {
    Output("Input_Halts = ", H1((u32)P, (u32)P));
    }

    People that actually understand the C/x86 language will see that
    simulating halt decider H1(P,P) need not abort the simulation of its
    input because the execution trace of its input shows that its simulation
    of P halts.

    When we have two different halt deciders that must coordinate with each
    other it was initially difficult to see the exact execution trace that
    H1 and H used as their basis. I created a debug function that output
    this full trace immediately before H1/H terminates.

    H sees that its input never halts:
    Output_Decoded_Instructions() [0025c7fd] size(336) capacity(240000) [00001026][0025c7e9][0025c7ed] 55 push ebp [00001027][0025c7e9][0025c7ed] 8bec mov ebp,esp // P begins [00001029][0025c7e9][0025c7ed] 8b4508 mov eax,[ebp+08] [0000102c][0025c7e5][00001026] 50 push eax [0000102d][0025c7e5][00001026] 8b4d08 mov ecx,[ebp+08] [00001030][0025c7e1][00001026] 51 push ecx [00001031][0025c7dd][00001036] e8d0fdffff call 00000e06 // call H(P,P) [00001026][002a7211][002a7215] 55 push ebp // P begins [00001027][002a7211][002a7215] 8bec mov ebp,esp [00001029][002a7211][002a7215] 8b4508 mov eax,[ebp+08] [0000102c][002a720d][00001026] 50 push eax [0000102d][002a720d][00001026] 8b4d08 mov ecx,[ebp+08] [00001030][002a7209][00001026] 51 push ecx [00001031][002a7205][00001036] e8d0fdffff call 00000e06 // call H(P,P) END---Output_Decoded_Instructions(0025c7fd)


    H1 simply sees that its simulated input halts:
    Output_Decoded_Instructions() [00211dd5] size(288) capacity(240000) [00001026][00211dc1][00211dc5] 55 push ebp // P begins [00001027][00211dc1][00211dc5] 8bec mov ebp,esp [00001029][00211dc1][00211dc5] 8b4508 mov eax,[ebp+08] [0000102c][00211dbd][00001026] 50 push eax [0000102d][00211dbd][00001026] 8b4d08 mov ecx,[ebp+08] [00001030][00211db9][00001026] 51 push ecx [00001031][00211db5][00001036] e8d0fdffff call 00000e06 // call H(P,P) [00001036][00211dc1][00211dc5] 83c408 add esp,+08 // return to P [00001039][00211dc1][00211dc5] 85c0 test eax,eax [0000103b][00211dc1][00211dc5] 7402 jz 0000103f [0000103f][00211dc5][00000cde] 5d pop ebp [00001040][00211dc9][00001026] c3 ret // P halts END---Output_Decoded_Instructions(00211dd5)


    Writing it out formally is unlikely to help because the argument needs a mapping between the states of H and H^ and I suspect that explaining
    that would either take months, or you'd declare it "extraneous" and
    refuse to even consider it. There's another way, but that involves a
    slight variation in the construction and you don't like such changes.

    There comes a point where no more clarity is available to you. If you
    don't know by now that the same transition function, operating on the
    same configuration can't result in transitions to different states, I
    don't think there is any hope that you ever will. I think you are
    doomed to be wrong and not know it, but if you think some more
    explanation might help, ask away.



    --
    Copyright 2021 Pete Olcott

    "Great spirits have always encountered violent opposition from mediocre
    minds." Einstein

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From olcott@21:1/5 to Ben Bacarisse on Wed Sep 8 19:37:08 2021
    XPost: comp.theory, sci.logic, sci.math

    On 9/8/2021 7:21 PM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/8/2021 5:52 PM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/8/2021 3:42 PM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/8/2021 9:58 AM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/7/2021 9:55 PM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/7/2021 7:42 PM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/7/2021 10:31 AM, Ben Bacarisse wrote:

    ... You tell us that H should accept <H^><H^>
    and you tell us that the TM at H^.qx is an "exact copy" of H and you
    tell us that H^.qx <H^><H^> |- H^.qn. You tell us everything we need to
    know that you are wrong. The only thing missing is an apology from you
    for ignoring these helpful explanations for so long.

    Is there anything here you don't understand? It's not hard. Identical
    state transition functions always generate the same computational steps
    when presented with the same input.


    // Simplified Linz Ĥ (Linz:1990:319)
    // Strachey(1965) CPL translated to C
    void P(u32 x)
    {
    if (H(x, x))
    HERE: goto HERE;
    }

    When the exact analogy to H ⟨Ĥ⟩ ⟨Ĥ⟩
    int main() { H1(P,P); } is examined
    If your analogy does not match the facts I stated about TMs then it's >>>>>>>>> wrong.

    Identical code with identical inputs must derive identical results. >>>>>>>
    No. That is obviously not true, except for some very rare languages >>>>>>> that you probably don't know.

    At this point I would estimate that your technical competence is much >>>>>> lower that I had assumed. I would ask you to provide a concrete
    example and would estimate that you would dodge thus sufficiently
    proving that your technical competence is very likely much lower that >>>>>> I had assumed.

    As you know, whether I am right or not has nothing to do with either my >>>>> competence or your opinion of it. TMs are not "code". Code can do IO, >>>>> use static objects, examine its execution environment and so on. A lot >>>>> of x86 code even has access to hardware-generated random numbers. You >>>>> know this.

    If you want to talk code, stop using the notation for TM configurations. >>>>> If you want to talk TMs, you will have to face the fact that you are >>>>> wrong.

    So like I said you simply dodged supporting your obviously incorrect
    rebuttal that identical code (sequences of state transitions) cannot
    derive different results from the same input.

    Code is not a "sequence of state transitions", and TMs don't "derive
    results" (they accept, reject or fail to halt), but I don't want to get
    sucked into your bad wording.

    The state transition function of H and that at H^.qx are the same
    because one TM is an exact copy of the other (your words). The "inputs" >>> (what you should call the tape) and the position of the tape head are
    also the same. The computations must evolve along exactly the same
    lines.

    This would seem intuitive yet false.

    Its a fact.

    If we look at it at the very high level of abstraction we can
    comprehend that simulating halt decider H need not abort the
    simulation of its input because the simulating halt decider at Ĥ.qx
    does abort the simulation of its input.

    The identical "machines" at H.q0 and H^.qx must perform exactly the same steps when presented with the same tape contents. H must transition to
    qn because H^.qx <H^><H^> does.


    When one machine is called with an input that refers to its own machine description and another machine is called with an input that does not
    refer to its own machine description then the two computations are not
    the same even if their machine descriptions may be otherwise identical.

    I have empirical proof of this otherwise I may have not noticed this
    myself. The execution trace that H derives of its input ⟨Ĥ⟩ ⟨Ĥ⟩ shows that Ĥ.qx transitions to Ĥ.qn

    The execution trace that Ĥ.qx derives of its input ⟨Ĥ⟩ ⟨Ĥ⟩ shows that
    its input never halts.

    As Richard aptly pointed out this shows that the system is inconsistent.
    This particular inconsistency becomes a pathological self-reference
    (Olcott 2004) decider refuting Rice's Theorem.

    Writing it out formally is unlikely to help because the argument needs a >>> mapping between the states of H and H^ and I suspect that explaining
    that would either take months, or you'd declare it "extraneous" and
    refuse to even consider it. There's another way, but that involves a
    slight variation in the construction and you don't like such changes.

    There comes a point where no more clarity is available to you. If you
    don't know by now that the same transition function, operating on the
    same configuration can't result in transitions to different states, I
    don't think there is any hope that you ever will. I think you are
    doomed to be wrong and not know it, but if you think some more
    explanation might help, ask away.




    --
    Copyright 2021 Pete Olcott

    "Great spirits have always encountered violent opposition from mediocre
    minds." Einstein

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From olcott@21:1/5 to Richard Damon on Wed Sep 8 22:39:36 2021
    XPost: comp.theory, sci.logic, sci.math

    On 9/8/2021 10:29 PM, Richard Damon wrote:
    On 9/8/21 10:14 PM, olcott wrote:
    On 9/8/2021 8:54 PM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/8/2021 7:21 PM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/8/2021 5:52 PM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/8/2021 3:42 PM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/8/2021 9:58 AM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/7/2021 9:55 PM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/7/2021 7:42 PM, Ben Bacarisse wrote:
    olcott <NoOne@NoWhere.com> writes:

    On 9/7/2021 10:31 AM, Ben Bacarisse wrote:

    ... You tell us that H should accept <H^><H^> >>>>>>>>>>>>>>>>> and you tell us that the TM at H^.qx is an "exact copy" >>>>>>>>>>>>>>>>> of H and you
    tell us that H^.qx <H^><H^> |- H^.qn.  You tell us >>>>>>>>>>>>>>>>> everything we need to
    know that you are wrong.  The only thing missing is an >>>>>>>>>>>>>>>>> apology from you
    for ignoring these helpful explanations for so long. >>>>>>>>>>>>>>>
    Is there anything here you don't understand?  It's not >>>>>>>>>>>>>>> hard.  Identical
    state transition functions always generate the same >>>>>>>>>>>>>>> computational steps
    when presented with the same input.


    // Simplified Linz Ĥ (Linz:1990:319)
    // Strachey(1965) CPL translated to C
    void P(u32 x)
    {
            if (H(x, x))
              HERE: goto HERE;
    }

    When the exact analogy to H ⟨Ĥ⟩ ⟨Ĥ⟩
    int main() { H1(P,P); } is examined
    If your analogy does not match the facts I stated about TMs >>>>>>>>>>>>> then it's
    wrong.

    Identical code with identical inputs must derive identical >>>>>>>>>>>> results.

    No.  That is obviously not true, except for some very rare >>>>>>>>>>> languages
    that you probably don't know.

    At this point I would estimate that your technical competence >>>>>>>>>> is much
    lower that I had assumed. I would ask you to provide a concrete >>>>>>>>>> example and would estimate that you would dodge thus sufficiently >>>>>>>>>> proving that your technical competence is very likely much >>>>>>>>>> lower that
    I had assumed.

    As you know, whether I am right or not has nothing to do with >>>>>>>>> either my
    competence or your opinion of it.  TMs are not "code".  Code can >>>>>>>>> do IO,
    use static objects, examine its execution environment and so >>>>>>>>> on.  A lot
    of x86 code even has access to hardware-generated random
    numbers.  You
    know this.

    If you want to talk code, stop using the notation for TM
    configurations.
    If you want to talk TMs, you will have to face the fact that you >>>>>>>>> are
    wrong.

    So like I said you simply dodged supporting your obviously incorrect >>>>>>>> rebuttal that identical code (sequences of state transitions) cannot >>>>>>>> derive different results from the same input.

    Code is not a "sequence of state transitions", and TMs don't "derive >>>>>>> results" (they accept, reject or fail to halt), but I don't want >>>>>>> to get
    sucked into your bad wording.

    The state transition function of H and that at H^.qx are the same >>>>>>> because one TM is an exact copy of the other (your words).  The >>>>>>> "inputs"
    (what you should call the tape) and the position of the tape head are >>>>>>> also the same.  The computations must evolve along exactly the same >>>>>>> lines.

    This would seem intuitive yet false.

    Its a fact.

    If we look at it at the very high level of abstraction we can
    comprehend that simulating halt decider H need not abort the
    simulation of its input because the simulating halt decider at Ĥ.qx >>>>>> does abort the simulation of its input.

    The identical "machines" at H.q0 and H^.qx must perform exactly the
    same
    steps when presented with the same tape contents.  H must transition to >>>>> qn because H^.qx <H^><H^> does.

    When one machine is called with an input that refers to its own
    machine description and another machine is called with an input that
    does not refer to its own machine description then the two
    computations are not the same even if their machine descriptions may
    be otherwise identical.

    You are confused.  Of course the computations you describe are
    different.  H.q0 <H^><H^> and H^.q0 <H^> are indeed not the same but
    H.q0 <H^><H^> and H^.qx <H^><H^> are (with a minor difference you refuse >>> to accept anyway).


    You can't understand that when H simulates ⟨Ĥ⟩ ⟨Ĥ⟩ the execution trace
    of this simulation shows that Ĥ.qx transitions to Ĥ.qn on input ⟨Ĥ⟩ ⟨Ĥ⟩
    ???

    Right, and H^ going to H^.qn means that H^ halted, as that is a halting
    state of H^.

    THe fact that to H, that state indicated that it thinks its input is non-halting doesn't change the meaning of the state to H^.


    No nitwit H ⟨Ĥ⟩ ⟨Ĥ⟩ transitions to H.qy as I have told you many times.
    No nitwit H ⟨Ĥ⟩ ⟨Ĥ⟩ transitions to H.qy as I have told you many times.
    No nitwit H ⟨Ĥ⟩ ⟨Ĥ⟩ transitions to H.qy as I have told you many times.
    No nitwit H ⟨Ĥ⟩ ⟨Ĥ⟩ transitions to H.qy as I have told you many times.

    Your insight that Ĥ.qx ⟨Ĥ⟩ ⟨Ĥ⟩ transitions to Ĥ.qn seems to indicate an
    inconsistent system was helpful, yet untrue.

    It is definitely an inconsistency, yet not because the system is
    inconsistent.

    int main()
    {
    if (H1((u32)P, (u32)P) != H((u32)P, (u32)P))
    OutputString("Pathological self-reference error!");
    }

    The above decidability decider correctly rejects the input.


    Is THAT your confusion,


    In simpler terms you can't understand that a UTM can examine the
    execution trace of its simulated TM?

    Yes, a UTM can examine it trace, but a real UTM won't stop until the
    machine it is simulating does, no matter how sure it is that it won't.

    The problem is when H uses this analysis, and uses the FALSE assumption
    that other copies of H will act only as UTM, and not switch out of that
    mode leter and also abort their simulation, that cause H to get the
    wrong answer.

    H (like you) used UNSOUND Logic, and got the wrong answer.



    --
    Copyright 2021 Pete Olcott

    "Great spirits have always encountered violent opposition from mediocre
    minds." Einstein

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