Download - Mod auto 4
UNIDAD IV: Maquinas de Turing.
Elaborado por: Ing. Edecio R. Freitez
DESARROLLO DE LA UNIDAD IV
1. Introducción: Son la idea fundamental de la computación. El modelo de máquina de
Turing es por demás importante ya que todos los cálculos que puede realizar esta máquina incluye todos los cálculos que cualquier máquina puede realizar.
La idea de Turing fue desarrollar un sistema capaz de modelar cualquier proceso que
se considere un cálculo, por este motivo todos los especialistas en ciencias de la
computación aceptan la tesis de Turing [“Si algo puede hacerse como un procedimiento, se puede hacer con una maquina de Turing y viceversa” .
Se mostró que las máquinas de Turing resuelven todas las funciones recursivas
parciales y esta clase de funciones incluyen todas las funciones que pueden computarse. Por lo tanto para saber que puede resolverse mediante una computadora se estudia la Maquina de Turing.
Una MT es una máquina abstracta que consiste en una unidad de control que es un
autómata finito, un cabezal guiado por la unidad de control y una cinta infinita a ambos lados la cual se considera dividida en celdas donde cabe solamente un símbolo.
Inicialmente la cinta contiene un número finito de símbolos de y las celdas que no contienen ningún símbolo, se completarán con un blanco en cada una de ellas.
El cabezal se encuentra situado en el primer símbolo ( ␢) de la cinta y solamente
puede escanear una celda por vez.
Cada movimiento unívoco en una MT viene determinado por el estado de la unidad de
control juntamente con el símbolo de la cinta que indica el cabezal en un determinado momento.
Cada movimiento consiste en escribir un símbolo en la celda indicada por el cabezal,
mover este último a la izquierda o a la derecha y cambiar de estado.
Los movimientos de la MT provocan un conjunto de cómputos que pueden
terminar o no. Si termina, la unidad de control se encuentra en un estado final y
su resultado será el conjunto de símbolos que se encuentren en la cinta, sino el
resultado queda indefinido.
Definición: Formalmente, se define una máquina de Turing (MT) como una sietetupla de la forma M=( Q, , ,S, , , F) donde
Q es un conjunto finito de estados
Alfabeto de entrada
(Conteniendo a y a un símbolo especial , tal que ) es el alfabeto de cinta.
S = q 1 Representa el estado inicial.
: Es un símbolo especial denominado símbolo blanco ( )
F Q Representa el conjunto de estados finales. Aceptación o parada.
Es una función parcial llamada función de transición.
: Q x Q x x {L, R}
Representación: Este tipo de máquina consta hipotéticamente de una unidad de control capaz de interpretar las instrucciones que reciba, y de una cabeza lectora que permite leer el contenido de una de las casillas en que está dividida una memoria lineal, ilimitada en
ambas direcciones de sus extremos.
La máquina en su funcionamiento pasa por diferentes estados q i en instantes t
sucesivos. El argumento de la función que queremos calcular estará almacenado
previamente en la memoria, y en el instante inicial, antes de que la máquina comience
a funcionar, la cabeza lectora apuntará al símbolo más a la izquierda del argumento. A
partir de ese momento la máquina realizará operaciones, que dependerán del estado en
que ella se encuentre, y del símbolo que en ese momento lea la cabeza lectora. Con
estas operaciones se podrán realizar las siguientes tareas: sustituir el símbolo leído por
otro, pasar a leer el símbolo que esta en memoria a la derecha del símbolo leído, pasar
a leer el símbolo que esta en memoria a la izquierda, o saltar directamente a ejecutar
otra instrucción si se cumple una condición especificada; en todos los casos, y una vez
ejecutada la tarea indicada, se pasaría al estado que también se indica en la propia
instrucción.
Estas instrucciones, o cuaternas, las podemos representar
Lectura Escritura
Estado
.... a 1 a 2 a 3 .... Q1
q 2
.
.
.
.
.
n
Control
Características:
La cinta es infinita, por lo que a los dos lados de la información que aparezca en la entrada, habrá espacios en blanco representados por b. Inicialmente contiene un número finito de símbolos predecimos y seguidos de
infinitos blancos (símbolo especial b. Al igual que el resto de los autómatas, se representan por la tabla de transición en la
que en las filas están los estados, en las columnas los símbolos de T, y en la posición ( q, a) aparece ( q, a.
Movimiento: Si la Maquina de Turing esta en un estado q Q, lee a , y la función de transición para esa pareja estado-símbolo es:
q, a =(p, m, x) Entonces la Maquina de Turing: 1. Imprime el símbolo x en la cinta en donde estaba él a y 2. Pasa del estado q a p. 3. Mueve la cabeza lectora de la cinta de entrada / salida hacia la izquierda (m=I),
derecha (m=D) o se para (m=P . Ejemplo: Sea la M de T definida por M=( Q, , ,S, , , F) donde
Q= q1 , q 2 ; a, b ; a, b, ; S=q1 ; F= q 2 ; y
dada por:
q 1 , a = q1 , a, R
q 1 , b = q1 , a, R
q 1 , = q 2 , , L
Una cinta asociada a la maquina es:
q 1
Solución: La maquina dada inicia sus cálculos en el estado q1 , y la cabeza de lectura/
escritura apunta hacia la celda que contiene el símbolo que se encuentra en el extremo izquierdo de la cinta, Veamos a continuación el recorrido que hace la maquina para la cinta dada:
q 1 q 1 q 1
q 1 q 1 q 2
Comentario: Cabe destacar que la maquina dada recorre la cinta dada de izquierda a
derecha cambiando todos los símbolos b’ es de la misma por a, se detiene a la izquierda del primer blanco que consiga.
... a b b a …
... a a b a … ... a b b a … ... a b b a …
... a a a a … ... a a a a ... a a a a …
Nota: Una funcion parcial no esta necesariamente definida para todo elemento del
conjunto del que se realiza la transformación; por lo tano puede que la función “ ” no una imagen para algún par Q x . En otro orden de ideas las maquinas de turing dependen únicamente del estado actual y del contenido de la celda sobre la que se encuentra la cabeza de lectura/escritura, en consecuencia cualquier cadena de entrada se debe presentar a la maquina sobre su cinta.
Notación utilizada para la representación de un Maquina de Turing: A continuación se
presentaran dos de las notaciones mas utilizadas para presentar la información de
manera más conveniente.
1- La primera representa una configuración como un par (q i , w1 w 2 ), donde q i es el
estado actual, w1 es la cadena de la cinta que precede a la celda sobre la que se
encuentra la cabeza de lectura / escritura, es el símbolo de la cinta sobre el que se
encuentra la cabeza de lectua/escritura y w 2 es la cadena que hay a continuación de
la cabeza de lectura / escritura.
2- La segunda notación viene dada por una cadena 1a 2a ... 1ka1q ka ... na , que
representa la configuración ( iq , kwa ), es decir la cabeza de lectura / escritura se
coloca sobre la celda que contiene ka y el estado actual es iq , es de notar que la
cadena 1a 2a ... 1ka1q ka ... na , indica que la cabeza de lectura / escritura se
encuentra sobre el símbolo de la cinta que aparece siguiendo al estado.
Ejemplo: A continuación se presenta la cinta analizada anteriormente utilizando estas notaciones:
1- Utilizando la primera notación se tiene que:
q 1 , abba q 1 , abba q 1 , aaba q1 , aaaa q1 , aaaa q 2 , aaaa
2- Utilizando la segunda notación se tiene que:
q 1 ,a,bba aq 1 bba aaq1 ba aaaq1 a aaaaq1 aaaq 2 a
Nota: Sea cual sea la notación utilizada denotaremos el paso de una configuración a otra por medio del símbolo “ “. Las configuraciones de una Maquina de Turing se conocen como descripciones instantáneas.
Ejemplo: Ejemplo: Sea la M de T definida por M=( Q, , ,S, , , F) donde
Q= q1 , q 2 , q 3 ; a, b ; a, b, ; S=q1 ; F= q 3 ; y
dada por:
q 1 , a = q1 , a, L
q 1 , b = q1 , b, L
q 1 , = q 2 , ,R
q 2 , a =(q 3 ,a,L)
q 2 , b =(q 3 ,b,L)
q 2 , =(q 3 , ,L)
Comentario: La maquina anterior recorre la cinta hacia la izquierda hasta que se consiga
con la primera celda en blanco, deteniéndose y colocándose sobre dicho blanco, esto es:
q 1 , aababb q1 , aababb q1 , aababb q1 , aababb
q1 , aababb q1 , aababb q1 , aababb
Nota: Cuando q i , a esta indefinida para una configuración de cinta, es
imposible que pase a otra configuración, entonces se dice que la M de T esta parada; puede que q F, siendo F el conjunto de estados finales o puede que no. De cualquier forma en muchas ocasiones es conveniente dotar de significado a la
parada en un estado de F. A manera de simplificación se supondrá que no se definirá ninguna transición para cualquier estado de F, por lo que la maquina se detendrá siempre a su estado final.
Definición: Cuando se analiza una cinta asociada a una M de T, la secuencia de
todos los movimientos que conducen a una configuración de parada se denominan “computación”.
Ejemplo: Sea la M de T, dada por:
Q= q 1 , q 2 ; a, b ; a, b, ; S=q1 ; F= ; y
dada por: La cinta es: q1 ,abW, con W
q 1 , a = q 2 , a, R
q 1 , b = q 2 , b,R
q 1 , = q 2 , ,R
q 2 , a =(q1 ,a,L)
q 2 , b =(q1 ,b,L)
q 2 , =(q1 , ,L)
Solución: q1 ,abW q1 ,abW q1 ,abW q1 ,abW q1 ,abW
Observación: Como se puede apreciar la maquina analizada anteriormente queda
en un bucle infinito ciclando entre dos estados. Durante su operación una M de T ejecuta transiciones repetidamente hasta llegar a su estado de parada, esto quiere decir, que bajo ciertas condiciones es posible que nunca se detengan los cálculos de una M de T, dado que su programa interno puede quedar atrapado en un ciclo sin fin(Como en el caso anterior. Sin embargo una anomalía que puede ocurrir durante este proceso es que la cabeza de la maquina pueda rebazar el extremo izquierdo de la cinta; en este caso la maquina abandonara los cálculos y se dice que la ejecución de la maquina sufrió una “terminación anormal”
2. Lenguaje Aceptado por una Maqu8ina de Turing.
Definición: M=( Q, , ,S, , , F) una maquina de turing, entonces el lenguaje aceptado por M es:
L(M) = w q 1 w * w1 pw 2 para p F y w i
*
Ejemplo: Construya una M de T que acepte el lenguaje regular a* sobre
a,b , la maquina debe comenzar sus cálculos por el extremo izquierdo. El diseño de la maquina es el siguiente:
Q= q1 , q 2 ; a, b ; a, b, ; S=q1 ; F=q 2 ; y
dada por:
q 1 , a = q1 , a, R
q 1 , = q 2 , , R
Comentario: La maquina anterior realiza su análisis hacia la derecha, leyendo
cada símbolo y comprobando que es una “a”; si lo es se realiza un desplazamiento hacia la derecha, si encuentra un “ ” sin haber leído un ningún otro carácter que no sea “a” la maquina para y acepta la cadena. Si de lo contrario
consigue un carácter distinto de a y la maquina se puede parar en un estado que no es de aceptación. Cabe destacar que esta maquina de Turing para en el
estado q 2 , solo si analiza una cadena de cero o más a’es.
Nota: Para rechazar una cadena que no es aceptada por una M de T, lo único que hay que hacer es evitar que llegue a su estado final, una alternativa es entrar en un bucle infinito, en el caso del lenguaje anterior podría ser aceptado por:
M=( Q, , ,S, , , F) Definición: Se dice que una función de cadena f es Turing computable si existe
una maquina de Turing M=( Q, , ,S, , , F) para la cual q w q f u para
algún q f F, cuando f(w)=u.
Ejemplo: Sea a, b , que representa los enteros positivos mediante cadenas de
a’es, es decir, a=1, a2=2,......., a
n=n. La función suma f(n, m)=n+m se puede
implementar para por medio de la transformación de anba
m en a
mnb, se puede
obtener una M de T que lleve a cabo este proceso de la manera siguiente: M=( Q, , ,S, , , F), donde:
Q= q1 , q 2 , q 3 ,q 4 ,q 5 ; a, b ; a, b, ; S=q1 ; F= q 5 ; y
dada por:
q 1 , a = q1 , a, R
q 1 , b = q 2 ,a,R
q 2 , a =(q 2 ,a,R)
q 2 , =(q 3 , ,L)
q 3 ,a =(q 4 ,b,L)
q 4 ,a =(q 4 ,a,L)
q 4 , =(q 5 , ,R)
3. Construcción y Modificación de una Maquina de Turing.
Definición: Sean M1 y M 2 dos M de T sobre el mismo alfabeto de entrada y el
mismo alfabeto de cinta , donde M1 =( Q1 , , ,S, , 1 , F 1 ) y M 2 =( Q 2 , ,
,S, , 2 , F 2 ), cabe destacar que Q1 Q 2 = . La composición de las maquinas de
turing M1 y M 2 es la maquina de Turing M=( Q, , ,S, , , F), que se denota por
M 1 M 2 donde:
Q=Q1 Q 2
S=s1
F=F 2
1 q, , Si q Q1 y 1 q, (p, t, X), para todo p F1
q, = 2 q, , Si q Q 2
(s 2 , t, X), Si q Q1 y 1 q, = (p, t, X) para algún p F1
Nota: Cabe destacar que la composición de M1 M 2 se comporta como M1 hasta que
M 1 llega a su estado final. En ese instante cambia al estado inicial de M 2 y se
comporta como M 2 hasta que termina.
Ejemplo: Sean M1 y M 2 dos M de T dadas por
M 1 : Q1 = q1 , q 2 , q 3 ,q 4 ; a ; a, ; S =q1 ; F = q 4 ; y
1- dada por:
q 1 , a = q 2 , a, R
q 1 , = q 2 , , R
q 2 , a =(q 2 ,a, R)
q 2 , =(q 3 , , L)
q 3 ,a =(q 4 ,a, R)
q 3 , =(q 4 , , R)
M 2 : Q 2 = p1 , p 2 ; a, b ; a, b, ; S=p1 ; F= p 5 ; y
2- dada por:
p 1 , a = p 2 , a, R
p 1 , b = p 2 ,a, R
Comentario: La composición M 1 M 2 se comporta como M1 hasta que M1 llega a
un estado final. En ese momento cambia al estado inicial de M 2 y se comporta
como M 2 hasta que termina. A continuación se presentan las transiciones
asociadas a la maquina M1M 2 .
q 1 , a = q 2 , a, R
q 1 , = q 2 , , R
q 2 , a =(q 2 ,a, R)
q 2 , =(q 3 , , L)
q 3 ,a =(p1 ,a, R)
q 3 , =(p1 , , R)
p 1 , a = p 2 , a, R
p 1 , b = p 2 ,a, R
Bloques de Construcción de Maquinas de Turing
Introducción: Con el proceso de composición antes mencionado y empleando
las M de T como bloques de construcción, se pueden obtener maquinas de propósitos más complejos.
Nota: Es importante conocer la tarea (el funcionamiento) que realiza cada una
de las maquinas a combinar para realizar el enlace adecuado de las mismas.
Descripción:
3- En lugar de utilizar los diagramas de transición utilizados usualmente, se usaran diagramas compuestos
4- En estos diagramas cada uno de los bloques de construcción se representa como un nodo, con flechas entre los nodos para indicar las transiciones entre los bloques.
5- Estas flechas se etiquetan de acuerdo con el valor que debe aparecer en la celda actual para recorra la flecha.
6- Al igual que en los diagramas de transición, debe indicarse con un apuntador el nodo del diagrama compuesto donde debe comenzar la ejecución.
Nota: Por razones de conveniencia, existen varias abreviaturas en cuanto a la
notación empleada habitualmente al construir diagramas de bloques para M de T Uno es reemplazar varias flechas que tienen la misma fuente y el mismo destino por una sola flecha rotulada con una sola lista de símbolos, otra abreviatura utilizada consiste en aplicar la notación que se muestra a continuación para indicar que cuando el símbolo actual es x, y o z, la maquina deberá proseguir en esta dirección, donde representa el símbolo que en realidad esta presente.
X, y, z
Ejemplo: En el caso de la maquina M1 descrita anteriormente la vamos a
representar como R , es decir R busca el primer blanco ( ) que haya a la
derecha de la posición actual de la cabeza. En el caso de la maquina M 2 imprime
una a y se detiene(imprime la “a” independientemente del símbolo actual), al combinar estas dos maquinas, la maquina resultante buscara el primer blanco
hacia la derecha, imprimirá un blanco y se detendrá. El diagrama de bloque asociado a esta maquina se muestra a continuación.
-- R aR
Donde , significa diferente de blanco. Comentario: Suponiendo que los símbolos de cinta asociados a una maquina de turing
son: x, y, se tiene que: Se representara con R una maquina que mueve su cabeza una celda a la a la derecha, con L la que mueve su cabeza una celda a la izquierda y con x la maquina que escribe un símbolo en la celda actual.
Ejemplo: Una M de T que se mueve una celda a la derecha, escribe el símbolo “y”
se mueve una celda a la izquierda y se detiene se muestra a continuación. R y L o en forma condensada RyL Ejemplo: A continuación se muestra un grupo de bloques asociados a maquinas de
Turing para x, y,
R x : Recorre la cinta a la derecha de su posición inicial en busca de una celda que
contenga el símbolo x. A continuación se muestra el diagrama de bloque asociado. y R
R : Recorre la cinta a la derecha de su posición inicial en busca de una celda que contenga un símbolo distinto de x. A continuación se muestra el diagrama de bloque asociado:
x
R
L x : Recorre la cinta a la izquierda de su posición inicial en busca de una celda que
contenga el símbolo x. A continuación se muestra el diagrama de bloque asociado.
y L
R : Recorre la cinta a la izquierda de e su posición inicial en busca de una celda que contenga un símbolo distinto de x. A continuación se muestra el diagrama de bloque asociado:
x L
4. Tesis de Church.
Definición: La clase de las funciones recursivas parciales contiene todas las funciones parciales computables.
Comentario: toda función para la cual exista un proceso algorítmico que pueda ser especificado mediante la descripción a alto nivel de una serie de pasos a realizar, es computable. Así pues, en muchas ocasiones, ante una función complicada f se puede optar por describir un proceso de computación de la misma mediante un lenguaje pseudoalgorítmico, es decir, mediante una "receta" cuyo seguimiento al pie de la letra ante una entrada x conduce a la computación de f(x). Cuando esto ocurre, podemos asegurar la computabilidad de f en virtud de la tesis de Church, sin necesidad de calcular un programa específico para f.
5. Indecibilidad: Una de las técnicas más usadas en esta teoría ha sido la codificación de los
algoritmos utilizando el método de la codificación de Gödel. Como ya hemos comentado, esto nos va a permitir ver a los algoritmos cuyas entradas sean números naturales como algoritmos cuyas entradas sean algoritmos. Esta fue la técnica usada por Church, Kleene y Turing para encontrar problemas sin solución, técnica que por otro lado ha dado lugar a muy fructíferos resultados en cuestiones generales acerca de los algoritmos.
De esta forma se demostró que era posible construir una máquina de propósito general, es decir, capaz de resolver cualquier problema que se pudiese resolver mediante un algoritmo. Dicha máquina tendría como entrada el entero que codificaría el algoritmo solución del problema y la propia entrada del problema, de tal forma, que la máquina aplicaría el algoritmo codificado a la entrada del problema. Esta hipotética máquina puede considerarse como el padre de los actuales ordenadores de propósito general. Los argumentos empleados por Church, Kleene y Turing para demostrar que un problema no tiene solución algorítmica tienen todos la misma estructura, y se puede resumir como sigue: 1.- Se demuestra que hay un procedimiento uniforme (universal) U que dada una función calculable F y un argumento numérico m, calcula el valor f(m) si este está definido. 1.a) Para el -cálculo U es un -término tal que Ufm es convertible en n si y solo si Fm es convertible en n, donde f es el número de Gödel del término f. 1.b) Para el cálculo ecuacional de las funciones recursivas, U enumera (los números de Gödel de) las consecuencias de las ecuaciones que definen F hasta que se llega a una ecuación de la forma Fm=n. 1.c) Para la máquina de Turing, U es justamente la máquina universal. 2.- Se demuestra que si se puede decidir el siguiente problema: Dada una especificación de una función en el sistema, esta función está siempre bien definida, es decir, es total (en la terminología de Turing, es una máquina sin bucles infinitos), entonces, usando U, el argumento de la diagonal daría una contradicción.
3.- Si cada problema sobre las funciones calculables fuese decidible, entonces también lo sería cada cuestión sobre la aritmética, y en particular el problema del punto 2. Cada autor dió un ejemplo de problemas sobre las funciones calculables que eran indecidibles: 3.a) Dada una fórmula del -cálculo, ¿tiene una forma normal? 3.b) Dado un conjunto de ecuaciones cuyo número de Gödel sea f, calcular el valor de la función que definen esas ecuaciones aplicado a f.
3.c) Dada una máquina de Turing, ¿imprime siempre 0? 4.- Church y Turing dieron los axiomas de primer orden a sus respectivos modelos de computación, y así probaron la indecibilidad.
6. Lenguajes recursivos y Recursivamente Enumerables.
Funciones recursivas: A continuación se presenta como se construye una clase de funciones, llamadas recursivas primitivas, definidas entre n-uplas de números naturales
sobre los números naturales, (es decir ), con la idea de caracterizar las funciones que son efectivamente calculables, es decir, aquellas funciones para las que dada la n-upla de sus argumentos se puede definir un procedimiento para encontrar en un numero finito de pasos el valor de la función. Para ello se usara una definición recursiva, es decir, nos apoyaremos en un conjunto de funciones que por definición son recursivas (conjunto inicial que se denomina base de la recursión), y en un conjunto de reglas que aplicándolas a funciones recursivas primitivas ya definidas obtenemos nuevas funciones recursivas. En nuestro caso la base esta formada por las funciones nula, sucesor y proyección, y las reglas que llamamos de composición y de recursión primitiva. Estos elementos quedan definidos de la siguiente forma:
Base de recursión:
Función nula:
Mediante la que se hace corresponder a cualquier numero natural el numero 0
(borrar el numero).
Función sucesor :
Mediante la cual a cada número natural se le hace corresponder su sucesor, que
denotamos por (encontrar el siguiente).
Función proyección : Mediante la cual a cada n-upla se le hace corresponder su i-esima componente (elegir uno de una sucesión finita)
Reglas: Regla de composición:
Dadas las funciones
y la función que depende de las funciones anteriores, es decir
entonces decimos que
es la función compuesta de las mediante si está definida de la siguiente forma:
Regla de recursión primitiva con parámetros: dadas dos funciones recursivas conocidas
que dependen de los parámetros , se define la función
mediante el siguiente esquema de recursión:
Regla de recursión primitiva sin parámetros: es un caso particular del anterior en el que no aparecerán los parámetros y el esquema
de recursión sería:
donde es una función recursiva conocida y es una constante (un numero natural dado).
La clase de funciones definidas de esta manera, es una clase de funciones que se puede calcular efectivamente, ya que son construidas a partir un conjunto base, cuyo cálculo puede ser considerado trivial, y mediante procedimientos o esquemas de cálculo sencillos y que se realizan por pasos sucesivos. Se prueba que esta clase de funciones es la misma que la que se define utilizando para ello las Maquinas de Turing, que describimos a continuación.
7. Maquinas de Turing Universal.
Definición: Es una máquina que recibe en su cinta una descripción de otra M de T, y el contenido de la cinta de esta M de T, y produce como resultado de su ejecución el mismo resultado que produciría la M de T sobre su cinta. Se le da el nombre de universal, porque es capaz de simular el comportamiento de cualquier M de T.
Construcción:
Supondremos que Q= q1 ,q 2 ,...q n , donde q1 es el único
estado inicial y q 2 es el único estado final de M.
Supondremos que =1, 2 ,...., n , donde
1 es el blanco.
Para codificar , representaremos q1 por 1, q 2 por 11, y así
sucesivamente.
Representaremos i por una cadena de i unos de forma similar
a como se representaron los estados de Q. Finalmente representaremos las directivas para la cabeza de
lectura / escritura de forma que L será 1 y R será 11. Los Ceros serán usados como separadores.
a. Ejemplo: La transición dada por q 3 , 1 = q 4 , 3 ,
L , puede ser codificada mediante la cadena 011101011110111010, es de notar que m tiene una codificación representada por una cadena finita de ceros y unos
7. Problema de Parada: El problema de parada de una maquina de turing consiste en determinar algorítmicamente, es decir, mediante una maquina de Turing, si una maquina de turing “M” dada, va a parar o no cuando analiza una palabra de entrada W, dado que en este caso una maquina de Turing analiza el comportamiento de otra, se requiere que la ultima
sea dada como entrada a la primera; esto puede llevarse a cabo por medio de la codificación de la M de T que debe analizarse
8. Teorema de Rice
Considérese la clase de funciones recursivas con un solo argumento. Sea pues una
enumeración efectiva de las funciones computables de una sola variable. Sea
una subclase. El conjunto de índices de es La clase se dice ser recursiva
si su conjunto de índices lo es, es decir, si la función característica de este último conjunto es recursiva. Digresión: Supongamos que f es una función computable, calculada por el programa P y que
el índice de f es k0. Sea la mónada que consta únicamente de la función f. Tenemos que
. Pero la inclusión es estricta, pues f puede ser calculada también por una infinidad de otros programas, es decir, f tiene una infinidad de índices. Para determinar que un número
cualquiera k está en será menester que la función fk coincide con f, la verificación de lo cual es un problema irresoluble, en general, como lo veremos más adelante. La dificultad principal en revisar si acaso una función coincide con otra, estriba en que aún cuando podamos probar uno a uno, y, potencialmente todos, los valores de ambas funciones, ese proceso es interminable pues siempre quedarán más valores pendientes de revisar que los ya revisados.