On 7/14/2024 3:37 AM, Mikko wrote:
On 2024-07-13 12:44:50 +0000, olcott said:
On 7/13/2024 3:12 AM, Mikko wrote:
On 2024-07-12 13:35:34 +0000, olcott said:
On 7/12/2024 4:08 AM, Mikko wrote:
In that situation you should use the symobls HHH₁, HHH₂, HHH₃, ... >>>>>> so that you can use HHHᵢ when you say aothing about every one of >>>>>> them.
And the one more symbols for the one that runs forever.
I did not want to say it as verbosely as that, yet your suggestion
would be clearer.
For honest purposes clearer would be better. But understand that
different purposes mean different priorities.
I made it clearer using your suggestions.
Where is that clearer presentations?
And they should
not be defined to run DDD but whatever input is given.
I certainly can't do that. People here use every excuse
they can to change the subject and then stay on this
changed subject and never get back to the point.
Of course you can and should. No reason to expect them to protest less >>>> if you make more errors.
My current paper examines these three inputs at the C
source-code level in the simplest one first order.
void Infinite_Loop()
{
HERE: goto HERE;
}
void Infinite_Recursion()
{
Infinite_Recursion();
}
void DDD()
{
HHH(DDD);
}
It then examines the simplest possible pathological input
above at the assembly language level.
Going to the assembly langage level does not add anything if the code
of HHH is not shown.
Going to the assembly language level provides a directed
graph of control flow. It also shows the final state that
is not shown at the C level. Can't reach the final state
is what not halting means.
That HHH simulates at the machine langage level
does not alter the fact that the behaviour it simulates is the behaviour
of the C code.
Then it moves on to this input showing that its x86 execution
trace is essentially the same as DDD correctly emulated by HHH.
If HHH aborts its simulation and never simulates the return from HHH or
anything past that point then it does not matter what the behaour after
point is. This is obvious from the C semantics.
int DD()
{
int Halt_Status = HHH(DD);
if (Halt_Status)
HERE: goto HERE;
return Halt_Status;
}
But the part that HHH never simulates is the part that determines
whether the program returns or not.
The fact that DD remains stuck in recursive simulation is
what determines that DD never halts. Professor Hehner
figured out that part 5 years before me.
From a programmer's point of view, if we apply an
interpreter to a program text that includes a call
to that same interpreter with that same text as
argument, then we have an infinite loop. A halting
program has some of the same character as an interpreter:
it applies to texts through abstract interpretation.
Unsurprisingly, if we apply a halting program to a program
text that includes a call to that same halting program with
that same text as argument, then we have an infinite loop.
(Hehner:2011:15)
[5] E C R Hehner. Problems with the Halting Problem, COMPUTING2011
Symposium on 75 years of Turing Machine and Lambda-Calculus, Karlsruhe Germany, invited, 2011 October 20-21; Advances in Computer Science and Engineering v.10 n.1 p.31-60, 2013
https://www.cs.toronto.edu/~hehner/PHP.pdf
The halt status of DD is differnt
from the halt status of DDD if HHH(DD) returns nonzero. Otherwise
it is the same.
That code is dead code (unreachable) to the simulated DD.
Then the last half of the paper applies these same ideas
to the Peter Linz Turing machine based proof based on this
greatly simplified syntax.
I show that ⟨Ĥ⟩ ⟨Ĥ⟩ simulated by adapted UTM embedded_H has
this same essential pattern as the above two, it remains
stuck in recursive simulation until its input is aborted.
When Ĥ is applied to ⟨Ĥ⟩
Ĥ.q0 ⟨Ĥ⟩ ⊢* embedded_H ⟨Ĥ⟩ ⟨Ĥ⟩ ⊢* Ĥ.qy ∞
Ĥ.q0 ⟨Ĥ⟩ ⊢* embedded_H ⟨Ĥ⟩ ⟨Ĥ⟩ ⊢* Ĥ.qn
This is incorrect. That looks like tree clauses, a subordinate clause and
two main coordinated main clauses. But there should be conjunctions that
show either that the structure really is so or that the intended meaning
is something else.
You have to read everything else that I said about the
above expressions. I already provided the key details
in this proof. I simplified the Linz syntax on the top
of page 3.
https://www.liarparadox.org/Linz_Proof.pdf
On 7/14/2024 3:37 AM, Mikko wrote:
On 2024-07-13 12:44:50 +0000, olcott said:
On 7/13/2024 3:12 AM, Mikko wrote:
On 2024-07-12 13:35:34 +0000, olcott said:
On 7/12/2024 4:08 AM, Mikko wrote:
In that situation you should use the symobls HHH₁, HHH₂, HHH₃, ... >>>>>> so that you can use HHHᵢ when you say aothing about every one of them. >>>>>> And the one more symbols for the one that runs forever.
I did not want to say it as verbosely as that, yet your suggestion
would be clearer.
For honest purposes clearer would be better. But understand that
different purposes mean different priorities.
I made it clearer using your suggestions.
Where is that clearer presentations?
And they should
not be defined to run DDD but whatever input is given.
I certainly can't do that. People here use every excuse
they can to change the subject and then stay on this
changed subject and never get back to the point.
Of course you can and should. No reason to expect them to protest less >>>> if you make more errors.
My current paper examines these three inputs at the C
source-code level in the simplest one first order.
void Infinite_Loop()
{
HERE: goto HERE;
}
void Infinite_Recursion()
{
Infinite_Recursion();
}
void DDD()
{
HHH(DDD);
}
It then examines the simplest possible pathological input
above at the assembly language level.
Going to the assembly langage level does not add anything if the code
of HHH is not shown.
Going to the assembly language level provides a directed
graph of control flow.
It also shows the final state that
is not shown at the C level.
On 7/15/2024 2:25 AM, Mikko wrote:
On 2024-07-14 15:02:33 +0000, olcott said:
Going to the assembly language level provides a directed
graph of control flow.
So does the C level.
A directed graph only uses jmps from one specific
machine address to another. This a node and a path
to another node. The C level has no jmps and no
machine addresses.
It also shows the final state that
is not shown at the C level.
How is that different from the final state that is shown at the C level?
void DDD()
{
HHH(DDD);
}
The C level conflates all of these instructions together
as if there was only one instruction. There is no final
state at C level.
_DDD()
[00002163] 55 push ebp ; housekeeping
[00002164] 8bec mov ebp,esp ; housekeeping
[00002166] 6863210000 push 00002163 ; push DDD
[0000216b] e853f4ffff call 000015c3 ; call HHH(DDD)
[00002170] 83c404 add esp,+04
[00002173] 5d pop ebp
[00002174] c3 ret
Size in bytes:(0018) [00002174]
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 499 |
Nodes: | 16 (2 / 14) |
Uptime: | 53:58:03 |
Calls: | 9,839 |
Files: | 13,764 |
Messages: | 6,194,481 |
Posted today: | 1 |