The Halting Problem states that it is impossible for one program to predict the output of another, or whether it will terminate.
That got me thinking... how do heuristics based-scanners decide whether a given executable program's instructions are "virus-like", seeing as that would entirely involve predicting what the program is going to do?