Потому что почти каждый вопрос о поведении программ неразрешим. По теореме Райс , любая задача решения вида:
Некоторые программы вычисляют функции, которые имеют это свойство, другие программы вычисляют функции, которые не имеют этого свойства. Имеет ли программа P заданную выше функцию для данной программы P, или нет?
неразрешима. Так, например, вы не всегда можете отличить код, который вычисляет квадрат ввода от кода, который этого не делает. Хотя в простых случаях часто можно доказать, что функция делает или не делает, нет общей процедуры, которая работает для всей программы.
Почти любой интересный поведенческий инвариант подпадает под теорему Райса, поскольку эти утверждения редко (если вообще когда-либо) говорят о том, как метод выглядит внутренне, только о том, что он возвращает и какие побочные эффекты он вызывает в ответ на определенные входные данные.