Now Consider:
int HALTS(P,I) {
// <
body of supposed halts program>
}
void main()
{
char *program;
mscanf("%s",&program);
if ( HALTS(program,program) == 1)
while (1) {} // loop forever
}
Call this diagonal.c and run it as
diagonal
< diagonal.c