Peter said:
It could determine is invocation context before beginning to
derive a result. If it was called within the context of another
TM it could simply halt. It does not even need to write a space
to a specific memory location. It could simply halt.
(See what I mean about thinking it through?)
Hi,
if I understand you correctly, you propose to write a halt analyzer that
refuses to return its result to a caller and instead prints it (say on the
screen). In order to prevent that it is misused as an ordinary halt
analyzer, it will check its calling context. Thereby, as you point out,
your halt analyzer cannot be used to construct the programm that it will
misclassify.
So, your routine has essentially the following form:
void halt_analyzer ( std::string input_programm ) {
// step one: check for calling context
if ( check_if_called_in_compromised_setting() ) {
exit;
}
// step two: analyze the input_programm
bool result;
/*
now, here goes the code that actually analyzed the input_programm
and sets result.
*/
// step three: print, but do not return the result:
if ( result ) {
std::cout << "programm will halt.\n";
else {
std::cout << "programm will not halt.\"
}
}
Let me first remark the following: The routine halt_analyzer itself cannot
be used to construct the Turing counterexample to its correctness. You are
correct on this account.
Now, please consider the following routine:
bool my_devious_copyright_violation ( std::string input_programm ) {
// step two: analyze the input_programm
bool result;
/*
now, here goes the code that actually analyzed the input_programm
and sets result.
*/
return( result );
}
I construct this one from your halt_analyzer by copying step two. I omit
the protection in step one and I replace the printing of step three with a
return of the result. As you know, Turing's argument shows that the routine
my_devious_copyright_violation
cannot analyze all programms correctly. That is, there is a programm P such
that
my_devious_copyright_violation(P) returns true iff P does not halt.
Here is my question: What will halt_analyzer(P) print?
Best
Kai-Uwe Bux