R
Roedy Green
The proof that the halting problem is insoluble has discouraged any
sort work on static analysing what computer programs will do.
What if the problem were reformulated like this:
The input to the detector is a Java program, syntactically valid. The
output is :
1. definitely halts
2. definitely does not halt
3. can't tell
Obviously such a program CAN be written. The question is how high
quality is such a detector?
What counts is the percentage of real-life programs that fall in
category 1 or 2.
It does not really matter how it fairs with pathological constructions
favoured of mathematicians.
There is some research in this area, going on in the name of code
optimisation, where you do analysis on a fairly local basis.
You might imagine a compiler warning you of parts of your program
where you have created an endless loop or endless recursion under some
unusual run time conditions. It would not necessarily catch
everything, but it might catch something.
sort work on static analysing what computer programs will do.
What if the problem were reformulated like this:
The input to the detector is a Java program, syntactically valid. The
output is :
1. definitely halts
2. definitely does not halt
3. can't tell
Obviously such a program CAN be written. The question is how high
quality is such a detector?
What counts is the percentage of real-life programs that fall in
category 1 or 2.
It does not really matter how it fairs with pathological constructions
favoured of mathematicians.
There is some research in this area, going on in the name of code
optimisation, where you do analysis on a fairly local basis.
You might imagine a compiler warning you of parts of your program
where you have created an endless loop or endless recursion under some
unusual run time conditions. It would not necessarily catch
everything, but it might catch something.