Sobre la transformación de un programa mediante la sustitución de constantes por variables libres
En la teoría de la computabilidad, la S m
-n El teorema , escrito también como " teorema smn " o " teorema smn " (también llamado lema de traducción , teorema de parámetros y teorema de parametrización ) es un resultado básico sobre los lenguajes de programación (y, más generalmente, las numeraciones de Gödel de las funciones computables ) (Soare 1987, Rogers 1967). Fue demostrado por primera vez por Stephen Cole Kleene (1943). El nombre S m
-n proviene de la aparición de una S con subíndice n y superíndice m en la formulación original del teorema (ver más abajo).
En términos prácticos, el teorema dice que para un lenguaje de programación dado y números enteros positivos m y n , existe un algoritmo particular que acepta como entrada el código fuente de un programa con m + n variables libres , junto con m valores. Este algoritmo genera un código fuente que efectivamente sustituye los valores de las primeras m variables libres, dejando libres el resto de las variables.
El teorema smn establece que dada una función de dos argumentos que es computable , existe una función total y computable tal que básicamente "arregla" el primer argumento de . Es como aplicar parcialmente un argumento a una función. Esto se generaliza sobre tuplas para . En otras palabras, aborda la idea de "parametrización" o "indexación" de funciones computables. Es como crear una versión simplificada de una función que toma un parámetro adicional (índice) para imitar el comportamiento de una función más compleja.
La función está diseñada para imitar el comportamiento de cuando se le dan los parámetros adecuados. Básicamente, al seleccionar los valores correctos para y , puede hacer que se comporte como para un cálculo específico. En lugar de lidiar con la complejidad de , podemos trabajar con una función más simple que capture la esencia del cálculo.
Detalles
La forma básica del teorema se aplica a funciones de dos argumentos (Nies 2009, p. 6). Dada una numeración de Gödel de funciones recursivas, existe una función recursiva primitiva s de dos argumentos con la siguiente propiedad: para cada número de Gödel p de una función computable parcial f con dos argumentos, las expresiones y están definidas para las mismas combinaciones de números naturales x e y , y sus valores son iguales para cualquier combinación de este tipo. En otras palabras, la siguiente igualdad extensional de funciones se cumple para cada x :
De manera más general, para cualquier m , n > 0 , existe una función recursiva primitiva de m + 1 argumentos que se comporta de la siguiente manera: para cada número de Gödel p de una función computable parcial con m + n argumentos, y todos los valores de x 1 , …, x m :
La función descrita anteriormente puede tomarse como .
Declaración formal
Dadas las aridades m y n , para cada máquina de Turing de aridad y para todos los valores posibles de las entradas , existe una máquina de Turing de aridad n , tal que
Además, existe una máquina de Turing S que permite calcular k a partir de x e y ; se denota .
De manera informal, S encuentra la máquina de Turing que es el resultado de codificar de forma rígida los valores de y en . El resultado se generaliza a cualquier modelo computacional de Turing completo .
Esto también puede extenderse a funciones computables totales de la siguiente manera:
Dada una función computable total y tal que , :
También existe una versión simplificada del mismo teorema (definido de hecho como " teorema smn simplificado ", que básicamente utiliza una función computable total como índice de la siguiente manera:
Sea una función computable. En este caso, existe una función computable total tal que , :
Ejemplo
El siguiente código Lisp implementa s 11 para Lisp.
( defun s11 ( f x ) ( let (( y ( gensym ))) ( lista 'lambda ( lista y ) ( lista f x y ))))
Por ejemplo, evalúa a .(s11 '(lambda (x y) (+ x y)) 3)
(lambda (g42) ((lambda (x y) (+ x y)) 3 g42))
Véase también
Referencias
- Kleene, SC (1936). "Funciones recursivas generales de números naturales". Mathematische Annalen . 112 (1): 727–742. doi :10.1007/BF01565439. S2CID 120517999.
- Kleene, SC (1938). "Sobre notaciones para números ordinales" (PDF) . The Journal of Symbolic Logic . 3 : 150–155. doi :10.2307/2267778. JSTOR 2267778. S2CID 34314018.(Ésta es la referencia que la edición de 1989 de la "Teoría de la recursión clásica" de Odifreddi da en la pág. 131 para el teorema.)
- Nies, A. (2009). Computabilidad y aleatoriedad . Oxford Logic Guides. Vol. 51. Oxford: Oxford University Press. ISBN 978-0-19-923076-1.Zbl 1169.03034 .
- Odifreddi, P. (1999). Teoría de la recursión clásica . Holanda del Norte. ISBN 0-444-87295-7.
- Rogers, H. (1987) [1967]. La teoría de funciones recursivas y computabilidad efectiva . Primera edición de bolsillo de la editorial MIT. ISBN 0-262-68052-1.
- Soare, R. (1987). Conjuntos y grados enumerables recursivamente . Perspectivas en lógica matemática. Springer-Verlag. ISBN 3-540-15299-7.
Enlaces externos