Sujet : Re: Incorrect requirements --- Computing the mapping from the input to HHH(DD)
De : news.dead.person.stones (at) *nospam* darjeeling.plus.com (Mike Terry)
Groupes : comp.theoryDate : 10. May 2025, 01:23:26
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vvm69v$34ivd$1@dont-email.me>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0 SeaMonkey/2.53.18.2
On 09/05/2025 03:23, Keith Thompson wrote:
Richard Damon <richard@damon-family.org> writes:
On 5/8/25 7:53 PM, olcott wrote:
[...]
void DDD()
{
HHH(DDD);
return;
}
We don't need to look at any of my code for me
to totally prove my point. For example when
the above DDD is correctly simulated by HHH
this simulated DDD cannot possibly reach its own
"return" instruction.
>
And thus not correctly simulatd.
>
Sorry, there is no "OS Exemption" to correct simulaiton;.
Perhaps I've missed something. I don't see anything in the above that
implies that HHH does not correctly simulate DDD. Richard, you've read
far more of olcott's posts than I have, so perhaps you can clarify.
If we assume that HHH correctly simulates DDD, then the above code is
equivalent to:
void DDD()
{
DDD();
return;
}
which is a trivial case of infinite recursion. As far as I can tell,
assuming that DDD() is actually called at some point, neither the
outer execution of DDD nor the nested (simulated) execution of DDD
can reach the return statement. Infinite recursion might either
cause a stack overflow and a probable program crash, or an unending
loop if the compiler implements tail call optimization.
I see no contradiction, just an uninteresting case of infinite
recursion, something that's well understood by anyone with a
reasonable level of programming experience. (And it has nothing to
do with the halting problem as far as I can tell, though of course
olcott has discussed the halting problem elsewhere.)
Richard, what am I missing?
Depends on what you've picked up on.
Do you get that HHH's simulation is a /partial/ simulation? HHH is free to simulate a few x86 instructions of DDD, and then simply abandon the simulation and return. Since such a simulation is obviously NOT equivalent to a direct call to DDD, and above you argue that it is, I'd say you've missed that.
The other thing to be aware of is that use of terminology "simulation" varies considerably between posters! This in turn affects what different posters consider a "correct" simulation.
Full vs Partial:
(Posters differ on which type is intended if not explicitly qualified full/partial)
a) Full: the simulation continues until the target computation halts (returns).
This is logically like a direct call, because control cannot break out of
the simulation until the target halts. (Same as a direct call)
b) Partial: the simulator can choose to abandon the simulation at any point.
This is logically distinct from a direct call, because control to exit
remains firmly with the simulator.
Scope includes a halt decision? :
c) No: A "correct" simulation means the correct x86 instruction simulations, in
the correct sequence, correctly updating the x86 VM state (memory/regs)
as each instruction is simulated. [Also for someone in camp (a), a
simulation abandoned simulation is not correct]
d) Yes: As (c), but the simulation is required to decide halts/nothalts as part of
the simulation. For a (c) poster, the simulator simulates instructions,
and the Halt Decider logic decides halt/nothalt.
PO is a (b)(c) guy. Since his HHH (more or less) simulates individual instructions correctly, PO claims HHH "correctly" simulates DDD. Others who are in (a) or (d) camps would say that HHH does not correctly simulate DDD, because either HHH performs a /partial/ simulation [for them an error in its own right] or because HHH decides nothalt when in fact PO's DDD halts.
Terminology usage is not a right/wrong issue, but the different possibilities maximise misunderstandings if not resolved. E.g. as I said PO's simulations are nearly always taken to be partial. Richard D. knows that, but as he is in (b) camp he points out that PO is lying every time he says "HHH correctly simulates DDD". PO then says RD is playing head games and challenges RD to point out an error, and so it goes on for hundreds of posts. To be fair, PO should be well aware that RD is in camp (a), but does nothing to resolve the terminology issue, so both posters get what they deserve!
FTR I am in the (b)(c) camp... I could explain why I think that's more logical, but that's going OT I think.
Other posters have suggested that what you're missing is some variation of "once you answer PO's current question (about whether the simulation by HHH progresses as far as DDD's return) PO will go on to do something else wrong". Well, of course he will, but that's hardly something you're missing if he's not done it yet! :) I'd also say it's no reason not to answer PO's question honestly, acknowledging that he is talking about /partial/ simulations... The time to challenge future mistakes he will go on to make, is when he makes them.
Mike.