XPost: comp.theory, sci.logic, sci.math
On 11/25/2021 11:49 PM, André G. Isaak wrote:
On 2021-11-25 22:06, olcott wrote:
On 11/25/2021 10:35 PM, André G. Isaak wrote:
On 2021-11-25 21:23, olcott wrote:
On 11/25/2021 9:15 PM, André G. Isaak wrote:
Do you not understand the difference between a SPECIFICATION and an
IMPLEMENTATION?
I have been giving you the specification of the halting problem,
i.e. a description of *exactly* which problem a halt decider must
solve. How you go about solving it is the implementation.
The halt decider H(x,y) does not simply take a pair of finite string
inputs and then make a good guess about whether this input reaches
its final state or not.
Nobody ever claimed otherwise. However, it must do this in a way that
actually conforms to the specification of the problem given below.
That means that if the input is a description of P(P), it must map to
'halts'.
Halt decider H must derive a formal proof of the behavior of (x,y)
based on the sequence of configurations from x.q0 to x.qn.
No.
A halt decider accepts or rejects a computation based on whether it
halts. It doesn't derive a formal proof, anymore than a program which
adds two numbers derives a formal proof. It just returns a sum.
You keep accusing people of 'vagueness' for not specifying these
steps, but bear in mind that Linz's H and H_Hat, aren't Turing
Machines, they are *variables* ranging over classes of Turing
Machines, and the whole point of his proof is to show that those
classes are *empty*. You can't specify the specific steps involved in
a nonexistent computation.
That is why I derived the 100% complete specificity of H/P.
My H/P <is> the (Strachey:1965) T/P
rec routine P
§L:if T[P] go to L
Return §
Strachey, C 1965. An impossible program The Computer Journal, Volume
7, Issue 4, January 1965, Page 313,
https://doi.org/10.1093/comjnl/7.4.313
How is Stratchey's code any more 'completely specified' than Linz? He
simply describes what T *does*. He doesn't provide a single line of code describing how it does it. Just as in the Linz proof, his T is a
*variable* ranging over an (empty) class of programs.
H(P,P) derives its formal proof of the behavior of its input based on
the x86 emulation of the machine code of its input from the start
state of P though N steps of P.
That you expect H to somehow imagine what you mean by the direct
execution of P(P) is ridiculous.
What I mean by 'the direct execution of P(P)' is completely unambiguous
and is part of the halting problem's specification. H doesn't have to
imagine anything. YOU, as the programmer, have to ensure that the answer
it gives reflects the behaviour of int main { P(P); } since that is how
the halting problem is DEFINED.
It is a formal proof that already has every single step completely
specified.
Where is this 'formal proof' of which you speak?
The formal proof that I mean is every single step of the behavior of the
input that leads to the last instruction of this input or some kind of repeating cycle.
_H()
[00001a5e](01) 55 push ebp
[00001a5f](02) 8bec mov ebp,esp
[00001a61](03) 8b450c mov eax,[ebp+0c]
[00001a64](01) 50 push eax // push P
[00001a65](03) ff5508 call dword [ebp+08] // call P
[00001a68](03) 83c404 add esp,+04
[00001a6b](05) b801000000 mov eax,00000001
[00001a70](01) 5d pop ebp
[00001a71](01) c3 ret
Size in bytes:(0020) [00001a71]
_P()
[00001a7e](01) 55 push ebp
[00001a7f](02) 8bec mov ebp,esp
[00001a81](03) 8b4508 mov eax,[ebp+08]
[00001a84](01) 50 push eax // push P
[00001a85](03) 8b4d08 mov ecx,[ebp+08]
[00001a88](01) 51 push ecx // push P
[00001a89](05) e8d0ffffff call 00001a5e // call H
[00001a8e](03) 83c408 add esp,+08
[00001a91](05) b801000000 mov eax,00000001
[00001a96](01) 5d pop ebp
[00001a97](01) c3 ret
Size in bytes:(0026) [00001a97]
_main()
[00001a9e](01) 55 push ebp
[00001a9f](02) 8bec mov ebp,esp
[00001aa1](05) 687e1a0000 push 00001a7e // push P
[00001aa6](05) 687e1a0000 push 00001a7e // push P
[00001aab](05) e8aeffffff call 00001a5e // call H
[00001ab0](03) 83c408 add esp,+08
[00001ab3](02) 33c0 xor eax,eax
[00001ab5](01) 5d pop ebp
[00001ab6](01) c3 ret
Size in bytes:(0025) [00001ab6]
machine stack stack machine assembly
address address data code language
======== ======== ======== ========= ============= [00001a9e][00102ec8][00000000] 55 push ebp [00001a9f][00102ec8][00000000] 8bec mov ebp,esp [00001aa1][00102ec4][00001a7e] 687e1a0000 push 00001a7e // push P [00001aa6][00102ec0][00001a7e] 687e1a0000 push 00001a7e // push P [00001aab][00102ebc][00001ab0] e8aeffffff call 00001a5e // call H [00001a5e][00102eb8][00102ec8] 55 push ebp [00001a5f][00102eb8][00102ec8] 8bec mov ebp,esp [00001a61][00102eb8][00102ec8] 8b450c mov eax,[ebp+0c] [00001a64][00102eb4][00001a7e] 50 push eax // push P [00001a65][00102eb0][00001a68] ff5508 call dword [ebp+08] // call P [00001a7e][00102eac][00102eb8] 55 push ebp [00001a7f][00102eac][00102eb8] 8bec mov ebp,esp [00001a81][00102eac][00102eb8] 8b4508 mov eax,[ebp+08] [00001a84][00102ea8][00001a7e] 50 push eax // push P [00001a85][00102ea8][00001a7e] 8b4d08 mov ecx,[ebp+08] [00001a88][00102ea4][00001a7e] 51 push ecx // push P [00001a89][00102ea0][00001a8e] e8d0ffffff call 00001a5e // call H [00001a5e][00102e9c][00102eac] 55 push ebp [00001a5f][00102e9c][00102eac] 8bec mov ebp,esp [00001a61][00102e9c][00102eac] 8b450c mov eax,[ebp+0c] [00001a64][00102e98][00001a7e] 50 push eax // push P [00001a65][00102e94][00001a68] ff5508 call dword [ebp+08] // call P [00001a7e][00102e90][00102e9c] 55 push ebp [00001a7f][00102e90][00102e9c] 8bec mov ebp,esp [00001a81][00102e90][00102e9c] 8b4508 mov eax,[ebp+08] [00001a84][00102e8c][00001a7e] 50 push eax // push P [00001a85][00102e8c][00001a7e] 8b4d08 mov ecx,[ebp+08] [00001a88][00102e88][00001a7e] 51 push ecx [00001a89][00102e84][00001a8e] e8d0ffffff call 00001a5e // call H [00001a5e][00102e80][00102e90] 55 push ebp [00001a5f][00102e80][00102e90] 8bec mov ebp,esp [00001a61][00102e80][00102e90] 8b450c mov eax,[ebp+0c] [00001a64][00102e7c][00001a7e] 50 push eax // push P [00001a65][00102e78][00001a68] ff5508 call dword [ebp+08] // call P [00001a7e][00102e74][00102e80] 55 push ebp [00001a7f][00102e74][00102e80] 8bec mov ebp,esp [00001a81][00102e74][00102e80] 8b4508 mov eax,[ebp+08] [00001a84][00102e70][00001a7e] 50 push eax // push P [00001a85][00102e70][00001a7e] 8b4d08 mov ecx,[ebp+08] [00001a88][00102e6c][00001a7e] 51 push ecx // push P [00001a89][00102e68][00001a8e] e8d0ffffff call 00001a5e // call H
A turing machine program consists of a list of 'quintuples', each one of
which is a five-symbol turing machine instruction. For example, the
quintuple 'SCcsm' is executed by the machine if it is in state 'S' and
is reading the symbol 'C' on the tape. In that case, the instruction
causes the machine to make a transition to state 's' and to overwrite
the symbol 'C' on the tape with the symbol 'c'. The last operation it
performs under this instruction is to move the tape reading head one
symbol to the left or right according to whether 'm' is 'l' or 'r'.
http://www.lns.mit.edu/~dsw/turing/doc/tm_manual.txt
The input to H(x,y) is a finite string pair where x is a list of
quintuples of Turing machine instructions and y is a finite string.
The formal proof of the behavior of N steps of x applied to y is the
sequence of configurations derived when a UTM is applied to x on input y
for N steps of configurations.
Do you even know what a formal proof is?
I am defining it more broadly as every inference step in sound deduction leading to a true conclusion.
The sequence of configurations of the direct execution or correct
simulation of a computation beginning at its start state through N steps
of configurations is the complete formal proof of the behavior of N
steps of x.
André
--
Copyright 2021 Pete Olcott
Talent hits a target no one else can hit;
Genius hits a target no one else can see.
Arthur Schopenhauer
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)