Articulo de referencia

Teorema de recursión de Kleene

En la teoría de la computabilidad , los teoremas de recursión de Kleene son un par de resultados fundamentales sobre la aplicación de funciones computables a sus propias descrip...

En la teoría de la computabilidad , los teoremas de recursión de Kleene son un par de resultados fundamentales sobre la aplicación de funciones computables a sus propias descripciones. Los teoremas fueron demostrados por primera vez por Stephen Kleene en 1938 [ 1 ] y aparecen en su libro de 1952, Introducción a la metamatemática [ 2 ] . Un teorema relacionado, que construye puntos fijos de una función computable, se conoce como el teorema de Rogers y se debe a Hartley Rogers, Jr. [ 3 ].

Los teoremas de recursión se pueden aplicar para construir puntos fijos de ciertas operaciones sobre funciones computables , para generar quinos y para construir funciones definidas mediante definiciones recursivas .

Notación

El enunciado de los teoremas hace referencia a una numeración admisible.φ{\displaystyle \varphi }de las funciones recursivas parciales , de tal manera que la función correspondiente al índicemi{\displaystyle e}esφmi{\displaystyle \varphi _{e}}.

SiF{\displaystyle F}yGRAMO{\displaystyle G}son funciones parciales sobre los números naturales, la notaciónFGRAMO{\displaystyle F\simeq G}indica que, para cada n , o bienF(norte){\displaystyle F(n)}yGRAMO(norte){\displaystyle G(n)}están ambos definidos y son iguales, o bienF(norte){\displaystyle F(n)}yGRAMO(norte){\displaystyle G(n)}ambos son indefinidos.

Teorema del punto fijo de Rogers

Dada una funciónF{\displaystyle F}en los números naturales, un punto fijo deF{\displaystyle F}es un índicemi{\displaystyle e}en el dominio deF{\displaystyle F}de tal manera queφmiφF(mi){\displaystyle \varphi _{e}\simeq \varphi _{F(e)}}. Cabe señalar que la comparación de entradas y salidas aquí no se realiza en términos de valores numéricos, sino en términos de sus funciones recursivas parciales asociadas.

Rogers describe el siguiente resultado como "una versión más simple" del teorema de recursión (segundo) de Kleene. [ 4 ]

Teorema del punto fijo de Rogers SiF{\displaystyle F}es una función totalmente computable, tiene un punto fijo en el sentido antes mencionado.

Esto significa, esencialmente, que si aplicamos una transformación efectiva a los programas (por ejemplo, reemplazar instrucciones como sucesor, salto o eliminar líneas), siempre habrá un programa cuyo comportamiento no se vea alterado por la transformación. Por lo tanto, este teorema puede interpretarse de la siguiente manera: «dado cualquier procedimiento efectivo para transformar programas, siempre habrá un programa que, al ser modificado por dicho procedimiento, hará exactamente lo mismo que hacía antes», o bien: «es imposible escribir un programa que cambie el comportamiento extensional de todos los programas».

Demostración del teorema del punto fijo

La demostración utiliza una función computable total particular.h{\displaystyle h}, definido de la siguiente manera. Dado un número naturalincógnita{\displaystyle x}, la funciónh{\displaystyle h}Devuelve el índice de la función computable parcial que realiza el siguiente cálculo:

Dado un inputy{\displaystyle y}, primer intento de calcularφincógnita(incógnita){\displaystyle \varphi _{x}(x)}. Si ese cálculo devuelve una salidami{\displaystyle e}, luego calcularφmi(y){\displaystyle \varphi _ {e}(y)}y devolver su valor, si lo hay. Por lo tanto, para todos los índicesincógnita{\displaystyle x}de funciones computables parciales, siφincógnita(incógnita){\displaystyle \varphi _{x}(x)}se define, entoncesφh(incógnita)φφincógnita(incógnita){\displaystyle \varphi _{h(x)}\simeq \varphi _{\varphi _{x}(x)}}. Siφincógnita(incógnita){\displaystyle \varphi _{x}(x)}no está definido, entoncesφh(incógnita){\displaystyle \varphi _{h(x)}}es una función que no está definida en ninguna parte. La funciónh{\displaystyle h}puede construirse a partir de la función computable parcialgramo(incógnita,y){\displaystyle g(x,y)}descrito anteriormente y el teorema S m n   : para cadaincógnita{\displaystyle x}, el númeroh(incógnita){\displaystyle h(x)}es el índice de un programa que calcula la funciónygramo(incógnita,y){\displaystyle y\mapsto g(x,y)}.

Para completar la demostración, dejemosF{\displaystyle F}sea ​​cualquier función computable total y construyah{\displaystyle h}como arriba. Dejemi{\displaystyle e}ser un índice de la composiciónFh{\displaystyle F\circ h}, que es una función totalmente computable, por lo tantoφmi(mi){\displaystyle \varphi _ {e}(e)}está definido. Entoncesφh(mi)φφmi(mi){\displaystyle \varphi _{h(e)}\simeq \varphi _{\varphi _{e}(e)}}por definición deh{\displaystyle h}Pero, porquemi{\displaystyle e}es un índice deFh{\displaystyle F\circ h},φmi(mi)=(Fh)(mi)=F(h(mi)){\displaystyle \varphi _ {e}(e)=(F\circ h)(e)=F(h(e))}y por lo tantoφh(mi)φF(h(mi)){\displaystyle \varphi _{h(e)}\simeq \varphi _{F(h(e))}}. Por esoφnorteφF(norte){\displaystyle \varphi _{n}\simeq \varphi _{F(n)}}paranorte=h(mi){\displaystyle n=h(e)}.

Esta demostración es una construcción de una función recursiva parcial que implementa el combinador Y.

Funciones sin punto fijo

Una funciónF{\displaystyle F}de tal manera queφmiφF(mi){\displaystyle \varphi _{e}\not \simeq \varphi _{F(e)}}a pesar demi{\displaystyle e}Se denomina libre de punto fijo . El teorema del punto fijo muestra que ninguna función totalmente computable es libre de punto fijo, pero existen muchas funciones no computables libres de punto fijo. El criterio de completitud de Arslanov establece que el único grado de Turing recursivamente enumerable que computa una función libre de punto fijo es 0 , el grado del problema de la parada . [ 5 ]

Segundo teorema de recursión de Kleene

El segundo teorema de recursión es una generalización del teorema de Rogers con una segunda entrada en la función. Una interpretación informal del segundo teorema de recursión es que permite construir programas autorreferenciales; véase «Aplicación a los quines» más adelante.

El segundo teorema de recursión . Para cualquier función recursiva parcialQ(incógnita,y){\displaystyle Q(x,y)}Hay un índicepag{\displaystyle p}de tal manera queφpagλy.Q(pag,y){\displaystyle \varphi _{p}\simeq \lambda yQ(p,y)}.

El teorema se puede demostrar a partir del teorema de Rogers dejandoF{\displaystyle F}sea ​​una función tal queφF(pag)(y)=Q(pag,y){\displaystyle \varphi _{F(p)}(y)=Q(p,y)}(una construcción descrita por el teorema S m n   ). Entonces se puede verificar que un punto fijo de esteF{\displaystyle F}es un índicepag{\displaystyle p}según se requiera. El teorema es constructivo en el sentido de que una función computable fija asigna un índice paraQ{\displaystyle Q}en el índicepag{\displaystyle p}.

Comparación con el teorema de Rogers

El segundo teorema de recursión de Kleene y el teorema de Rogers pueden demostrarse, de forma bastante sencilla, uno a partir del otro. [ 6 ] Sin embargo, una demostración directa del teorema de Kleene [ 7 ] no utiliza un programa universal, lo que significa que el teorema se cumple para ciertos sistemas de programación subrecursiva que no poseen un programa universal.

Aplicación a los quines

Un ejemplo clásico que utiliza el segundo teorema de recursión es la funciónQ(incógnita,y)=incógnita{\displaystyle Q(x,y)=x}. El índice correspondientepag{\displaystyle p}En este caso, produce una función computable que genera su propio índice cuando se aplica a cualquier valor. [ 8 ] Cuando se expresan como programas informáticos, dichos índices se conocen como quines .

El siguiente ejemplo en Lisp ilustra cómo elpag{\displaystyle p}en el corolario se puede producir eficazmente a partir de la funciónQ{\displaystyle Q}. La función s11en el código es la función de ese nombre producida por el teorema S m n   .

Qpuede cambiarse a cualquier función de dos argumentos.

( setq Q ' ( lambda ( x y ) x )) ( setq s11 ' ( lambda ( f x ) ( list 'lambda ' ( y ) ( list f x 'y )))) ( setq n ( list 'lambda ' ( x y ) ( list Q ( list s11 'x 'x ) 'y ))) ( setq p ( eval ( list s11 n n )))

Los resultados de las siguientes expresiones deberían ser los mismos.φ{\displaystyle \varphi }p(nil)

( eval ( list p nil ))

Q(p, nil)

( eval ( list Q p nil ))

Aplicación a la eliminación de la recursión

Supongamos quegramo{\displaystyle g}yh{\displaystyle h}son funciones computables totales que se utilizan en una definición recursiva para una funciónF{\displaystyle f}:

F(0,y)gramo(y),{\displaystyle f(0,y)\simeq g(y),}
F(incógnita+1,y)h(F(incógnita,y),incógnita,y),{\displaystyle f(x+1,y)\simeq h(f(x,y),x,y),}

El segundo teorema de recursión puede utilizarse para demostrar que dichas ecuaciones definen una función computable, donde la noción de computabilidad no tiene por qué permitir, a primera vista, definiciones recursivas (por ejemplo, puede definirse mediante μ -recursión o mediante máquinas de Turing ). Esta definición recursiva puede convertirse en una función computable.φF(mi,incógnita,y){\displaystyle \varphi _{F}(e,x,y)}eso suponemi{\displaystyle e}es un índice de sí mismo, para simular la recursión:

φF(mi,0,y)gramo(y),{\displaystyle \varphi _{F}(e,0,y)\simeq g(y),}
φF(mi,incógnita+1,y)h(φmi(incógnita,y),incógnita,y).{\displaystyle \varphi _{F}(e,x+1,y)\simeq h(\varphi _{e}(x,y),x,y).}

El teorema de recursión establece la existencia de una función computable.φF{\displaystyle \varphi _{f}}de tal manera queφF(incógnita,y)φF(F,incógnita,y){\displaystyle \varphi _{f}(x,y)\simeq \varphi _{F}(f,x,y)}. De este modo F{\displaystyle f}Satisface la definición recursiva dada.

Programación reflexiva

La programación reflexiva se refiere al uso de la autorreferencia en los programas. Jones presenta una visión del segundo teorema de recursión basada en un lenguaje reflexivo. [ 9 ] Se demuestra que el lenguaje reflexivo definido no es más fuerte que un lenguaje sin reflexión (porque se puede implementar un intérprete para el lenguaje reflexivo sin usar reflexión); luego, se demuestra que el teorema de recursión es casi trivial en el lenguaje reflexivo.

El primer teorema de recursión

Mientras que el segundo teorema de recursión trata sobre puntos fijos de funciones computables, el primer teorema de recursión se relaciona con puntos fijos determinados por operadores de enumeración, que son un análogo computable de las definiciones inductivas. Un operador de enumeración es un conjunto de pares ( A , n ) donde A es un conjunto finito de números ( código para un) y n es un número natural . A menudo, n se considera un código para un par ordenado de números naturales, particularmente cuando las funciones se definen mediante operadores de enumeración. Los operadores de enumeración son de vital importancia en el estudio de la reducibilidad de enumeración .

Cada operador de enumeración Φ determina una función de conjuntos de números naturales a conjuntos de números naturales dados por

Φ(incógnita)={norteAincógnita[(A,norte)Φ]}.{\displaystyle \Phi (X)=\{n\mid \exists A\subseteq X[(A,n)\in \Phi ]\}.}

Un operador recursivo es un operador de enumeración que, al recibir como entrada el grafo de una función recursiva parcial, siempre devuelve el grafo de una función recursiva parcial.

Un punto fijo de un operador de enumeración Φ es un conjunto F tal que Φ( F ) = F . El primer teorema de enumeración muestra que los puntos fijos se pueden obtener de manera efectiva si el propio operador de enumeración es computable.

Primer teorema de recursión . Se cumplen las siguientes afirmaciones.
  1. Para cualquier operador de enumeración computable Φ, existe un conjunto recursivamente enumerable F tal que Φ( F ) = F y F es el conjunto más pequeño con esta propiedad.
  2. Para cualquier operador recursivo Ψ existe una función computable parcial φ tal que Ψ(φ) = φ y φ es la función computable parcial más pequeña con esta propiedad.

El primer teorema de recursión también se denomina teorema del punto fijo (de la teoría de la recursión). [ 10 ] También existe una definición que se puede aplicar a los funcionales recursivos de la siguiente manera:

DejarΦ:F(nortek)(nortek){\displaystyle \Phi Sea $\mathbb {F} (\mathbb {N} ^{k})\rightarrow (\mathbb {N} ^{k})} $ un funcional recursivo.Φ{\displaystyle \Phi }tiene un punto fijo mínimoFΦ:norteknorte{\displaystyle f_{\Phi }:\mathbb {N} ^{k}\rightarrow \mathbb {N} }que es computable, es decir

1)Φ(Fϕ)=FΦ{\displaystyle \Phi (f_{\phi })=f_{\Phi }}

2)gramoF(nortek){\displaystyle \forall g\in \mathbb {F} (\mathbb {N} ^{k})}de tal manera queΦ(gramo)=gramo{\displaystyle \Phi (g)=g}sostiene queFΦgramo{\displaystyle f_{\Phi }\subseteq g}

3)FΦ{\displaystyle f_{\Phi }}es computable

Ejemplo

Al igual que el segundo teorema de recursión, el primer teorema de recursión puede utilizarse para obtener funciones que satisfacen sistemas de ecuaciones de recursión. Para aplicar el primer teorema de recursión, las ecuaciones de recursión deben reformularse primero como un operador recursivo.

Consideremos las ecuaciones de recurrencia para la función factorial f :F(0)=1F(norte+1)=(norte+1)F(norte){\displaystyle {\begin{aligned}&f(0)=1\\&f(n+1)=(n+1)\cdot f(n)\end{aligned}}}El operador recursivo correspondiente Φ tendrá información que indica cómo llegar al siguiente valor de f desde el valor anterior. Sin embargo, el operador recursivo definirá en realidad la gráfica de f . Primero, Φ contendrá el par(,(0,1)){\displaystyle (\varnothing ,(0,1))}. Esto indica que f (0) es inequívocamente 1, y por lo tanto el par (0,1) está en la gráfica de f .

A continuación, para cada n y m , Φ contendrá el par({(norte,metro)},(norte+1,(norte+1)metro)){\displaystyle (\{(n,m)\},(n+1,(n+1)\cdot m))}Esto indica que, si f ( n ) es m , entonces f ( n + 1) es ( n + 1) m , de modo que el par ( n + 1, ( n + 1) m ) está en la gráfica de f . A diferencia del caso base f (0) = 1 , el operador recursivo requiere cierta información sobre f ( n ) antes de definir un valor de f ( n + 1) .

El primer teorema de recursión (en particular, la parte 1) establece que existe un conjunto F tal que Φ( F ) = F . El conjunto F estará compuesto enteramente por pares ordenados de números naturales y será la gráfica de la función factorial f , como se deseaba.

La restricción a ecuaciones de recursión que pueden reformularse como operadores recursivos garantiza que las ecuaciones de recursión definan realmente un punto fijo mínimo . Por ejemplo, consideremos el conjunto de ecuaciones de recursión:gramo(0)=1gramo(norte+1)=1gramo(2norte)=0{\displaystyle {\begin{aligned}&g(0)=1\\&g(n+1)=1\\&g(2n)=0\end{aligned}}}No existe ninguna función g que satisfaga estas ecuaciones, ya que implican tanto g (2) = 1 como g (2) = 0. Por lo tanto, no existe ningún punto fijo g que satisfaga estas ecuaciones de recurrencia. Es posible crear un operador de enumeración que corresponda a estas ecuaciones, pero no será un operador recursivo.

Bosquejo de demostración del primer teorema de recursión

La demostración de la parte 1 del primer teorema de recursión se obtiene iterando el operador de enumeración Φ comenzando con el conjunto vacío . Primero, se construye una secuencia F k , parak=0,1,{\displaystyle k=0,1,\ldots }. Sea F 0 el conjunto vacío. Procediendo inductivamente, para cada k , sea F k + 1FkΦ(Fk){\displaystyle F_{k}\cup \Phi (F_{k})}. Finalmente, se toma F comoFk{\textstyle \bigcup F_{k}}El resto de la demostración consiste en verificar que F es recursivamente enumerable y es el punto fijo más pequeño de Φ. La secuencia F k utilizada en esta demostración corresponde a la cadena de Kleene en la demostración del teorema del punto fijo de Kleene .

La segunda parte del primer teorema de recursión se deduce de la primera. Se utiliza la suposición de que Φ es un operador recursivo para demostrar que el punto fijo de Φ es la gráfica de una función parcial. El punto clave es que si el punto fijo F no es la gráfica de una función , entonces existe algún k tal que F k no es la gráfica de una función.

Comparación con el segundo teorema de recursión

En comparación con el segundo teorema de recursión, el primer teorema de recursión produce una conclusión más sólida, pero solo cuando se cumplen hipótesis más restrictivas. Rogers utiliza el término teorema de recursión débil para el primer teorema de recursión y teorema de recursión fuerte para el segundo. [ 3 ]

Una diferencia entre el primer y el segundo teorema de recursión es que los puntos fijos obtenidos mediante el primer teorema de recursión están garantizados como puntos fijos mínimos, mientras que los obtenidos mediante el segundo teorema de recursión pueden no ser puntos fijos mínimos.

Una segunda diferencia radica en que el primer teorema de recursión solo se aplica a sistemas de ecuaciones que pueden reformularse como operadores recursivos. Esta restricción es similar a la que se aplica a operadores continuos en el teorema de punto fijo de Kleene de la teoría del orden . El segundo teorema de recursión puede aplicarse a cualquier función recursiva total.

Teorema generalizado

En el contexto de su teoría de numeraciones , Ershov demostró que el teorema de recursión de Kleene se cumple para cualquier numeración precompleta . [ 11 ] Una numeración de Gödel es una numeración precompleta en el conjunto de funciones computables, por lo que el teorema generalizado produce el teorema de recursión de Kleene como un caso particular. [ 12 ]

Dado un número precompletoν{\displaystyle \nu }, entonces para cualquier función computable parcialF{\displaystyle f}con dos parámetros existe una función computable totalt{\displaystyle t}con un parámetro tal que

nortenorte:νF(norte,t(norte))=νt(norte).{\displaystyle \forall n\in \mathbb {N} :\nu \circ f(n,t(n))=\nu \circ t(n).}

Véase también

Referencias

Notas a pie de página
  1. Kleene, Stephen C. (1938). "Sobre la notación para números ordinales" ( PDF) . Journal of Symbolic Logic . 3 (4): 150– 155. doi : 10.2307/2267778 . ISSN 0022-4812 . JSTOR 2267778. S2CID 34314018. Recuperado el 6 de mayo de 2020 .   
  2. Kleene 1952 .
  3. 1 2 Rogers 1967 .
  4. Rogers 1967 , §11.2.
  5. Soare, RI (1987). Conjuntos y grados recursivamente enumerables: un estudio de funciones computables y conjuntos generados computacionalmente . Perspectivas en lógica matemática. Berlín y Nueva York: Springer-Verlag . pág. 88. ISBN  9780387152998OCLC 318368332 
  6. Jones 1997 , págs. 229–30.
  7. Kleene 1952 , págs. 352–3.
  8. Cutland, Nigel J. (1980). Computabilidad: Una introducción a la teoría de funciones recursivas . Cambridge University Press . pág. 204. doi : 10.1017 /cbo9781139171496 . ISBN 9781139935609OCLC 488175597. Consultado el 6 de mayo de 2020 . 
  9. Jones 1997 .
  10. Cutland, Nigel. Computabilidad: una introducción a la teoría de funciones recursivas .
  11. Barendregt, Henk ; Terwijn, Sebastiaan A. (2019). «Teoremas de punto fijo para numeraciones precompletas» . Anales de lógica pura y aplicada . 170 (10): 1151– 1161. doi : 10.1016/j.apal.2019.04.013 . hdl : 2066/205967 . ISSN 0168-0072 . S2CID 52289429 . Consultado el 6 de mayo de 2020 .  pág. 1151.
  12. Véase Ershov 1999 , §4.14 para un análisis en inglés.

Lecturas adicionales