Liste des Groupes | Revenir à cl c |
Op 24.mei.2024 om 18:57 schreef olcott:This has the problem that it is not clear what the corrct simulationOn 5/24/2024 10:01 AM, Fred. Zwarts wrote:Maybe if you simplify your question, the answer is easier to find:Op 23.mei.2024 om 18:52 schreef olcott:We are ONLY asking about whether D correctly simulated by pure function H can possibly reach its own final state at line 06 and halt.typedef int (*ptr)(); // ptr is pointer to int function in CThe case can be simplified even more (D is not needed):
00 int H(ptr p, ptr i);
01 int D(ptr p)
02 {
03 int Halt_Status = H(p, p);
04 if (Halt_Status)
05 HERE: goto HERE;
06 return Halt_Status;
07 }
08
09 int main()
10 {
11 H(D,D);
12 return 0;
13 }
The above template refers to an infinite set of H/D pairs where D is
correctly simulated by pure function H. This was done because many
reviewers used the shell game ploy to endlessly switch which H/D was
being referred to.
*Correct Simulation Defined*
This is provided because every reviewer had a different notion of
correct simulation that diverges from this notion.
In the above case a simulator is an x86 emulator that correctly emulates
at least one of the x86 instructions of D in the order specified by the
x86 instructions of D.
This may include correctly emulating the x86 instructions of H in the
order specified by the x86 instructions of H thus calling H(D,D) in
recursive simulation.
*Execution Trace*
Line 11: main() invokes H(D,D); H(D,D) simulates lines 01, 02, and 03 of
D. This invokes H(D,D) again to repeat the process in endless recursive
simulation.
Because H is a pure function we know that H halts.
https://en.wikipedia.org/wiki/Pure_function#
Every H of the above H/D pairs returns the meaningless value of 56.
The case can be simplified by eliminating the complexity of the template D:
typedef int (*ptr)(); // ptr is pointer to int function in C
00 int H(ptr p, ptr i);
01 int main()
02 {
03 H(H,H);
04 return 0;
05 }
Of the infinite set of H that simulate at least one step of its input, none of them, when simulated by H, halts, because none of them possibly reaches its final state.
So, does H correctly recognize non-halting behaviour in H?
D is an unneeded complexity, because the only property of D that is needed is that it calls H, so why not using H as input directly?
Les messages affichés proviennent d'usenet.