Discussion:
Can you see that D correctly simulated by H remains stuck in recursive simulation?
(too old to reply)
olcott
2024-05-23 16:52:21 UTC
Permalink
typedef int (*ptr)(); // ptr is pointer to int function in C
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.
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Marcel Mueller
2024-05-23 17:09:35 UTC
Permalink
typedef int (*ptr)();  // ptr is pointer to int function in C
[...]

Groundhog Day!

:-D


Marcel
olcott
2024-05-23 17:45:46 UTC
Permalink
Post by Marcel Mueller
typedef int (*ptr)();  // ptr is pointer to int function in C
[...]
Groundhog Day!
:-D
Marcel
That is a rewrite that provides the reason why I am referring
to a template of H/D pairs instead of just one fully specified
H and its corresponding D.
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Bonita Montero
2024-05-23 19:22:28 UTC
Permalink
Post by olcott
Post by Marcel Mueller
typedef int (*ptr)();  // ptr is pointer to int function in C
[...]
Groundhog Day!
:-D
Marcel
That is a rewrite that provides the reason why I am referring
to a template of H/D pairs instead of just one fully specified
H and its corresponding D.
You're really insane.
olcott
2024-05-23 19:25:04 UTC
Permalink
Post by Bonita Montero
Post by olcott
Post by Marcel Mueller
typedef int (*ptr)();  // ptr is pointer to int function in C
[...]
Groundhog Day!
:-D
Marcel
That is a rewrite that provides the reason why I am referring
to a template of H/D pairs instead of just one fully specified
H and its corresponding D.
You're really insane.
You might guess that by making sure to ignore
what I said. I am now offering a cash reward
of $10.
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Chris M. Thomasson
2024-05-23 23:19:07 UTC
Permalink
[...]
Post by olcott
Post by Bonita Montero
You're really insane.
You might guess that by making sure to ignore
what I said. I am now offering a cash reward
of $10.
lol!
Sam
2024-05-24 01:12:11 UTC
Permalink
[...]
Post by olcott
Post by Bonita Montero
You're really insane.
You might guess that by making sure to ignore
what I said. I am now offering a cash reward
of $10.
lol!
Not to mention that's it's barely enough to pay for a cup of Starbucks
coffee. Not to mention that I prefer a McCafe anyway. Maybe for that, and a
breakfast burrito, I might be motivated to look into this further.
Chris M. Thomasson
2024-05-23 23:18:31 UTC
Permalink
Post by Marcel Mueller
typedef int (*ptr)();  // ptr is pointer to int function in C
[...]
Groundhog Day!
:-D
Good one! :^)
Sam
2024-05-23 21:52:52 UTC
Permalink
Post by olcott
typedef int (*ptr)(); // ptr is pointer to int function in C
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 }
Anyone who writes something like this, in my day job, will get fired before
the end of the day.

This is the worst chunk of code I've seen in at least fifteen years. It
shows a complete lack of understanding of fundamental principles of C and
C++.
olcott
2024-05-23 22:11:42 UTC
Permalink
Post by Sam
typedef int (*ptr)();  // ptr is pointer to int function in C
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       }
Anyone who writes something like this, in my day job, will get fired
before the end of the day.
This is the worst chunk of code I've seen in at least fifteen years. It
shows a complete lack of understanding of fundamental principles of C
and C++.
It is the computer science of the Peter Linz halting
problem proof translated into C. This too is a template:

When Ĥ is applied to ⟨Ĥ⟩
Ĥ.q0 ⟨Ĥ⟩ ⊢* embedded_H ⟨Ĥ⟩ ⟨Ĥ⟩ ⊢* Ĥ.qy ∞
Ĥ.q0 ⟨Ĥ⟩ ⊢* embedded_H ⟨Ĥ⟩ ⟨Ĥ⟩ ⊢* Ĥ.qn

I simplified the Linz notation and this simplification
has been validated.

*I tried to avoid going off topic, but you insisted*
https://www.liarparadox.org/Linz_Proof.pdf

Can we please get back to the C or do you really want
to stay off topic?
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Sam
2024-05-24 01:10:08 UTC
Permalink
Post by olcott
Post by Sam
This is the worst chunk of code I've seen in at least fifteen years. It
shows a complete lack of understanding of fundamental principles of C and
C++.
It is the computer science of the Peter Linz halting
It's completely wrong. It suffers from a fundamental flaw of using an
inverse logical loop that makes its boolean logic produce an irrational
identity matrix.

The shown code is worthless. It'll never work. Try again, from step 1. Start
with the K&R book, beginning with Chapter 1.
Post by olcott
Can we please get back to the C or do you really want
to stay off topic?
As I already explained, it's syntactically invalid C, that no self-
respecting C compiler will accept as well-formed code.
olcott
2024-05-24 01:20:57 UTC
Permalink
Post by Sam
Post by olcott
Post by Sam
This is the worst chunk of code I've seen in at least fifteen years.
It shows a complete lack of understanding of fundamental principles
of C and C++.
It is the computer science of the Peter Linz halting
It's completely wrong. It suffers from a fundamental flaw of using an
inverse logical loop that makes its boolean logic produce an irrational
identity matrix.
The shown code is worthless. It'll never work. Try again, from step 1.
Start with the K&R book, beginning with Chapter 1.
Post by olcott
Can we please get back to the C or do you really want
to stay off topic?
As I already explained, it's syntactically invalid C, that no
self-respecting C compiler will accept as well-formed code.
Fibber !
Post by Sam
The code as presented is a valid C *translation unit*, but it is
not a valid *program*, and it has no behavior.
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Chris M. Thomasson
2024-05-24 01:27:02 UTC
Permalink
Post by olcott
Post by Sam
Post by olcott
Post by Sam
This is the worst chunk of code I've seen in at least fifteen years.
It shows a complete lack of understanding of fundamental principles
of C and C++.
It is the computer science of the Peter Linz halting
It's completely wrong. It suffers from a fundamental flaw of using an
inverse logical loop that makes its boolean logic produce an
irrational identity matrix.
The shown code is worthless. It'll never work. Try again, from step 1.
Start with the K&R book, beginning with Chapter 1.
Post by olcott
Can we please get back to the C or do you really want
to stay off topic?
As I already explained, it's syntactically invalid C, that no
self-respecting C compiler will accept as well-formed code.
Fibber !
Keep dreaming... Wow!


Post by olcott
Post by Sam
The code as presented is a valid C *translation unit*, but it is
not a valid *program*, and it has no behavior.
Sam
2024-05-24 11:42:42 UTC
Permalink
Post by olcott
Post by Sam
As I already explained, it's syntactically invalid C, that no self-
respecting C compiler will accept as well-formed code.
Fibber !
Post by Sam
The code as presented is a valid C *translation unit*, but it is
not a valid *program*, and it has no behavior.
Please stop accusing Mr. Thompson. He's only telling you the truth: the
shown code "is not a valid *program*". Which part of that you did not
understand? If you don't believe me, just ask Keith Thompson.

That should be the last word on this: your code is not a valid program.
Thank you for playing. You can go home now.
Kenny McCormack
2024-05-24 13:57:40 UTC
Permalink
In article <***@monster.email-scan.com>,
Sam <***@email-scan.com> kissed the ring thusly:
...
Post by Sam
Please stop accusing Mr. Thompson. He's only telling you the truth: the
shown code "is not a valid *program*". Which part of that you did not
understand? If you don't believe me, just ask Keith Thompson.
...
Post by Sam
That should be the last word on this: your code is not a valid program.
Thank you for playing. You can go home now.
I'm sure Keith will show his love for you.
--
So to cure the problem of arrogant incompetent rich people we should turn
the government over to an arrogant incompetent trust fund billionaire
who knows nothing about government and who has never held a job in his
entire spoiled life?
olcott
2024-05-24 17:04:53 UTC
Permalink
Post by Kenny McCormack
...
Post by Sam
Please stop accusing Mr. Thompson. He's only telling you the truth: the
shown code "is not a valid *program*". Which part of that you did not
understand? If you don't believe me, just ask Keith Thompson.
...
Post by Sam
That should be the last word on this: your code is not a valid program.
Thank you for playing. You can go home now.
The Strawman Deception is the most common fake rebuttal of my work.
The code is syntactically correct and does compile.
Post by Kenny McCormack
I'm sure Keith will show his love for you.
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Keith Thompson
2024-05-24 19:57:06 UTC
Permalink
Post by olcott
Post by Sam
As I already explained, it's syntactically invalid C, that no self-
respecting C compiler will accept as well-formed code.
Fibber !
Post by Sam
The code as presented is a valid C *translation unit*, but it is
not a valid *program*, and it has no behavior.
the shown code "is not a valid *program*". Which part of that you did
not understand? If you don't believe me, just ask Keith Thompson.
I don't read what olcott posts to comp.lang.c or comp.lang.c++, but it
appears that he was accusing you, Sam, not me. (I have no reason to
think you're lying, but I do think you statement is either incorrect or
unclear.)
That should be the last word on this: your code is not a valid
program. Thank you for playing. You can go home now.
Sam, your claim that it's "syntactically invalid C" is incorrect, unless
you're quibbling about the line numbers that are obviously not intended
to be part of the code.

Are the line numbers the reason you say it's syntactically invalid?

The code olcott posted, with the line numbers removed, is syntactically
valid C. It is not a complete program due to the lack of a definition
for one of the functions. It could be part of a complete program (one
about which, as it happens, I don't care).

Sam, are you trolling? If you're trolling olcott, I don't care, but
please don't do it in comp.lang.c and comp.lang.c++.
--
Keith Thompson (The_Other_Keith) Keith.S.Thompson+***@gmail.com
void Void(void) { Void(); } /* The recursive call of the void */
olcott
2024-05-24 20:55:05 UTC
Permalink
Post by Keith Thompson
Post by olcott
Post by Sam
As I already explained, it's syntactically invalid C, that no self-
respecting C compiler will accept as well-formed code.
Fibber !
Post by Sam
The code as presented is a valid C *translation unit*, but it is
not a valid *program*, and it has no behavior.
the shown code "is not a valid *program*". Which part of that you did
not understand? If you don't believe me, just ask Keith Thompson.
I don't read what olcott posts to comp.lang.c or comp.lang.c++, but it
appears that he was accusing you, Sam, not me. (I have no reason to
think you're lying, but I do think you statement is either incorrect or
unclear.)
That should be the last word on this: your code is not a valid
program. Thank you for playing. You can go home now.
Sam, your claim that it's "syntactically invalid C" is incorrect, unless
you're quibbling about the line numbers that are obviously not intended
to be part of the code.
Are the line numbers the reason you say it's syntactically invalid?
The code olcott posted, with the line numbers removed, is syntactically
valid C. It is not a complete program due to the lack of a definition
for one of the functions. It could be part of a complete program (one
about which, as it happens, I don't care).
Sam, are you trolling? If you're trolling olcott, I don't care, but
please don't do it in comp.lang.c and comp.lang.c++.
Keith Thompson the defender of truth, justice and honesty.
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Chris M. Thomasson
2024-05-25 19:57:16 UTC
Permalink
On 5/24/2024 1:55 PM, olcott wrote:
[...]
Post by olcott
Keith Thompson the defender of truth, justice and honesty.
Can I boil your code down to:

int H(int*);


Oh my, what does H do?
olcott
2024-05-24 02:08:52 UTC
Permalink
Post by Sam
Post by olcott
Can we please get back to the C or do you really want
to stay off topic?
As I already explained, it's syntactically invalid C, that no
self-respecting C compiler will accept as well-formed code.
IT IS NOT SYNTACTICALLY INVALID C
Post by Sam
The code as presented is a valid C *translation unit*, but it is
not a valid *program*, and it has no behavior.
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Keith Thompson
2024-05-24 02:34:02 UTC
Permalink
Sam <***@email-scan.com> writes:
[...]
Post by Sam
As I already explained, it's syntactically invalid C, that no
self-respecting C compiler will accept as well-formed code.
As I already explained, it is a valid C translation unit, once you
delete the line numbers that are obviously not intended to be part of
the code.

olcott will probably claim that I'm supporting his theories. I am not.
The code he posted is meaningless without knowing how H() is supposed to
be defined. And to be clear, I'm not asking how H() is supposed to be
defined.
--
Keith Thompson (The_Other_Keith) Keith.S.Thompson+***@gmail.com
void Void(void) { Void(); } /* The recursive call of the void */
olcott
2024-05-24 03:57:56 UTC
Permalink
Post by Keith Thompson
[...]
Post by Sam
As I already explained, it's syntactically invalid C, that no
self-respecting C compiler will accept as well-formed code.
As I already explained, it is a valid C translation unit, once you
delete the line numbers that are obviously not intended to be part of
the code.
olcott will probably claim that I'm supporting his theories. I am not.
The code he posted is meaningless without knowing how H() is supposed to
be defined. And to be clear, I'm not asking how H() is supposed to be
defined.
I will not say that you are supporting my theories.
The only thing I want here is software engineering in C.

*IT WOULD BE REALLY GREAT IF YOU COULD CONFIRM THIS ONE MORE DETAIL*
Every D correctly simulated by pure function H cannot
possibly reach its own line 06 and halt because every
D remains stuck in recursive simulation.

I know that it is dead obvious yet I have had a half dozen
people consistently lie about this for two years.
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
olcott
2024-05-24 13:01:00 UTC
Permalink
Post by Sam
Post by olcott
Post by Sam
This is the worst chunk of code I've seen in at least fifteen years.
It shows a complete lack of understanding of fundamental principles
of C and C++.
It is the computer science of the Peter Linz halting
It's completely wrong. It suffers from a fundamental flaw of using an
inverse logical loop that makes its boolean logic produce an irrational
identity matrix.
The shown code is worthless. It'll never work. Try again, from step 1.
Start with the K&R book, beginning with Chapter 1.
Post by olcott
Can we please get back to the C or do you really want
to stay off topic?
As I already explained, it's syntactically invalid C, that no
It is not syntactically invalid C, why lie about this?

Revelation 21:8 KJV)
...and all liars, shall have their part in the lake which
burneth with fire and brimstone: which is the second death.
Post by Sam
self-respecting C compiler will accept as well-formed code.
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Sam
2024-05-24 17:27:06 UTC
Permalink
Post by olcott
Post by Sam
Post by olcott
Post by Sam
This is the worst chunk of code I've seen in at least fifteen years. It
shows a complete lack of understanding of fundamental principles of C and
C++.
It is the computer science of the Peter Linz halting
It's completely wrong. It suffers from a fundamental flaw of using an
inverse logical loop that makes its boolean logic produce an irrational
identity matrix.
The shown code is worthless. It'll never work. Try again, from step 1. Start
with the K&R book, beginning with Chapter 1.
Post by olcott
Can we please get back to the C or do you really want
to stay off topic?
As I already explained, it's syntactically invalid C, that no
It is not syntactically invalid C, why lie about this?
Of course it is syntactically-invalid. No self-respecting C or C++ compiler
will accept the shown code, cut/pasted exactly as shown. Line numbers have
never been a part of either C or C++.

When was the last time you successfully compiled C or C++ code?
Chris M. Thomasson
2024-05-23 23:19:37 UTC
Permalink
[...snip puke...]
Post by Sam
Anyone who writes something like this, in my day job, will get fired
before the end of the day.
This is the worst chunk of code I've seen in at least fifteen years. It
shows a complete lack of understanding of fundamental principles of C
and C++.
No shit!
Richard Harnden
2024-05-24 12:10:52 UTC
Permalink
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
So, you have: main -> H -> D -> H -> D -> ... -> H -> D until you run
out of stack?

No return statement is ever reached.
Line 3 never completes.
Halt_Status at line 3 never gets a value.

</shrug>
olcott
2024-05-24 13:08:52 UTC
Permalink
Post by Richard Harnden
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
So, you have: main -> H -> D -> H -> D -> ... -> H -> D until you run
out of stack?
No return statement is ever reached.
Line 3 never completes.
Halt_Status at line 3 never gets a value.
</shrug>
Thanks.

Proving that D correctly simulated by H never reaches its final
state at line 06 and halts. Thus proving that the halting problem's
counter-example input D would be correctly determined to be non-halting
by its simulating termination analyzer H.
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
David Brown
2024-05-24 13:37:29 UTC
Permalink
Post by olcott
Post by Richard Harnden
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
So, you have: main -> H -> D -> H -> D -> ... -> H -> D until you run
out of stack?
No return statement is ever reached.
Line 3 never completes.
Halt_Status at line 3 never gets a value.
</shrug>
Thanks.
Proving that D correctly simulated by H never reaches its final
state at line 06 and halts.
No, it does not.

As Richard says, you have main -> H -> D -> H -> ...

For any finite system, you will run out of stack space. This is
undefined behaviour in C. /Anything/ can happen - including halting,
returning a halt status of 1, or a halt status of 0, or a not halting,
or printing out the works of Shakespeare. Or it could cause the program
to jump directly to line 6. Once you hit undefined behaviour, you
cannot prove /anything/.
Post by olcott
Thus proving that the halting problem's
counter-example input D would be correctly determined to be non-halting
by its simulating termination analyzer H.
olcott
2024-05-24 17:03:04 UTC
Permalink
Post by David Brown
Post by olcott
Post by Richard Harnden
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
So, you have: main -> H -> D -> H -> D -> ... -> H -> D until you run
out of stack?
No return statement is ever reached.
Line 3 never completes.
Halt_Status at line 3 never gets a value.
</shrug>
Thanks.
Proving that D correctly simulated by H never reaches its final
state at line 06 and halts.
No, it does not.
As Richard says, you have main -> H -> D -> H -> ...
For any finite system, you will run out of stack space.  This is
undefined behaviour in C.  /Anything/ can happen - including halting,
returning a halt status of 1, or a halt status of 0, or a not halting,
or printing out the works of Shakespeare.  Or it could cause the program
to jump directly to line 6.  Once you hit undefined behaviour, you
cannot prove /anything/.
Abnormal termination does not count as halting.
The software engineering equivalent of the theory of computation
term: D {halts} is D {terminates normally}.
Post by David Brown
Post by olcott
Thus proving that the halting problem's
counter-example input D would be correctly determined to be non-halting
by its simulating termination analyzer H.
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Fred. Zwarts
2024-05-24 14:05:36 UTC
Permalink
Post by olcott
Post by Richard Harnden
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
So, you have: main -> H -> D -> H -> D -> ... -> H -> D until you run
out of stack?
No return statement is ever reached.
Line 3 never completes.
Halt_Status at line 3 never gets a value.
</shrug>
Thanks.
Proving that D correctly simulated by H never reaches its final
state at line 06 and halts. Thus proving that the halting problem's
counter-example input D would be correctly determined to be non-halting
by its simulating termination analyzer H.
No. If true, it proves that no simulation is able to correctly determine
the halting status of D, because simulations are not even able to
simulate one line of D.
Fred. Zwarts
2024-05-24 14:28:01 UTC
Permalink
Post by olcott
Post by Richard Harnden
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
So, you have: main -> H -> D -> H -> D -> ... -> H -> D until you run
out of stack?
No return statement is ever reached.
Line 3 never completes.
Halt_Status at line 3 never gets a value.
</shrug>
Thanks.
Proving that D correctly simulated by H never reaches its final
state at line 06 and halts. Thus proving that the halting problem's
counter-example input D would be correctly determined to be non-halting
by its simulating termination analyzer H.
Since the claim is that the simulator never reaches line 04, the
conclusion is that line 04, 05 and 06 do not play a role in the proof.
Which means that we can delete them and still use the 'proof'. Then the
'proof' is that any function that calls H would be non-halting, because
H does not halt. That D does the opposite of what H returns is not used
in the 'proof', because it is not part of the simulation.
So, it would be equally correct to say that D1 does not halt, because H
will never return from the recursive simulation:

int H(ptr p, ptr i);
int D1(ptr p)
{
return H(p, p);
}
int main()
{
H(D1,D1);
return 0;
}

Of course that does not prove it. It only proves that simulation cannot
be used in this way to determine the halting status.
Fred. Zwarts
2024-05-24 15:01:46 UTC
Permalink
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
The case can be simplified even more (D is not needed):

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 }

If olcott's claim is true, then also main will never reach line 04. This
would prove that H is non-halting. This would prove that a simulating
halt-decider cannot be used as a halt-decider, because it does not halt.
olcott
2024-05-24 16:57:36 UTC
Permalink
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
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.

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.
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       }
If olcott's claim is true, then also main will never reach line 04. This
would prove that H is non-halting. This would prove that a simulating
halt-decider cannot be used as a halt-decider, because it does not halt.
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Fred. Zwarts
2024-05-24 18:52:31 UTC
Permalink
Post by olcott
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
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.
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.
Maybe if you simplify your question, the answer is easier to find:
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?
olcott
2024-05-24 19:20:35 UTC
Permalink
Post by olcott
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
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.
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.
That is like the woman that is looking for her lost watch two blocks
away from where she lost it "because the light is better over here"

The question was much simpler until people wanting to play head games
found fake loopholes.
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?
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Fred. Zwarts
2024-05-25 07:32:45 UTC
Permalink
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
Olcott's own words are that the simulation of D never reaches past line
03. So the lines following line 03 do not play a role and, therefore,
can be removed without changing the claim. This leads to:

typedef int (*ptr)(); // ptr is pointer to int function in C
00 int H(ptr p, ptr i);
01 int D(ptr p)
02 {
03 return H(p, p);
04 }
05
06 int main()
07 {
08 H(D,D);
09 return 0;
10 }


What we see is that the only property of D that is used is that it is a
parameter duplicator. (Is that why it is called D?). H needs 2
parameters, but it can be given only one input parameter, so the
parameter duplicator is required to allow H to decide about itself.



Of the infinite set of H that simulate at least one step, none of them,
when simulated by H, halts, because none of them reaches its final
state. Olcott's claim is equivalent to the claim of non-halting
behaviour of H.
This means that a simulating halt-decider is a bad idea, because the
decider itself does not halt.
Tim Rentsch
2024-05-25 07:58:04 UTC
Permalink
typedef int (*ptr)(); // ptr is pointer to int function in C
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 [...]
Olcott's own words are that the simulation of D [...]
Why do you waste people's time engaging with this bozo?
olcott
2024-05-25 11:13:47 UTC
Permalink
Post by Tim Rentsch
typedef int (*ptr)(); // ptr is pointer to int function in C
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 [...]
Olcott's own words are that the simulation of D [...]
Why do you waste people's time engaging with this bozo?
This is genuine break though work. Who here would not like
to have a compiler that checks for total program correctness?

WST 2023: 19th International Workshop on Termination
University Center Obergurgl, University of Innsbruck
Obergurgl, Austria, August 24-25, 2023
https://easychair.org/cfp/WST2023
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
olcott
2024-05-25 11:22:56 UTC
Permalink
Post by Fred. Zwarts
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
Olcott's own words are that the simulation of D never reaches past line
03. So the lines following line 03 do not play a role and, therefore,
typedef int (*ptr)();  // ptr is pointer to int function in C
00       int H(ptr p, ptr i);
01       int D(ptr p)
02       {
03         return H(p, p);
04       }
05
06       int main()
07       {
08         H(D,D);
09         return 0;
10       }
What we see is that the only property of D that is used is that it is a
parameter duplicator. (Is that why it is called D?). H needs 2
parameters, but it can be given only one input parameter, so the
parameter duplicator is required to allow H to decide about itself.
Of the infinite set of H that simulate at least one step, none of them,
when simulated by H, halts, because none of them reaches its final
state. Olcott's claim is equivalent to the claim of non-halting
behaviour of H.
This means that a simulating halt-decider is a bad idea, because the
decider itself does not halt.
The simplification is valid.
01 int D(ptr p)
02 {
03 H(p, p);
04 return 0;
05 }

This is a better simplification because it now has an actual
identifiable final state that can be separately referred to.
It is not true that H never halts. H is required to be a pure
function. https://en.wikipedia.org/wiki/Pure_function
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Fred. Zwarts
2024-05-26 10:57:25 UTC
Permalink
Post by olcott
Post by Fred. Zwarts
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
Olcott's own words are that the simulation of D never reaches past
line 03. So the lines following line 03 do not play a role and,
typedef int (*ptr)();  // ptr is pointer to int function in C
00       int H(ptr p, ptr i);
01       int D(ptr p)
02       {
03         return H(p, p);
04       }
05
06       int main()
07       {
08         H(D,D);
09         return 0;
10       }
What we see is that the only property of D that is used is that it is
a parameter duplicator. (Is that why it is called D?). H needs 2
parameters, but it can be given only one input parameter, so the
parameter duplicator is required to allow H to decide about itself.
Of the infinite set of H that simulate at least one step, none of
them, when simulated by H, halts, because none of them reaches its
final state. Olcott's claim is equivalent to the claim of non-halting
behaviour of H.
This means that a simulating halt-decider is a bad idea, because the
decider itself does not halt.
The simplification is valid.
01       int D(ptr p)
02       {
03         H(p, p);
04         return 0;
05       }
This is a better simplification because it now has an actual
identifiable final state that can be separately referred to.
It is not true that H never halts. H is required to be a pure
function. https://en.wikipedia.org/wiki/Pure_function
If H finds that H never halts and a non-halting H is not allowed, that
it is clear that the set of H that satisfy the requirements is empty.
Mike Terry
2024-05-25 15:48:01 UTC
Permalink
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
Olcott's own words are that the simulation of D never reaches past line 03. So the lines following
typedef int (*ptr)();  // ptr is pointer to int function in C
00       int H(ptr p, ptr i);
01       int D(ptr p)
02       {
03         return H(p, p);
04       }
05
06       int main()
07       {
08         H(D,D);
09         return 0;
10       }
Correct - as far as this specific thread is concerned. But PO's H and P are intended to be part of
a larger argument supposedly refuting the standard halting problem (HP) proof (that no TM is a halt
decider), e.g. as covered in the Linz book. PO has created an extract of that proof as a PDF that
he sometimes links to.

Also note that PO's claim (in this specific thread) is that the *simulation* of D never reaches past
line 03. That is not saying that the *computation* D(D) never proceeds past line 3 or that D(D)
never halts. (This is important in the wider HP proof context. PO is deeply confused on this point.)
What we see is that the only property of D that is used is that it is a parameter duplicator. (Is
that why it is called D?). H needs 2 parameters, but it can be given only one input parameter, so
the parameter duplicator is required to allow H to decide about itself.
Yes, but the rest of D is the key to its role in the HP proof - again, not relevant for this
specific thread. [In HP proof, D's role is to calculate H's decision on whether D(D) halts and then
behave in the opposite fashion, providing a counterexample to the claim that H correctly decides the
halting behaviour of /all/ inputs (P,I). I.e. it shows that H gets it wrong for the case P=I=D.]
Of the infinite set of H that simulate at least one step, none of them, when simulated by H, halts,
because none of them reaches its final state. Olcott's claim is equivalent to the claim of
non-halting behaviour of H.
No - note my remarks above about the distinction between the behaviour of the *computation* D(D) and
the (partial) *simulation* of that computation by H. H can simply choose to discontinue that
simulation at any point [aka "abort" the simulation, in PO's terms], but then H would continue and
halt.

PO is pretty clueless about everything involved, and I believe he is quite incapable of abstract
thought, including what people would generally regard as "logical reasoning", so there really is no
point in arguing with him. (I mean Really...)

Mike.
olcott
2024-05-25 17:46:16 UTC
Permalink
Post by Fred. Zwarts
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
Olcott's own words are that the simulation of D never reaches past
line 03. So the lines following line 03 do not play a role and,
typedef int (*ptr)();  // ptr is pointer to int function in C
00       int H(ptr p, ptr i);
01       int D(ptr p)
02       {
03         return H(p, p);
04       }
05
06       int main()
07       {
08         H(D,D);
09         return 0;
10       }
Correct - as far as this specific thread is concerned.  But PO's H and P
are intended to be part of a larger argument supposedly refuting the
standard halting problem (HP) proof (that no TM is a halt decider), e.g.
as covered in the Linz book.  PO has created an extract of that proof as
a PDF that he sometimes links to.
*I renamed this thread to be more accurate*
*now that I got people's attention*

The material the you referenced is not appropriate for this group
and outside the scope of the same thread in the comp.theory group.
Also note that PO's claim (in this specific thread) is that the
*simulation* of D never reaches past line 03.  That is not saying that
the *computation* D(D)
*No you are paraphrasing my words incorrectly*
*No you are paraphrasing my words incorrectly*
*No you are paraphrasing my words incorrectly*

*D correctly simulated by pure function H cannot*
*possibly reach its own line 06 and halt*

*Any change-of-subject away form those exact words is*
*an example of the strawman deception error of reasoning*

*Correct Simulation Defined*
This is provided because many reviewers had a different
notion of correct simulation that diverges from this notion.

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.
never proceeds past line 3 or that D(D) never
halts.  (This is important in the wider HP proof context.  PO is deeply
confused on this point.)
*Not at all you are simply not paying close enough attention*
*Not at all you are simply not paying close enough attention*
*Not at all you are simply not paying close enough attention*
Post by Fred. Zwarts
What we see is that the only property of D that is used is that it is
a parameter duplicator. (Is that why it is called D?). H needs 2
parameters, but it can be given only one input parameter, so the
parameter duplicator is required to allow H to decide about itself.
Yes, but the rest of D is the key to its role in the HP proof - again,
not relevant for this specific thread.
*Exactly*
[In HP proof, D's role is to
calculate H's decision on whether D(D) halts and then behave in the
opposite fashion, providing a counterexample to the claim that H
correctly decides the halting behaviour of /all/ inputs (P,I).  I.e. it
shows that H gets it wrong for the case P=I=D.]
Post by Fred. Zwarts
Of the infinite set of H that simulate at least one step, none of
them, when simulated by H, halts, because none of them reaches its
final state. Olcott's claim is equivalent to the claim of non-halting
behaviour of H.
No - note my remarks above about the distinction between the behaviour
of the *computation* D(D) and the (partial) *simulation* of that
computation by H.  H can simply choose to discontinue that simulation at
any point [aka "abort" the simulation, in PO's terms], but then H would
continue and halt.
*This is already specified as pure function H*

(1) the function return values are identical for identical
arguments (no variation with local static variables, non-local
variables, mutable reference arguments or input streams, i.e.,
referential transparency), and

(2) the function has no side effects (no mutation of local static
variables, non-local variables, mutable reference arguments or
input/output streams). https://en.wikipedia.org/wiki/Pure_function#
PO is pretty clueless about everything involved, and I believe he is
quite incapable of abstract thought, including what people would
generally regard as "logical reasoning", so there really is no point in
arguing with him.  (I mean Really...)
Mike.
The actual truth is that the strawman deception change-the-subject
form of fake rebuttal is the only rebuttal ever provided.

Thanks for your time, I really appreciate it. You have provided
some excellent reviews of my work and resolved key unresolved
questions about my work that were left unresolved for two years.

On 3/1/2024 12:41 PM, Mike Terry wrote:
Message-ID: <rLmcnQQ3-***@brightview.co.uk>
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
olcott
2024-05-25 19:41:07 UTC
Permalink
Post by Fred. Zwarts
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
Olcott's own words are that the simulation of D never reaches past
line 03. So the lines following line 03 do not play a role and,
typedef int (*ptr)();  // ptr is pointer to int function in C
00       int H(ptr p, ptr i);
01       int D(ptr p)
02       {
03         return H(p, p);
04       }
05
06       int main()
07       {
08         H(D,D);
09         return 0;
10       }
Correct - as far as this specific thread is concerned.  But PO's H and P
are intended to be part of a larger argument supposedly refuting the
standard halting problem (HP) proof (that no TM is a halt decider), e.g.
as covered in the Linz book.  PO has created an extract of that proof as
a PDF that he sometimes links to.
Also note that PO's claim (in this specific thread) is that the
*simulation* of D never reaches past line 03.  That is not saying that
the *computation* D(D) never proceeds past line 3 or that D(D) never
halts.  (This is important in the wider HP proof context.  PO is deeply
confused on this point.)
I read and reread what is said several times to make sure that I
get the exact meaning of exactly what is said. *I missed it this time*

Since *Mike is my most important reviewer* and this one key point
has been the only basis for any rebuttal in the last two years I
am addressing it here. *Followups have been sent to comp.theory*

I must diverge a tad bit from the pure semantics of the c programming
language to address an error by my reviewers regarding the theory of
computation notion of computable function.

*Computable functions* are the basic objects of study in computability
theory. Computable functions are the formalized analogue of the
intuitive notion of algorithms, in the sense that a function is
computable if there exists an algorithm that can do the job of the
function, i.e. given an input of the function domain it can return the
corresponding output. https://en.wikipedia.org/wiki/Computable_function

When computable function H reports on the behavior of its input it must
report on:

D correctly simulated by pure function H cannot possibly reach its own
line 06

Computable functions ARE STRICTLY NOT ALLOWED TO REPORT ON THE BEHAVIOR
NON-INPUTS. Computable functions ARE NEVER ALLOWED TO REPORT ON THE
BEHAVIOR OF THE COMPUTATION THAT THEY THEMSELVES ARE CONTAINED WITHIN.

In technical terms this means that Turing machines are never allowed
to report on the behavior of Turing machines. They are only allowed
to report on the behavior specified by a finite string Turing machine
description.

Crucially this is one level of indirect reference away from the behavior
of the actual Turing machine. This never makes any difference except
in the case of pathological self-reference such as D correctly simulated
by pure function H. No one ever noticed this before because simulating
termination analyzers were always rejected out-of-hand without review.
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
olcott
2024-05-26 04:19:17 UTC
Permalink
Post by Fred. Zwarts
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
Olcott's own words are that the simulation of D never reaches past line
03. So the lines following line 03 do not play a role and, therefore,
typedef int (*ptr)();  // ptr is pointer to int function in C
00       int H(ptr p, ptr i);
01       int D(ptr p)
02       {
03         return H(p, p);
04       }
05
06       int main()
07       {
08         H(D,D);
09         return 0;
10       }
What we see is that the only property of D that is used is that it is a
parameter duplicator. (Is that why it is called D?). H needs 2
parameters, but it can be given only one input parameter, so the
parameter duplicator is required to allow H to decide about itself.
Of the infinite set of H that simulate at least one step, none of them,
when simulated by H, halts, because none of them reaches its final
state. Olcott's claim is equivalent to the claim of non-halting
behaviour of H.
This means that a simulating halt-decider is a bad idea, because the
decider itself does not halt.
Not at all.
A simulator is an x86 emulator that correctly emulates 1 to N of the
x86 instructions of D in the order specified by the x86 instructions
of D. This may include M recursive emulations of H emulating itself
emulating D.

This means that D cannot possibly reach its own line 06 and halt
in any finite steps of correct simulation. H is free to halt at
any time after these N finite steps of correct simulation.
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Fred. Zwarts
2024-05-26 11:01:59 UTC
Permalink
Post by olcott
Post by Fred. Zwarts
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
Olcott's own words are that the simulation of D never reaches past
line 03. So the lines following line 03 do not play a role and,
typedef int (*ptr)();  // ptr is pointer to int function in C
00       int H(ptr p, ptr i);
01       int D(ptr p)
02       {
03         return H(p, p);
04       }
05
06       int main()
07       {
08         H(D,D);
09         return 0;
10       }
What we see is that the only property of D that is used is that it is
a parameter duplicator. (Is that why it is called D?). H needs 2
parameters, but it can be given only one input parameter, so the
parameter duplicator is required to allow H to decide about itself.
Of the infinite set of H that simulate at least one step, none of
them, when simulated by H, halts, because none of them reaches its
final state. Olcott's claim is equivalent to the claim of non-halting
behaviour of H.
This means that a simulating halt-decider is a bad idea, because the
decider itself does not halt.
Not at all.
   A simulator is an x86 emulator that correctly emulates 1 to N of the
   x86 instructions of D in the order specified by the x86 instructions
   of D. This may include M recursive emulations of H emulating itself
   emulating D.
   This means that D cannot possibly reach its own line 06 and halt
   in any finite steps of correct simulation. H is free to halt at
   any time after these N finite steps of correct simulation.
D does not reach it own line 04 because the simulation of H does not
return to D. So, it shows that the simulation of H does not reach it
final state, which proves that H does not halt. A clear indication that
a simulating decider is not a good idea, because it is required to halt,
but H itself finds that H does not reach its final state.
olcott
2024-05-26 13:20:13 UTC
Permalink
Post by Fred. Zwarts
Post by olcott
Post by Fred. Zwarts
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
Olcott's own words are that the simulation of D never reaches past
line 03. So the lines following line 03 do not play a role and,
typedef int (*ptr)();  // ptr is pointer to int function in C
00       int H(ptr p, ptr i);
01       int D(ptr p)
02       {
03         return H(p, p);
04       }
05
06       int main()
07       {
08         H(D,D);
09         return 0;
10       }
What we see is that the only property of D that is used is that it is
a parameter duplicator. (Is that why it is called D?). H needs 2
parameters, but it can be given only one input parameter, so the
parameter duplicator is required to allow H to decide about itself.
Of the infinite set of H that simulate at least one step, none of
them, when simulated by H, halts, because none of them reaches its
final state. Olcott's claim is equivalent to the claim of non-halting
behaviour of H.
This means that a simulating halt-decider is a bad idea, because the
decider itself does not halt.
Not at all.
    A simulator is an x86 emulator that correctly emulates 1 to N of the
    x86 instructions of D in the order specified by the x86 instructions
    of D. This may include M recursive emulations of H emulating itself
    emulating D.
    This means that D cannot possibly reach its own line 06 and halt
    in any finite steps of correct simulation. H is free to halt at
    any time after these N finite steps of correct simulation.
D does not reach it own line 04 because the simulation of H does not
return to D. So, it shows that the simulation of H does not reach it
final state, which proves that H does not halt.
Your transformation would have been acceptable if you retained the
fact that H is a pure function that always halts and returns some value.

In retrospect I should not have assumed that people here knew what a
pure function is.

In computer programming, a pure function is a function that has the
following properties:

(1) the function return values are identical for identical arguments
(no variation with local static variables, non-local variables, mutable
reference arguments or input streams), and

(2) the function has no side effects (no mutation of local static
variables, non-local variables, mutable reference arguments or
input/output streams). https://en.wikipedia.org/wiki/Pure_function
Post by Fred. Zwarts
A clear indication that
a simulating decider is not a good idea, because it is required to halt,
but H itself finds that H does not reach its final state.
No matter how many steps of D correctly simulated by pure function H
are simulated D never reaches its final state at its own line 06 and
halts because D remains stuck in recursive simulation.

That H is a pure function means that H eventually halts and returns
some value. We can say H returns the meaningless value of 56.

*Thanks for your review*
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Fred. Zwarts
2024-05-26 14:43:58 UTC
Permalink
Post by olcott
Post by Fred. Zwarts
Post by olcott
Post by Fred. Zwarts
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
Olcott's own words are that the simulation of D never reaches past
line 03. So the lines following line 03 do not play a role and,
typedef int (*ptr)();  // ptr is pointer to int function in C
00       int H(ptr p, ptr i);
01       int D(ptr p)
02       {
03         return H(p, p);
04       }
05
06       int main()
07       {
08         H(D,D);
09         return 0;
10       }
What we see is that the only property of D that is used is that it
is a parameter duplicator. (Is that why it is called D?). H needs 2
parameters, but it can be given only one input parameter, so the
parameter duplicator is required to allow H to decide about itself.
Of the infinite set of H that simulate at least one step, none of
them, when simulated by H, halts, because none of them reaches its
final state. Olcott's claim is equivalent to the claim of
non-halting behaviour of H.
This means that a simulating halt-decider is a bad idea, because the
decider itself does not halt.
Not at all.
    A simulator is an x86 emulator that correctly emulates 1 to N of the
    x86 instructions of D in the order specified by the x86 instructions
    of D. This may include M recursive emulations of H emulating itself
    emulating D.
    This means that D cannot possibly reach its own line 06 and halt
    in any finite steps of correct simulation. H is free to halt at
    any time after these N finite steps of correct simulation.
D does not reach it own line 04 because the simulation of H does not
return to D. So, it shows that the simulation of H does not reach it
final state, which proves that H does not halt.
Your transformation would have been acceptable if you retained the
fact that H is a pure function that always halts and returns some value.
Since H is required to halt, but H shows that H does not halt (because
the simulation of H never reaches its final state), the conclusion must
be that there is no such H.
olcott
2024-05-26 15:42:52 UTC
Permalink
Post by Fred. Zwarts
Post by olcott
Post by Fred. Zwarts
Post by olcott
Post by Fred. Zwarts
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
Olcott's own words are that the simulation of D never reaches past
line 03. So the lines following line 03 do not play a role and,
typedef int (*ptr)();  // ptr is pointer to int function in C
00       int H(ptr p, ptr i);
01       int D(ptr p)
02       {
03         return H(p, p);
04       }
05
06       int main()
07       {
08         H(D,D);
09         return 0;
10       }
What we see is that the only property of D that is used is that it
is a parameter duplicator. (Is that why it is called D?). H needs 2
parameters, but it can be given only one input parameter, so the
parameter duplicator is required to allow H to decide about itself.
Of the infinite set of H that simulate at least one step, none of
them, when simulated by H, halts, because none of them reaches its
final state. Olcott's claim is equivalent to the claim of
non-halting behaviour of H.
This means that a simulating halt-decider is a bad idea, because
the decider itself does not halt.
Not at all.
    A simulator is an x86 emulator that correctly emulates 1 to N of the
    x86 instructions of D in the order specified by the x86 instructions
    of D. This may include M recursive emulations of H emulating itself
    emulating D.
    This means that D cannot possibly reach its own line 06 and halt
    in any finite steps of correct simulation. H is free to halt at
    any time after these N finite steps of correct simulation.
D does not reach it own line 04 because the simulation of H does not
return to D. So, it shows that the simulation of H does not reach it
final state, which proves that H does not halt.
Your transformation would have been acceptable if you retained the
fact that H is a pure function that always halts and returns some value.
Since H is required to halt, but H shows that H does not halt (because
the simulation of H never reaches its final state), the conclusion must
be that there is no such H.
When D correctly simulated by pure simulator H remains stuck in infinite
recursive simulation then we also know that D never reaches its own line
06 and halts in less than an infinite number of correctly simulated
steps.

This is what I had in mind all along. Because I am a relatively terrible
communicator it takes me a very long time to translate my intuitions
into simple words.
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Fred. Zwarts
2024-05-27 08:57:32 UTC
Permalink
Post by olcott
Post by Fred. Zwarts
Post by olcott
Post by Fred. Zwarts
Post by olcott
Post by Fred. Zwarts
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
Olcott's own words are that the simulation of D never reaches past
line 03. So the lines following line 03 do not play a role and,
typedef int (*ptr)();  // ptr is pointer to int function in C
00       int H(ptr p, ptr i);
01       int D(ptr p)
02       {
03         return H(p, p);
04       }
05
06       int main()
07       {
08         H(D,D);
09         return 0;
10       }
What we see is that the only property of D that is used is that it
is a parameter duplicator. (Is that why it is called D?). H needs
2 parameters, but it can be given only one input parameter, so the
parameter duplicator is required to allow H to decide about itself.
Of the infinite set of H that simulate at least one step, none of
them, when simulated by H, halts, because none of them reaches its
final state. Olcott's claim is equivalent to the claim of
non-halting behaviour of H.
This means that a simulating halt-decider is a bad idea, because
the decider itself does not halt.
Not at all.
    A simulator is an x86 emulator that correctly emulates 1 to N of the
    x86 instructions of D in the order specified by the x86 instructions
    of D. This may include M recursive emulations of H emulating itself
    emulating D.
    This means that D cannot possibly reach its own line 06 and halt
    in any finite steps of correct simulation. H is free to halt at
    any time after these N finite steps of correct simulation.
D does not reach it own line 04 because the simulation of H does not
return to D. So, it shows that the simulation of H does not reach it
final state, which proves that H does not halt.
Your transformation would have been acceptable if you retained the
fact that H is a pure function that always halts and returns some value.
Since H is required to halt, but H shows that H does not halt (because
the simulation of H never reaches its final state), the conclusion
must be that there is no such H.
When D correctly simulated by pure simulator H remains stuck in infinite
recursive simulation then we also know that D never reaches its own line
06 and halts in less than an infinite number of correctly simulated
steps.
This is what I had in mind all along. Because I am a relatively terrible
communicator it takes me a very long time to translate my intuitions
into simple words.
typedef int (*ptr)(); // ptr is pointer to int function in C
00 int H(ptr p, ptr i);
01 int D(ptr p)
02 {
03 return H(p, p);
04 }
05
06 int main()
07 {
08 H(D,D);
09 return 0;
10 }

We see that the requirements for H are contradictory. H must simulate
and H must halt, but the simulation of H never reaches it final state.
We check that using H. The problem is that H requires two parameters,
but it supplies only one parameter. So we use the parameter duplicator
D. D is a simple function that is used only to allow H to check H
itself. It is clear that if H halts, D halts too and if H does not halt,
D does not halt either. It is also clear that when H simulates at least
one step of H, the simulated H never reaches its final state. So, H must
conclude that H satisfies non-termination criteria. Olcott claims that
the question whether the direct execution of H halts is incorrect,
because the simulation is what determines the halting of H and the
simulation of H never reaches its final state. This shows that no H
exists that simulates and halts.
olcott
2024-05-27 14:00:50 UTC
Permalink
Post by olcott
Post by Fred. Zwarts
Post by olcott
Post by Fred. Zwarts
Post by olcott
Post by Fred. Zwarts
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
Olcott's own words are that the simulation of D never reaches
past line 03. So the lines following line 03 do not play a role
and, therefore, can be removed without changing the claim. This
typedef int (*ptr)();  // ptr is pointer to int function in C
00       int H(ptr p, ptr i);
01       int D(ptr p)
02       {
03         return H(p, p);
04       }
05
06       int main()
07       {
08         H(D,D);
09         return 0;
10       }
What we see is that the only property of D that is used is that
it is a parameter duplicator. (Is that why it is called D?). H
needs 2 parameters, but it can be given only one input parameter,
so the parameter duplicator is required to allow H to decide
about itself.
Of the infinite set of H that simulate at least one step, none of
them, when simulated by H, halts, because none of them reaches
its final state. Olcott's claim is equivalent to the claim of
non-halting behaviour of H.
This means that a simulating halt-decider is a bad idea, because
the decider itself does not halt.
Not at all.
    A simulator is an x86 emulator that correctly emulates 1 to N of the
    x86 instructions of D in the order specified by the x86 instructions
    of D. This may include M recursive emulations of H emulating itself
    emulating D.
    This means that D cannot possibly reach its own line 06 and halt
    in any finite steps of correct simulation. H is free to halt at
    any time after these N finite steps of correct simulation.
D does not reach it own line 04 because the simulation of H does
not return to D. So, it shows that the simulation of H does not
reach it final state, which proves that H does not halt.
Your transformation would have been acceptable if you retained the
fact that H is a pure function that always halts and returns some value.
Since H is required to halt, but H shows that H does not halt
(because the simulation of H never reaches its final state), the
conclusion must be that there is no such H.
 >
When D correctly simulated by pure simulator H remains stuck in infinite
recursive simulation then we also know that D never reaches its own line
06 and halts in less than an infinite number of correctly simulated
steps.
This is what I had in mind all along. Because I am a relatively terrible
communicator it takes me a very long time to translate my intuitions
into simple words.
typedef int (*ptr)();  // ptr is pointer to int function in C
00       int H(ptr p, ptr i);
01       int D(ptr p)
02       {
03         return H(p, p);
04       }
05
06       int main()
07       {
08         H(D,D);
09         return 0;
10       }
We see that the requirements for H are contradictory.
*Not at all, I just did not explain us clearly enough*

When we hypothesize that H is a pure simulator we see that D correctly
simulated by pure simulator H remains stuck in recursive simulation thus
never reaches its own simulated final state at its line 06 and halts. In
this case H does not halt, thus is neither a pure function nor a
decider.

From this we correctly conclude that D correctly simulated by pure
function H never reaches its simulated final state at its own line 06
and halts in Less than an infinite (AKA finite) number of simulated
steps. Here is a concrete example of that:

https://en.wikipedia.org/wiki/Googolplex
When pure function H correctly simulates a Googolplex ^ Googolplex
number of steps of D, then D never reaches its simulated final state
at its own line 06 and halts. Pure function H halts after this finite
number of steps of correct simulation.

In other words when the *INPUT* to H(D,D) is correctly simulated by
either pure simulator H or pure function H this correctly simulated
*INPUT* never halts no matter what, thus the INPUT to H(D,D) is
definitely non halting.

*This is STEP ONE of my four step proof*
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Fred. Zwarts
2024-05-28 09:11:54 UTC
Permalink
Post by olcott
Post by olcott
Post by Fred. Zwarts
Post by olcott
Post by Fred. Zwarts
Post by olcott
Post by Fred. Zwarts
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
Olcott's own words are that the simulation of D never reaches
past line 03. So the lines following line 03 do not play a role
and, therefore, can be removed without changing the claim. This
typedef int (*ptr)();  // ptr is pointer to int function in C
00       int H(ptr p, ptr i);
01       int D(ptr p)
02       {
03         return H(p, p);
04       }
05
06       int main()
07       {
08         H(D,D);
09         return 0;
10       }
What we see is that the only property of D that is used is that
it is a parameter duplicator. (Is that why it is called D?). H
needs 2 parameters, but it can be given only one input
parameter, so the parameter duplicator is required to allow H to
decide about itself.
Of the infinite set of H that simulate at least one step, none
of them, when simulated by H, halts, because none of them
reaches its final state. Olcott's claim is equivalent to the
claim of non-halting behaviour of H.
This means that a simulating halt-decider is a bad idea, because
the decider itself does not halt.
Not at all.
    A simulator is an x86 emulator that correctly emulates 1 to N of the
    x86 instructions of D in the order specified by the x86 instructions
    of D. This may include M recursive emulations of H emulating itself
    emulating D.
    This means that D cannot possibly reach its own line 06 and halt
    in any finite steps of correct simulation. H is free to halt at
    any time after these N finite steps of correct simulation.
D does not reach it own line 04 because the simulation of H does
not return to D. So, it shows that the simulation of H does not
reach it final state, which proves that H does not halt.
Your transformation would have been acceptable if you retained the
fact that H is a pure function that always halts and returns some value.
Since H is required to halt, but H shows that H does not halt
(because the simulation of H never reaches its final state), the
conclusion must be that there is no such H.
 >
When D correctly simulated by pure simulator H remains stuck in infinite
recursive simulation then we also know that D never reaches its own line
06 and halts in less than an infinite number of correctly simulated
steps.
This is what I had in mind all along. Because I am a relatively terrible
communicator it takes me a very long time to translate my intuitions
into simple words.
typedef int (*ptr)();  // ptr is pointer to int function in C
00       int H(ptr p, ptr i);
01       int D(ptr p)
02       {
03         return H(p, p);
04       }
05
06       int main()
07       {
08         H(D,D);
09         return 0;
10       }
We see that the requirements for H are contradictory.
*Not at all, I just did not explain us clearly enough*
When we hypothesize that H is a pure simulator we see that D correctly
... we see that H correctly ...
Post by olcott
simulated by pure simulator H remains stuck in recursive simulation thus
never reaches its own simulated final state at its line 06 and halts. In
(the line 06 is different in my example)
Post by olcott
this case H does not halt, thus is neither a pure function nor a
decider.
From this we correctly conclude that D correctly simulated by pure
... we correctly conclude that H correctly simulated by ...
Post by olcott
function H never reaches its simulated final state at its own line 06
(The line 06 is different in my example)
Post by olcott
and halts in Less than an infinite (AKA finite) number of simulated
https://en.wikipedia.org/wiki/Googolplex
When pure function H correctly simulates a Googolplex ^ Googolplex
number of steps of D, then D never reaches its simulated final state
... of H, then H never reaches its simulated final state
Post by olcott
at its own line 06 and halts. Pure function H halts after this finite
(The line 06 is different in my example)
Post by olcott
number of steps of correct simulation.
The simulation of H never reaches its final state. Whether the direct
execution of H halts is the wrong question.
Post by olcott
In other words when the *INPUT* to H(D,D) is correctly simulated by
either pure simulator H or pure function H this correctly simulated
*INPUT* never halts no matter what, thus the INPUT to H(D,D) is
definitely non halting.
D is non halting, because the simulation of H does not reach its final
state and therefore does not return to D. So, the hypothesis that H is a
pure simulator that halts turns out to be contradictory because the
simulation of H shows that H does not reach its final state, so, no such
H exists.
Post by olcott
*This is STEP ONE of my four step proof*
olcott
2024-05-28 14:11:28 UTC
Permalink
Post by Fred. Zwarts
Post by olcott
Post by olcott
Post by Fred. Zwarts
Post by olcott
Post by Fred. Zwarts
Post by olcott
Post by Fred. Zwarts
typedef int (*ptr)();  // ptr is pointer to int function in C
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.
Olcott's own words are that the simulation of D never reaches
past line 03. So the lines following line 03 do not play a role
and, therefore, can be removed without changing the claim. This
typedef int (*ptr)();  // ptr is pointer to int function in C
00       int H(ptr p, ptr i);
01       int D(ptr p)
02       {
03         return H(p, p);
04       }
05
06       int main()
07       {
08         H(D,D);
09         return 0;
10       }
What we see is that the only property of D that is used is that
it is a parameter duplicator. (Is that why it is called D?). H
needs 2 parameters, but it can be given only one input
parameter, so the parameter duplicator is required to allow H
to decide about itself.
Of the infinite set of H that simulate at least one step, none
of them, when simulated by H, halts, because none of them
reaches its final state. Olcott's claim is equivalent to the
claim of non-halting behaviour of H.
This means that a simulating halt-decider is a bad idea,
because the decider itself does not halt.
Not at all.
    A simulator is an x86 emulator that correctly emulates 1 to N of the
    x86 instructions of D in the order specified by the x86 instructions
    of D. This may include M recursive emulations of H emulating itself
    emulating D.
    This means that D cannot possibly reach its own line 06 and halt
    in any finite steps of correct simulation. H is free to halt at
    any time after these N finite steps of correct simulation.
D does not reach it own line 04 because the simulation of H does
not return to D. So, it shows that the simulation of H does not
reach it final state, which proves that H does not halt.
Your transformation would have been acceptable if you retained the
fact that H is a pure function that always halts and returns some value.
Since H is required to halt, but H shows that H does not halt
(because the simulation of H never reaches its final state), the
conclusion must be that there is no such H.
 >
When D correctly simulated by pure simulator H remains stuck in infinite
recursive simulation then we also know that D never reaches its own line
06 and halts in less than an infinite number of correctly simulated
steps.
This is what I had in mind all along. Because I am a relatively terrible
communicator it takes me a very long time to translate my intuitions
into simple words.
typedef int (*ptr)();  // ptr is pointer to int function in C
00       int H(ptr p, ptr i);
01       int D(ptr p)
02       {
03         return H(p, p);
04       }
05
06       int main()
07       {
08         H(D,D);
09         return 0;
10       }
We see that the requirements for H are contradictory.
*Not at all, I just did not explain us clearly enough*
When we hypothesize that H is a pure simulator we see that D correctly
... we see that H correctly ...
Post by olcott
simulated by pure simulator H remains stuck in recursive simulation thus
never reaches its own simulated final state at its line 06 and halts. In
(the line 06 is different in my example)
Post by olcott
this case H does not halt, thus is neither a pure function nor a
decider.
 From this we correctly conclude that D correctly simulated by pure
... we correctly conclude that H correctly simulated by ...
Post by olcott
function H never reaches its simulated final state at its own line 06
(The line 06 is different in my example)
Post by olcott
and halts in Less than an infinite (AKA finite) number of simulated
https://en.wikipedia.org/wiki/Googolplex
When pure function H correctly simulates a Googolplex ^ Googolplex
number of steps of D, then D never reaches its simulated final state
... of H, then H never reaches its simulated final state
Post by olcott
at its own line 06 and halts. Pure function H halts after this finite
(The line 06 is different in my example)
Post by olcott
number of steps of correct simulation.
The simulation of H never reaches its final state. Whether the direct
execution of H halts is the wrong question.
typedef int (*ptr)(); // ptr is pointer to int function in C
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 }


No it is not the wrong question.
D correctly simulated by pure simulator H never reaches it own simulated
final state at line 06 and halts and H does not halt.

D correctly simulated by pure function H never reaches it own simulated
final state at line 06 and halts and H does halt.

The reason it is not the wrong question that all deciders must halt.
Post by Fred. Zwarts
Post by olcott
In other words when the *INPUT* to H(D,D) is correctly simulated by
either pure simulator H or pure function H this correctly simulated
*INPUT* never halts no matter what, thus the INPUT to H(D,D) is
definitely non halting.
D is non halting, because the simulation of H does not reach its final
state and therefore does not return to D. So, the hypothesis that H is a
pure simulator that halts turns out to be
A claim that I never made.
Post by Fred. Zwarts
contradictory because the
simulation of H shows that H does not reach its final state, so, no such
H exists.
H is a pure simulator or a pure function.
D correctly simulated by pure function H never reaches it own simulated
final state at line 06 and halts and H does halt.

The reason for needing the pure simulator H is to see that D correctly
simulated by H never reaches its own final state and halts UNDER ANY
CIRCUMSTANCES.

When D have For 1 to ∞ steps correctly simulated by some H then D never
reaches its own final state at line 06 and halts.

When H is a pure simulator then H does not halt.
When H is a pure function then H halts.
In none of these cases does D simulated by H halt.
Post by Fred. Zwarts
Post by olcott
*This is STEP ONE of my four step proof*
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Chris M. Thomasson
2024-05-28 20:11:33 UTC
Permalink
On 5/28/2024 7:11 AM, olcott wrote:
[...]
Post by olcott
H is a pure simulator or a pure function.
[...]
Can you show us a little pseudo code for H?
olcott
2024-05-28 22:12:31 UTC
Permalink
Post by Chris M. Thomasson
[...]
Post by olcott
H is a pure simulator or a pure function.
[...]
Can you show us a little pseudo code for H?
Just assume that H is an x86 emulator that emulates
its input function with the input to this function.
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
tTh
2024-05-29 01:53:35 UTC
Permalink
Post by olcott
Post by Chris M. Thomasson
[...]
Post by olcott
H is a pure simulator or a pure function.
[...]
Can you show us a little pseudo code for H?
Just assume that H is an x86 emulator that emulates
its input function with the input to this function.
Why specially a x86 ? Why not a Sparc or a 68k ?
--
+---------------------------------------------------------------------+
| https://tube.interhacker.space/a/tth/video-channels |
+---------------------------------------------------------------------+
olcott
2024-05-29 02:15:39 UTC
Permalink
Post by olcott
Post by Chris M. Thomasson
[...]
Post by olcott
H is a pure simulator or a pure function.
[...]
Can you show us a little pseudo code for H?
Just assume that H is an x86 emulator that emulates
its input function with the input to this function.
   Why specially a x86 ? Why not a Sparc or a 68k ?
To make it 100% concrete so that no one can say I am being
too vague and that is what the fully operational H does.
Also I know x86 very well since it was new.
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Chris M. Thomasson
2024-05-29 03:05:39 UTC
Permalink
Post by olcott
Post by olcott
Post by Chris M. Thomasson
[...]
Post by olcott
H is a pure simulator or a pure function.
[...]
Can you show us a little pseudo code for H?
Just assume that H is an x86 emulator that emulates
its input function with the input to this function.
    Why specially a x86 ? Why not a Sparc or a 68k ?
To make it 100% concrete so that no one can say I am being
too vague and that is what the fully operational H does.
Also I know x86 very well since it was new.
too vague? Oh that is rich.
olcott
2024-05-29 03:29:27 UTC
Permalink
Post by Chris M. Thomasson
Post by olcott
Post by olcott
Post by Chris M. Thomasson
[...]
Post by olcott
H is a pure simulator or a pure function.
[...]
Can you show us a little pseudo code for H?
Just assume that H is an x86 emulator that emulates
its input function with the input to this function.
    Why specially a x86 ? Why not a Sparc or a 68k ?
To make it 100% concrete so that no one can say I am being
too vague and that is what the fully operational H does.
Also I know x86 very well since it was new.
too vague? Oh that is rich.
I had to start specifying the x86 language because dozens of reviewers
believed that D correctly simulated by H was supposed to report on the
behavior of non-input: int main() { D(D); }

It was only that I could show that this would require simulating
the x86 instructions of D incorrectly or in the wrong order that
I could prove that they were wrong. Their mistake was my primary
rebuttal for two years.
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
olcott
2024-05-29 03:33:29 UTC
Permalink
Post by olcott
Post by Chris M. Thomasson
Post by olcott
Post by olcott
Post by Chris M. Thomasson
[...]
Post by olcott
H is a pure simulator or a pure function.
[...]
Can you show us a little pseudo code for H?
Just assume that H is an x86 emulator that emulates
its input function with the input to this function.
    Why specially a x86 ? Why not a Sparc or a 68k ?
To make it 100% concrete so that no one can say I am being
too vague and that is what the fully operational H does.
Also I know x86 very well since it was new.
too vague? Oh that is rich.
I had to start specifying the x86 language because dozens of reviewers
believed that D correctly simulated by H was supposed to report on the
behavior of non-input: int main() { D(D); }
It was only that I could show that this would require simulating
the x86 instructions of D incorrectly or in the wrong order that
I could prove that they were wrong.
*This mistake of theirs was the key rebuttal of my work for two years*
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Chris M. Thomasson
2024-05-29 04:54:26 UTC
Permalink
[...]
Post by olcott
Post by Chris M. Thomasson
too vague? Oh that is rich.
I had to start specifying the x86 language because dozens of reviewers
believed that D correctly simulated by H was supposed to report on the
behavior of non-input: int main() { D(D); }
It was only that I could show that this would require simulating
the x86 instructions of D incorrectly or in the wrong order that
I could prove that they were wrong. Their mistake was my primary
rebuttal for two years.
How do you simulate cmpxchg8b?
olcott
2024-05-29 12:56:30 UTC
Permalink
Post by Chris M. Thomasson
[...]
Post by olcott
Post by Chris M. Thomasson
too vague? Oh that is rich.
I had to start specifying the x86 language because dozens of reviewers
believed that D correctly simulated by H was supposed to report on the
behavior of non-input: int main() { D(D); }
It was only that I could show that this would require simulating
the x86 instructions of D incorrectly or in the wrong order that
I could prove that they were wrong. Their mistake was my primary
rebuttal for two years.
How do you simulate cmpxchg8b?
(1) Third party software does the emulation
(2) The code generated by my compiler never uses that
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
olcott
2024-05-29 13:34:43 UTC
Permalink
Post by Chris M. Thomasson
[...]
Post by olcott
Post by Chris M. Thomasson
too vague? Oh that is rich.
I had to start specifying the x86 language because dozens of reviewers
believed that D correctly simulated by H was supposed to report on the
behavior of non-input: int main() { D(D); }
It was only that I could show that this would require simulating
the x86 instructions of D incorrectly or in the wrong order that
I could prove that they were wrong. Their mistake was my primary
rebuttal for two years.
How do you simulate cmpxchg8b?
That is not an x86 instruction it is an x64 instruction
https://phoenixnap.com/kb/x64-vs-x86

https://www.felixcloutier.com/x86/cmpxchg8b:cmpxchg16b
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Chris M. Thomasson
2024-05-29 18:51:39 UTC
Permalink
Post by olcott
Post by Chris M. Thomasson
[...]
Post by olcott
Post by Chris M. Thomasson
too vague? Oh that is rich.
I had to start specifying the x86 language because dozens of reviewers
believed that D correctly simulated by H was supposed to report on the
behavior of non-input: int main() { D(D); }
It was only that I could show that this would require simulating
the x86 instructions of D incorrectly or in the wrong order that
I could prove that they were wrong. Their mistake was my primary
rebuttal for two years.
How do you simulate cmpxchg8b?
That is not an x86 instruction it is an x64 instruction
https://phoenixnap.com/kb/x64-vs-x86
You are wrong. cmpxchg8b is an x86 instruction. A 64-bit DWCAS on a
32-bit system.
Post by olcott
https://www.felixcloutier.com/x86/cmpxchg8b:cmpxchg16b
olcott
2024-05-29 19:16:27 UTC
Permalink
Post by Chris M. Thomasson
Post by olcott
Post by Chris M. Thomasson
[...]
Post by olcott
Post by Chris M. Thomasson
too vague? Oh that is rich.
I had to start specifying the x86 language because dozens of reviewers
believed that D correctly simulated by H was supposed to report on the
behavior of non-input: int main() { D(D); }
It was only that I could show that this would require simulating
the x86 instructions of D incorrectly or in the wrong order that
I could prove that they were wrong. Their mistake was my primary
rebuttal for two years.
How do you simulate cmpxchg8b?
That is not an x86 instruction it is an x64 instruction
https://phoenixnap.com/kb/x64-vs-x86
You are wrong. cmpxchg8b is an x86 instruction. A 64-bit DWCAS on a
32-bit system.
OK great. I am wrong about a detail totally unrelated to my work.
The details related to my work I am correct and checked every which
way many hundreds of times.

The only detail relevant to this group is STEP ONE of my four step proof.

typedef int (*ptr)(); // ptr is pointer to int function in C
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 either pure simulator H or pure function H. This
was done because many reviewers used the shell game ploy to endlessly
switch which H/D pair was being referred to.

H correctly simulates 1 to ∞ steps of D with either pure function H or
pure simulator H. In none of these cases does the correctly simulated D
ever reach its own simulated final state and halt.

*In actual finite memory C the H/D pair would eventually crash*

*Correct Simulation Defined*
This is provided because many reviewers had a different notion of
correct simulation that diverges from this notion.

A simulator is an x86 emulator that correctly emulates 1 to N of the
x86 instructions of D in the order specified by the x86 instructions
of D. This may include M recursive emulations of H emulating itself
emulating D.

*Fully operational code proves recursive emulation*

When we see that D correctly simulated by pure simulator H would remain
stuck in infinite recursive simulation then we also know that less than
an infinite number of steps is not enough steps for D correctly
simulated by pure function H to reach its own simulated final state at
line 06 and halt.
--
Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer
Chris M. Thomasson
2024-05-29 18:59:45 UTC
Permalink
Post by olcott
Post by Chris M. Thomasson
[...]
Post by olcott
Post by Chris M. Thomasson
too vague? Oh that is rich.
I had to start specifying the x86 language because dozens of reviewers
believed that D correctly simulated by H was supposed to report on the
behavior of non-input: int main() { D(D); }
It was only that I could show that this would require simulating
the x86 instructions of D incorrectly or in the wrong order that
I could prove that they were wrong. Their mistake was my primary
rebuttal for two years.
How do you simulate cmpxchg8b?
That is not an x86 instruction it is an x64 instruction
https://phoenixnap.com/kb/x64-vs-x86
https://www.felixcloutier.com/x86/cmpxchg8b:cmpxchg16b
Why do you say that its an x64 instruction? cmpxchg8b is on IA-32. I
used it all the time back in the day. Here is some of my old assembly
code for a DWCAS. By the way, DWCAS means double-width compare-and-swap:

https://web.archive.org/web/20060214112539/http://appcore.home.comcast.net/appcore/src/cpu/i686/ac_i686_masm_asm.html

__________________
align 16
np_ac_i686_atomic_dwcas_fence PROC
push esi
push ebx
mov esi, [esp + 16]
mov eax, [esi]
mov edx, [esi + 4]
mov esi, [esp + 20]
mov ebx, [esi]
mov ecx, [esi + 4]
mov esi, [esp + 12]
lock cmpxchg8b qword ptr [esi]
jne np_ac_i686_atomic_dwcas_fence_fail
xor eax, eax
pop ebx
pop esi
ret

np_ac_i686_atomic_dwcas_fence_fail:
mov esi, [esp + 16]
mov [esi + 0], eax;
mov [esi + 4], edx;
mov eax, 1
pop ebx
pop esi
ret
np_ac_i686_atomic_dwcas_fence ENDP
__________________


It's prototype is:

http://appcore.home.comcast.net/appcore/include/cpu/i686/ac_i686_h.html

__________________
AC_SYS_APIEXPORT
int AC_CDECL
np_ac_i686_atomic_dwcas_fence
( void*,
void*,
const void* );
__________________
Chris M. Thomasson
2024-05-29 19:09:57 UTC
Permalink
On 5/29/2024 11:59 AM, Chris M. Thomasson wrote:
[...]
Post by Chris M. Thomasson
Why do you say that its an x64 instruction? cmpxchg8b is on IA-32. I
used it all the time back in the day. Here is some of my old assembly
https://web.archive.org/web/20060214112539/http://appcore.home.comcast.net/appcore/src/cpu/i686/ac_i686_masm_asm.html
[...]
Post by Chris M. Thomasson
http://appcore.home.comcast.net/appcore/include/cpu/i686/ac_i686_h.html
Oops! wrong link:

https://web.archive.org/web/20060214112519/http://appcore.home.comcast.net/appcore/include/cpu/i686/ac_i686_h.html

Sorry about that. Ugggh. ;^o
Post by Chris M. Thomasson
__________________
AC_SYS_APIEXPORT
int AC_CDECL
np_ac_i686_atomic_dwcas_fence
( void*,
  void*,
  const void* );
__________________
Loading...