Peter Olcott said:
I can't see why everyone continues to bring up this same point.
It is not any form a valid refutation. It is exactly and precisely
like saying that since it is possible to smash a computer with a
sledge hammer, therefore no computer can be said to ever run
any programs. If you don't see that this is exactly the same reasoning
then please provide the precise point where the analogy fails to
coincide, and why it fails to coincide.
As soon as you begin providing the results to the calling function,
you have added an error to the original program.
Everyone keeps bring up that point because your last assertion is bollocks.
To produce the contradictory input source, one can take the logic from the
source code of the analyzer and use it to construct input that will cause it
to contradict its own logic. You have supposedly taken the ability to
construct that source away by making trivial modifications to the analyzer
and claiming that removing them causes the contradiction to not hold, as if
it were necessary for the input to contain a verbatim copy of the analyzer's
source code to show the contradiction.
In other words, nobody in their right mind would claim that the transition
from
void WillHalt(string SourceCode, string InputData)
{
if (TheProgramWillHalt(SourceCode, InputData))
SecureOutput("The Program Will Halt");
else if (TheProgramWillNotHalt(SourceCode, InputData))
SecureOutput("The Program Will Not Halt");
else // This code never gets executed if the solution is properly
implemented
SecureOutput("Security Has Been Breached, Take Corrective Action");
}
to
int WillHalt(string SourceCode, string InputData)
{
if (TheProgramWillHalt(SourceCode, InputData)) {
SecureOutput("The Program Will Halt");
return TRUE;
}
else if (TheProgramWillNotHalt(SourceCode, InputData)) {
SecureOutput("The Program Will Not Halt");
return FALSE;
}
else { // This code never gets executed if the solution is properly
implemented
SecureOutput("Security Has Been Breached, Take Corrective Action");
return UNKNOWN;
}
}
somehow adds an error into the analyzer that causes the return values to not
correlate with the output statements from the previous version.
Your sledgehammer analogy is flawed because the modification does not cause
your analyzer to malfunction.
BTW, the answer to (3) on halting-problem.com makes little sense to me.
Perhaps supplying an introduction and using two different names for the
bool-returning and void-returning method would be better.