En el instituto de informática me enseñaron Teorema del programa estructurado - que podría implementar cualquier operación matemática usando:
- Secuencia
- Selección
- Iteración
Después de completar un grado en Ciencias de la Computación - podemos expresar lo que se requiere para cualquier función computable más formalmente con Funciones M-recursivas :
- La constante $0$ función
- La función de sucesor
- Selección de parámetros
- Composición de la función
- Recursión primitiva
- El $ \mu $ -operador (busque el más pequeño $x$ de tal manera que...)
Siendo este el conjunto mínimo de axiomas . Traduciendo esto al código que obtenemos:
- La constante
0
- Incremento
_ + 1
- Acceso variable
x
- Concatenación de programas y declaraciones
_; _
- Bucles de cuenta atrás
for ( x to 0 ) do _ end
- Mientras que los bucles
while ( x != 0 ) do _ end
Pero he venido en busca de pruebas. ¿Cómo sabemos que todo esto cubre todas las funciones computables? ¿Hay alguna rama obvia de las matemáticas para la que esto no esté cubierto? ¿Hay un defecto en el cálculo Lambda donde aún no se cubren las operaciones matemáticas oscuras?
(Observando, por supuesto, que
- El cálculo lambda es un subconjunto de la reescritura del término,
- que Mathematica eligió la escritura de términos en vez del cálculo lambda como su fundamento,
- y los recientes trabajos en Fundaciones univalentes . )
Mi pregunta es: ¿Pueden codificarse todas las operaciones matemáticas con un lenguaje de Turing Complete?