I rather doubt that. More likely you're confused about what code you're
talking about? Or /they/ are? If they are, the way out is to be
clearer about what you mean [some ideas below]
Hmm, ok I've gone back to the start of this thread, and sure enough
there's code there, and the trace in question. Here it is restored:
// Defined at the bottom of page 319 of Linz
void Ĥ(u32 P)
{
u32 Input_Halts = H(P, P);
if (!Input_Halts)
HALT
else
HERE: goto HERE;
}
int main()
{
u32 P = (u32)Ĥ;
H(P, P);
HALT;
}
Here H^ calls a function H, which isn't given in the trace. If you want
people to know that H is just a pure UTM, then given the history of all
your Hs, H_Hats, and renames etc. it would be sensible for you to choose
a completely new name like UTM().
Alternatively, if you really want to use H in this thread for a pure
UTM, then you should have GIANT WARNINGS all over the place.
But I don't think the H above is a UTM, because you refer in the same
post to "the halt decider detecting xxx" and in Linz the halt decide is
H. So a perfectly reasonable interpretation here is that this H is NOT
a UTM, and so is not the same as the code I previously commented on.
I also think there's a possibility that you really did intend it to be
just a UTM, but if so you've gone about it in an apalling way (not
intentionally). You have all the talk about halt deciders (which might
just refer to your OS wrapper code?) and Linz and H (the Linz decider)
when you could just have called it UTM. You also could have given a big
CAPS WARNING to make sure that people understood what was being
discussed, given the considerable potential for confusion.
If that is what you intended, I'd have to say I don't feel too sorry for
you, because you've chopped and changed your notations so many times,
and then introduced your overseeing "wrapper" halt decider to confuse
things. People are fatigued by all these changes, and there's often
little consistency across different threads etc...
BTW - I've had an idea for why you made your Halts() "global"! You
realised that it was really quite tricky to get your ABNHBD() to see
what was going on within your /nested/ levels of execution, and rather
than make it all work as it should you just thought you'd make the new
ABNHBD/Halts global, and change your OS interface so that it sees /all/
the emulation levels at once? Just a guess- doesn't really matter. If
that's right, you didn't really need to make it global to achieve that,
although you almost certainly would need to change your OS interface
calls to enable it.
>
> I am breaking it down into simpler steps stating here:
> Validating the halt deciding criteria with a totally concrete example
> --- Step(1)
>
>> I'm not being funny here, just literal, to help you see things from
>> others' perspectives. I could ask how you make a jump from repeating
>> twice to infinite recursion, but the point is /however/ you do it you
>
> By seeing the infinite recursion in the source code and by seeing the
> infinite recursion in the object code.
I don't believe anyone is interpreting your H source code in this thread
as pure UTM source code. I'm not even sure whether /you/ mean it to be
such?
IF YOU DO mean it to be a pure UTM, then the code would be non-halting
as previously agreed, and everybody else would also agree, if they
understood that is what you were saying.
If your H is a proper halt decider with recursion detection logic (which
is how I have interpretted things) then you really /cannot/ see the
infinite recursion in the object code. (Perhaps you think you can?)
Um, ok, now we're back to a recurring problem - I asked you whether you
believe that your INFINITE_RECURSION_TEST in your decider is only
detecting /actual/ infinite recursion in its inputs, and you STILL
haven't properly answered that yet. (You said, look in the new thread,
but there's no explanation there, so far at least.)
You did provide something only by implication in another post which
talked about 3+2=5 : the inference I got from that example is that you
DO believe that your test (checking for calls to the same address with
no intervening conditional branches) is "sound", but why you don't JUST
SAY THAT, and EXPLAIN WHY YOU BELIEVE IT, (or even /prove/ that it is
sound!!) is beyond me. I've been asking about this for weeks now, on
and off.
>
>> are not "just seeing it in the trace", right? So there is some
>> reasoning on your part which you are not sharing. Some "proof" even?
>> (Maybe you feel you /are/ sharing it, but I've not seen anything, and
>> you pointedly refuse to expand on this when I ask about it.)
>
> The exact same thing that you said is "baby stuff" So obvious that
> anyone knows it is true, they flat out deny as true.
>
> I am breaking it down into simpler steps stating here:
> Validating the halt deciding criteria with a totally concrete example
> --- Step(1)
>
If you really do mean your H in this thread to be specifically a pure
UTM, then it is probably best to abandon this thread and start again,
because I don't think it has been interpreted that way throughout the
thread. [And I wouldn't put any blame on this for readers of the thread.]
>> So to me it seems quite reasonable for someone else to deny that there
>> is infinite recursion based just on the basis of your trace - because
>> the trace really /doesn't/ show or even "imply" that there is infinite
>> recursion.
>
> This one leave zero doubt.
> Validating the halt deciding criteria with a totally concrete example
> --- Step(1)
>
> I still need to add a few more steps to prove my point, yet I must do
> them in micro increments because by reviewers (besides you) have less
> than zero interest in understanding me and focus all their attention on
> denigration.
>
The main thing I think is to be clear about what you're doing at each
step. I'd use UTM() [and doubly explain what that means] if you mean a
routine to be exactly a UTM with no added logic, rather than H.
(Probably it's too late for that.)
Mike.