Просто чтобы прояснить ситуацию, нам нужно различать математические функции (я буду называть их функциями, и их часто неисчислимо много, так что они совсем не перечислимы) и функциями, которые вы можете написать: я буду называть их программами или также вычислимыми функциями .
SExEx∈Sx∉SS
Набор всех программ, которые являются общими для конечного набора , перечислим, потому что вы можете написать интерпретатор, который просто запустит программу для всех элементов конечного набора и вернет «да», если все они завершаются. (Но не вижу, если кто-то из них не делает)
Ваш профессор сказал, что набор всех программ, которые являются суммарными на бесконечном множестве , не перечисляем, потому что вы не можете просто запустить свою программу на бесконечном количестве элементов.
Но это не значит, что это плохо
Например, набор, если все программы, которые доказуемо полны, является перечислимым, потому что вы можете перечислить все доказательства и механически проверить, доказывают ли они, что ваша программа полна.
Даже перечислимый набор не будет практичным, потому что вам, возможно, придется ждать вечно, не будучи уверенным, что процедура прекратится однажды. Я не вижу, как использовать программы, которые перечисляют все общие функции ...
Есть некоторые языки программирования, в которых все, что вы пишете, гарантированно заканчивается только статической типизацией! Есть даже такие, которые гарантируют вам полиномиальную оценку. На данный момент они в основном академические, их написание, вероятно, заставит вас чувствовать больше ограничений, чем на Python, но над этим работает много исследователей.
Итак, чтобы ответить на ваш вопрос: в некотором смысле, да. Потенциальное отсутствие завершения необходимо, чтобы быть полным по Тьюрингу (самая высокая вычислительная мощность на данный момент). Но я не считаю, что это имеет непосредственное отношение к тому факту, что все функции перечислимы или нет. Вы все еще можете написать все программы!