Sujet : Re: Every D correctly simulated by H cannot possible reach its own line 06 and halt
De : richard (at) *nospam* damon-family.org (Richard Damon)
Groupes : comp.theory sci.logicDate : 21. May 2024, 02:57:33
Autres entêtes
Organisation : i2pn2 (i2pn.org)
Message-ID : <v2grht$1kiah$7@i2pn2.org>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
User-Agent : Mozilla Thunderbird
On 5/20/24 2:01 PM, olcott wrote:
On 5/20/2024 6:24 AM, Richard Damon wrote:
On 5/19/24 11:32 PM, olcott wrote:
On 5/19/2024 10:24 PM, Richard Damon wrote:
On 5/19/24 11:09 PM, olcott wrote:
On 5/19/2024 8:10 PM, Richard Damon wrote:
On 5/19/24 8:06 PM, olcott wrote:
On 5/1/2024 7:10 PM, Richard Damon wrote:
>
typedef int (*ptr)(); // ptr is pointer to int function
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 }
>
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.
>
For every H/D pair of the above template D correctly simulated by
*pure function* H cannot possibly reach its own final state at
line 06 and halt.
>
>
Ok, so adding that H is a pure function, that means that since your outer H(D,D) is going to return 0, all logic must be compatible with the fact that EVERY call to H(D,D) will also eventually return 0.
>
>
Remember also, THIS D is defined to call THIS H, that does exactly the same as the H that is deciding it.
>
>
<snip so that Message ID links to whole message>
We can use my unique time/date stamp as an alternative.
>
Remember, YOU are the one saying you are needing to change the definition from the classical theory, where we have things well defined.
>
YOU have decider that H is just whatever C code you want to write for it, and D is the input proved. (which doesn't actually match the Linz or Sipser proof, but fairly close).
>
With THAT set of definitions we have a lot of options that break your incorrectly assumed results.
>
The first method has been discussed here by Flibble. While the final answer he got to doesn't fit the requirements, the first part of the method DOES show that it is possible for an H to simulate to past line 3.
>
THe basic idea is that if H(M,d) finds that its simulation of M(d) get to a call to H(M,d) then rather that your idea of just saying it will get stuck and declair the input invalid, since there ARE a number of possible inputs that there is a "correct" answer that H can give to
>
That D is calling H does not prove recursive simulation.
That D is calling H with its same parameters does seem
to prove non-halting recursive simulation.
>
Nope. Try to actuall PROVE it.
>
I am using categorically exhaustive reasoning that can work
through every possibility that can possibly exist in a feasible
amount of time as long as the category is very very narrow.
>
What "Category", we have a specified H and an SPECIFIED D.
>
The question is not, can H simulate D to the end, the question is does D halt.
>
>
*The subject is in the subject line you diverged, please try again*
*The subject is in the subject line you diverged, please try again*
*The subject is in the subject line you diverged, please try again*
>
>
And since YOU brought up the diversion, I just asked you to define it.
>
typedef int (*ptr)(); // ptr is pointer to int function
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 }
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);
keeps repeating (unless aborted)
Line 01:
Line 02:
Line 03: simulated D(D) invokes simulated H(D,D) that simulates D(D)
Simulation invariant:
D correctly simulated by H cannot possibly reach past its own line 03.
For every H/D pair of the above template D correctly simulated by pure function (thus computable function) H cannot possibly reach its own final state at line 06 and halt.
But a computable function is not a pure function, and the comparion is just a type error.
A "Computable Function" as a mathematic concept which represent a mathematical mapping of input to output.
Your program is the "algorith" that computes that mapping. It is NOT the mapping itself.
And, the "Flibble" structure can correctly simulate the code in D (given the assumption that you can detect D calling H(D,D) like you H does) to the point of determing that there is no answer that H can give to be correct. It thus can handle the non-contradictory version of D, that your H will just give up on.
Your H deteremines that YOUR H doesn't halt, so proves that it can't be a halt decider. (Either H doesn't actually halt, or it lies and gives the wrong answer).