HELP HALTS K. Goedel, 1930
LIB HALTS
The POP-11 procedure HALTS takes two arguments, a POP-11 procedure and some
other object. The first argument, the procedure, is expected to be a procedure
that takes one argument. HALTS succeeds if, when applied to the other object,
the computation of the procedure would terminate. Hence:
halts(pr,"apple") =>
** <true>
define loop(x);
repeat forever x => endrepeat
enddefine;
halts(loop, "apple") =>
** <false>
HALTS can be used to define some quite useful procedures. For instance,
define niceproc(x);
if halts(x,x) then
repeat forever x => endrepeat
endif
enddefine;
It is left as an exercise to the reader what result is printed out by:
halts(niceproc, niceproc) =>Author: K. Goedel, 1930