Para ser claros, necesitamos distinguir las funciones matemáticas (las llamaré funciones y, a menudo, son incontables, por lo que no son enumerables) y funciones que puede escribir: las llamaré programas o también funciones computables .
Un subconjunto de un conjunto numerable E se llama computable si hay un programa que, dado un elemento x de E responde "sí" si x ∈ S y "no" si x ∉ S . (Y siempre tiene que responder algo) Un conjunto se llama recursivamente enumerable si el programa está autorizado a no responder en lugar de decir "no". (es equivalente a requerir que el programa imprima todos los elementos de S en cualquier orden)SmiXmix ∈ Sx ∉ SS
El conjunto de todos los programas que son totales en un conjunto finito es enumerable porque puede escribir un intérprete que simplemente ejecute el programa en todos los elementos del conjunto finito y devuelva "sí" si todos terminan. (Pero no puedo ver si alguno de ellos no)
Su profesor dijo que el conjunto de todos los programas que son totales en un conjunto infinito no es enumerable porque no puede simplemente ejecutar su programa en un número infinito de elementos.
Pero esto no significa que esto sea malo:
Por ejemplo, el conjunto si todos los programas que son demostrablemente totales es enumerable porque puede enumerar todas las pruebas y verificar mecánicamente si prueban que su programa es total.
Incluso un conjunto enumerable no sería práctico, ya que es posible que tenga que esperar para siempre sin estar seguro de si el procedimiento finalizaría algún día. No veo cómo usar un programa que enumere todas las funciones totales ...
¡Hay algunos lenguajes de programación donde todo lo que escribes está garantizado para terminar solo con la escritura estática! Incluso hay algunos que te garantizan un enlace polinómico. Por ahora, en su mayoría son académicos, escribir en ellos probablemente te hará sentir más las limitaciones que escribir en Python, pero hay muchos investigadores trabajando en esto.
Entonces, para responder a su pregunta: en cierto sentido, sí. La no terminación potencial es necesaria para completar Turing (la potencia de cálculo más alta por ahora). Pero no encuentro esto directamente relevante al hecho de que las funciones totales son enumerables o no. ¡Aún puedes escribir todos los programas totales!