John McCarthy jmc at steam.Stanford.EDU Sun Oct 8 21:58:51 EDT
2006  A computer program can examine itself unless special means
are taken to prevent it.  Many bugs can be found that way,
although I don't think it is customary.  For example, it might
detect by looking at itself conditions it would divide by zero
and could find the simpler kinds of infinite loops.  Neither
Turing's nor Godel's results say anything to the contrary.  What
a computer cannot have is a program that will always decide
whether a version of itself somehow provided with infinite
memory (say  by asking an operator to mount another tape) will
ever halt.  Programs  that sometimes answer the question are
possible, but Turing proved that a program that will always
answer correctly cannot exist.  There is a finite version of
Turing's result.  We can write a program D that given another
program P, and input for it, and a number n, will answer
correctly whether the program with the given input will halt in
no more than n steps.  The finite vers