Articulo de referencia

operador mu

En la teoría de la computabilidad , el operador μ , operador de minimización u operador de búsqueda no acotada, busca el menor número natural con una propiedad dada. Al añadir e...

En la teoría de la computabilidad , el operador μ , operador de minimización u operador de búsqueda no acotada, busca el menor número natural con una propiedad dada. Al añadir el operador μ a las funciones recursivas primitivas, es posible definir todas las funciones computables .

Definición

Supongamos que R ( y , x 1 , ..., x k ) es una relación fija ( k +1)-aria sobre los números naturales . El operador μ "μ y ", ya sea en su forma ilimitada o limitada, es una " función de teoría de números " definida de los números naturales a los números naturales. Sin embargo, la definición de "μ y " contiene un predicado sobre los números naturales, que puede interpretarse como una condición que se evalúa como verdadera cuando se cumple el predicado y falsa cuando no se cumple.

El operador μ acotado aparece anteriormente en Kleene (1952) , Capítulo IX, Funciones recursivas primitivas, §45 Predicados, representación de factor primo como:

"μyy<zR(y).  El menos y<z de tal manera que R(y), si (y)y<zR(y); de lo contrario, z.{\displaystyle \mu y_{y<z}R(y).\ \ {\mbox{El menor}}\ y<z\ {\mbox{tal que}}\ R(y),\ {\mbox{si}}\ (\exists y)_{y<z}R(y);\ {\mbox{en otro caso}},\ z.}" (pág. 225)

Stephen Kleene señala que se permite cualquiera de las seis restricciones de desigualdad en el rango de la variable y , es decir, y < z , yz , w < y < z , w < yz , wy < z y wyz . "Cuando el rango indicado no contiene ningún y tal que R ( y ) [es "verdadero"], el valor de la expresión "μ y " es el número cardinal del rango" (p.  226); esta es la razón por la que aparece el " z " por defecto en la definición anterior. Como se muestra a continuación, el operador μ acotado "μ y y < z " se define en términos de dos funciones recursivas primitivas llamadas suma finita Σ y producto finito Π, una función predicado que "hace la prueba" y una función de representación que convierte {t, f} en {0, 1}.

En el Capítulo XI §57 Funciones recursivas generales, Kleene define el operador μ no acotado sobre la variable y de la siguiente manera:

"(y)μyR(y)={el menor (número natural) y de tal manera que R(y)}{\displaystyle (\exists y)\mu yR(y)=\{{\mbox{el menor (número natural)}}\ y\ {\mbox{tal que}}\ R(y)\}}" (pág. 279, donde "(y){\displaystyle (\exists y)}" significa " existe un y tal que...")

En este caso, R mismo, o su función representativa , devuelve 0 cuando se satisface (es decir, devuelve verdadero ); la función devuelve entonces el número y . No existe un límite superior para y , por lo tanto, no aparecen expresiones de desigualdad en su definición.

Para un R ( y ) dado, el μ-operador no acotado μ yR ( y ) (nótese que no hay ningún requisito para "(y){\displaystyle (\exists y)}" ) es una función parcial . Kleene la convierte en una función total en su lugar (cf. pág.  317):

εyR(incógnita,y)={el menos y de tal manera que R(incógnita,y),si (y)R(incógnita,y)0,de lo contrario.{\displaystyle \varepsilon yR(x,y)={\begin{cases}{\text{el menor }}y{\text{ tal que }}R(x,y),&{\text{si }}(\exists y)R(x,y)\\0,&{\text{en otro caso}}.\end{cases}}}

La versión total del μ-operador no acotado se estudia en matemáticas inversas de orden superior de la siguiente forma: [ 1 ]

(μ2)(F1)((norte0)(F(norte)=0)F(μ(F))=0),{\displaystyle (\exists \mu ^{2})(\forall f^{1}){\big (}(\exists n^{0})(f(n)=0)\rightarrow f(\mu (f))=0{\big )},}

donde los superíndices indican que n es de orden cero, f es de primer orden y μ es de segundo orden. Este axioma da lugar al sistema de los Cinco Grandes ACA 0 cuando se combina con la teoría base habitual de las matemáticas inversas de orden superior.

Propiedades

(i) En el contexto de las funciones recursivas primitivas , donde la variable de búsqueda y del operador μ está acotada, por ejemplo y < z en la fórmula siguiente, si el predicado R es recursivo primitivo (Prueba de Kleene n.° E, pág.  228), entonces

μ y y < z R ( y , x 1 , ..., x n ) es una función recursiva primitiva.

(ii) En el contexto de las funciones recursivas (totales) , donde la variable de búsqueda y no está acotada pero se garantiza que existe para todos los valores x i de los parámetros del predicado recursivo total R ,

( x 1 ),...,( x n )(y){\displaystyle (\exists y)}R ( y , x i , ..., x n ) implica que μ yR ( y , x i , ..., x n ) es una función recursiva total .
Aquí ( x i ) significa "para todo x i " yy{\displaystyle \exists y}significa "existe al menos un valor de y tal que..." (cf. Kleene (1952), pág. 279).

Entonces, los cinco operadores recursivos primitivos más el operador μ, que es ilimitado pero total, dan lugar a lo que Kleene denominó funciones recursivas "generales" (es decir, funciones totales definidas por los seis operadores de recursión).

(iii) En el contexto de las funciones recursivas parciales : Supongamos que la relación R se cumple para y , x 1 , ..., x n si y solo si se define una función recursiva parcial en y , x 1 , ..., x n y es igual a cero. Y supongamos que esa función recursiva parcial se define (pero no necesariamente es igual a cero) siempre que μ yR ( y , x 1 , ..., x k ) se defina y y sea μ yR ( y , x 1 , ..., x k ) o menor. Entonces la función μ yR ( y , x 1 , ..., x k ) también es una función recursiva parcial.

El operador μ se utiliza en la caracterización de las funciones computables como funciones μ-recursivas .

En matemáticas constructivas , el operador de búsqueda no acotado está relacionado con el principio de Markov .

Ejemplos

Ejemplo 1: El operador μ acotado es una función recursiva primitiva.

En lo siguiente , x representa la cadena x i , ..., x n .

El operador μ acotado puede expresarse de forma bastante sencilla en términos de dos funciones recursivas primitivas (en adelante, "prf") que también se utilizan para definir la función CASE: el producto de términos Π y la suma de términos Σ (véase Kleene #B, página 224). (Según sea necesario, cualquier límite para la variable, como st o t < z , o 5 < x < 17, etc., es apropiado). Por ejemplo:

  • Π st f s ( x , s ) = f 0 ( x , 0) × f 1 ( x , 1) × ... × f t ( x , t )
  • Σ t < z g t ( x , t ) = g 0 ( x , 0) + g 1 ( x , 1) + ... + g z-1 ( x , z -1)

Antes de continuar, necesitamos introducir una función ψ llamada " función representativa " del predicado R. La función ψ se define a partir de entradas (t = "verdad", f = "falsedad") y salidas (0, 1) (¡ nótese el orden! ). En este caso, la entrada a ψ, es decir, {t, f}, proviene de la salida de R:

  • ψ(R = t) = 0
  • ψ(R = f) = 1

Kleene demuestra que μ y y < z R ( y ) se define de la siguiente manera; vemos que la función producto Π actúa como un operador OR booleano, y la suma Σ actúa de forma similar a un AND booleano, pero produce {Σ≠0, Σ=0} en lugar de solo {1, 0}:

μ y y < z R ( y ) = Σ t < z Π st ψ( R ( x , t , s )) =
[ψ( x , 0, 0)] +
[ψ( x , 1, 0) × ψ( x , 1, 1)] +
[ψ( x , 2, 0) × ψ( x , 2, 1) × ψ( x , 2, 2)] +
... +
[ψ( x , z -1, 0) × ψ( x , z -1, 1) × ψ( x , z -1, 2) × . . . × ψ ( x , z -1, z -1)]
Nótese que Σ es en realidad una recursión primitiva con base Σ( x , 0) = 0 y paso de inducción Σ( x , y +1) = Σ( x , y ) + Π( x , y ). El producto Π también es una recursión primitiva con paso base Π( x , 0) = ψ( x , 0) y paso de inducción Π( x , y +1) = Π( x , y ) × ψ( x , y +1).

La ecuación es más fácil de observar con un ejemplo, como el que da Kleene. Simplemente inventó las entradas para la función representativa ψ( R ( y )). Designó las funciones representativas χ( y ) en lugar de ψ( x , y ):

Ejemplo 2: El operador μ no acotado no es recursivo primitivo.

El operador μ no acotado —la función μ y— es el que se define comúnmente en los textos. Pero el lector podría preguntarse por qué el operador μ no acotado busca una función R ( x , y ) que dé como resultado cero , en lugar de algún otro número natural.

En una nota al pie, Minsky permite que su operador termine cuando la función interna produce una coincidencia con el parámetro " k "; este ejemplo también es útil porque muestra el formato de otro autor:
"Para μ t [φ( t ) = k ]" (pág. 210)

La razón del cero es que el operador no acotado μ y se definirá en términos de la función "producto" Π, cuyo índice y puede "crecer" a medida que el operador μ realiza la búsqueda. Como se observa en el ejemplo anterior, el producto Π x < y de una cadena de números ψ( x , 0) *, ..., * ψ( x , y ) da como resultado cero siempre que uno de sus miembros ψ( x , i ) sea cero:

Π s < y = ψ( x , 0) * , ..., * ψ( x , y ) = 0

si cualquier ψ( x , i ) = 0 donde 0≤ is . Por lo tanto, Π actúa como un AND booleano.

La función μ y produce como "salida" un único número natural y = {0, 1, 2, 3, ...}. Sin embargo, dentro del operador pueden aparecer dos "situaciones": (a) una "función de teoría de números" χ que produce un único número natural, o (b) un "predicado" R que produce {t = verdadero, f = falso}. (Y, en el contexto de las funciones recursivas parciales , Kleene admite más adelante un tercer resultado: "μ = indeciso". [ 2 ] )

Kleene divide su definición del μ-operador no acotado para manejar las dos situaciones (a) y (b). Para la situación (b), antes de que el predicado R ( x , y ) pueda servir en una capacidad aritmética en el producto Π, su salida {t, f} debe ser primero "operada" por su función representativa χ para producir {0, 1}. Y para la situación (a), si se va a usar una definición, entonces la función teórica de números χ debe producir cero para "satisfacer" el μ-operador. Una vez resuelto este asunto, demuestra con una sola "Prueba III" que cualquiera de los tipos (a) o (b) junto con los cinco operadores recursivos primitivos producen las funciones recursivas (totales) , con esta condición para una función total :

Para todos los parámetros x , se debe proporcionar una demostración para mostrar que existe un y que satisface (a) μ y ψ( x , y ) o (b) μ yR ( x , y ).

Kleene también admite una tercera situación (c) que no requiere la demostración de "para todo x existe un y tal que ψ( x , y ).". Utiliza esto en su demostración de que existen más funciones recursivas totales de las que se pueden enumerar; cf. nota al pie Demostración de la función total .

La demostración de Kleene es informal y utiliza un ejemplo similar al primero, pero primero transforma el operador μ en una forma diferente que utiliza el "producto de términos" Π que opera sobre la función χ y produce un número natural n , que puede ser cualquier número natural, y 0 en el caso en que se "satisfaga" la prueba del operador μ.

La definición reformulada con la función Π:
μ y y < z χ( y ) =
  • (i): π( x , y ) = Π s < y χ( x , s )
  • (ii): φ( x ) = τ(π( x , y ), π( x , y' ), y )
  • (iii): τ( z' , 0, y ) = y ;τ( u , v , w ) no está definido para u = 0 o v > 0.

Esto es sutil. A primera vista, las ecuaciones parecen utilizar recursión primitiva. Pero Kleene no nos ha proporcionado un paso base y un paso de inducción de la forma general:

  • paso base: φ(0, x ) = φ( x )
  • paso de inducción: φ(0, x ) = ψ(y, φ(0, x ), x )

Para ver qué está pasando, primero debemos recordar que hemos asignado un parámetro (un número natural) a cada variable x i . Segundo, vemos un operador sucesor en funcionamiento que itera sobre y (es decir, y' ). Y tercero, vemos que la función μ y y < z χ( y , x ) simplemente produce instancias de χ( y , x ) es decir χ(0, x ), χ(1, x ), ... hasta que una instancia produce 0. Cuarto, cuando una instancia χ( n , x ) produce 0, hace que el término medio de τ, es decir v = π( x , y' ) produzca 0. Finalmente, cuando el término medio v = 0, μ y y < z χ( y ) ejecuta la línea (iii) y "sale". La presentación de Kleene de las ecuaciones (ii) y (iii) se ha intercambiado para dejar claro que la línea (iii) representa una salida , una salida que se toma solo cuando la búsqueda encuentra con éxito un y que satisface χ( y ) y el término de producto intermedio π( x , y' ) es 0; el operador entonces termina su búsqueda con τ( z' , 0, y ) = y .

τ(π( x , y ), π( x , y' ), y ), es decir:
  • τ(π( x , 0), π( x , 1), 0),
  • τ(π( x , 1), π( x , 2), 1)
  • τ(π( x , 2), π( x , 3), 2)
  • τ(π( x , 3), π( x , 4), 3)
  • ... hasta que se produzca una coincidencia en y = n y entonces:
  • τ( z' , 0, y ) = τ( z' , 0, n ) = n y se realiza la búsqueda del operador μ.

Por ejemplo, Kleene "...considera cualquier valor fijo de ( x i , ..., x n ) y escribe simplemente 'χ( y )' para 'χ( x i , ..., x n ), y )'":

Ejemplo 3: Definición del μ-operador no acotado en términos de una máquina abstracta

Tanto Minsky (1967) pág.  21 como Boolos-Burgess-Jeffrey (2002) págs.  60-61 proporcionan definiciones del operador μ como una máquina abstracta ; véase la nota al pie Definiciones alternativas de μ .

La siguiente demostración sigue el método de Minsky sin la "peculiaridad" mencionada en la nota al pie. La demostración utilizará un modelo de máquina contadora "sucesor" estrechamente relacionado con los axiomas de Peano y las funciones recursivas primitivas . El modelo consta de (i) una máquina de estados finitos con una TABLA de instrucciones y un llamado "registro de estado" que renombraremos como "Registro de Instrucciones" (RI), (ii) algunos "registros", cada uno de los cuales puede contener solo un número natural, y (iii) un conjunto de instrucciones de cuatro "comandos" descritos en la siguiente tabla:

En lo que sigue, el simbolismo "[ r ] " significa "el contenido de", y "→r " indica una acción con respecto al registro r.

El algoritmo para el operador de minimización μ y [φ( x , y )] creará, en esencia, una secuencia de instancias de la función φ( x , y ) a medida que aumenta el valor del parámetro y (un número natural); el proceso continuará (véase la Nota † a continuación) hasta que se produzca una coincidencia entre la salida de la función φ( x , y ) y algún número preestablecido (normalmente 0). Por lo tanto, la evaluación de φ( x , y ) requiere, en primer lugar, la asignación de un número natural a cada una de sus variables x y la asignación de un "número de coincidencia" (normalmente 0) a un registro " w ", y un número (normalmente 0) al registro y .

Nota †: El operador μ ilimitado continuará este proceso de intento de coincidencia indefinidamente o hasta que se produzca una coincidencia. Por lo tanto, el registro " y " debe ser ilimitado; debe poder "almacenar" un número de tamaño arbitrario. A diferencia de un modelo de computadora "real", los modelos de máquinas abstractas permiten esto. En el caso de un operador μ limitado , un operador μ con límite inferior comenzaría con el contenido de y establecido en un número distinto de cero. Un operador μ con límite superior requeriría un registro adicional "ub" para contener el número que representa el límite superior más una operación de comparación adicional; un algoritmo podría proporcionar límites tanto inferiores como superiores.

A continuación, asumimos que el Registro de Instrucciones (IR) encuentra la rutina μ y en la instrucción número n . Su primera acción será establecer un número en un registro dedicado " w ", un ejemplo del número que la función φ( x , y ) debe producir antes de que el algoritmo pueda terminar (clásicamente, este es el número cero, pero consulte la nota al pie sobre el uso de números distintos de cero). La siguiente acción del algoritmo en la instrucción n + 1 será borrar el registro y ; " y " actuará como un contador ascendente que comienza en 0. Luego, en la instrucción n +2, el algoritmo evalúa su función φ( x , y ) (suponemos que esto requiere j instrucciones) y, al final de su evaluación, φ( x , y) deposita su salida en el registro φ. En la instrucción ( n + j +3) el algoritmo compara el número en el registro " w " (por ejemplo, 0) con el número en el registro " φ - si son iguales el algoritmo ha tenido éxito y sale a través de exit ; de lo contrario incrementa el contenido del registro " y " y vuelve al bucle con este nuevo valor de y para probar la función φ( x , y ) de nuevo.

Véase también

Notas a pie de página

Demostración de funcionamiento completo

Lo que es obligatorio para que la función sea una función total es una demostración mediante algún otro método (por ejemplo, inducción ) de que para cada combinación de valores de sus parámetros x i algún número natural y satisfará el operador μ de manera que el algoritmo que representa el cálculo pueda terminar:

«...siempre debemos ser cautelosos al asumir que un sistema de ecuaciones define realmente una función recursiva general (es decir, total). Normalmente requerimos evidencia auxiliar para ello, por ejemplo, en forma de una prueba inductiva que demuestre que, para cada valor de argumento, el cálculo finaliza con un valor único.» (Minsky (1967) p. 186)
"En otras palabras, no debemos afirmar que una función es efectivamente calculable basándonos en que se ha demostrado que es recursiva general (es decir, total), a menos que la demostración de que es recursiva general sea efectiva." (Kleene (1952) p. 319)

Para un ejemplo de lo que esto significa en la práctica, vea los ejemplos en Función recursiva general : incluso el algoritmo de resta truncada más simple " x - y = d " puede producir, para los casos indefinidos cuando x < y , (1) ninguna terminación, (2) ningún número (es decir, algo con el formato incorrecto, por lo que el resultado no se considera un número natural), o (3) engaño: números incorrectos en el formato correcto. El algoritmo de resta "correcto" requiere una atención cuidadosa a todos los "casos".

( x , y ) = {(0, 0), ( a , 0), (0, b ), ( ab , b ), ( a = b , b ), ( a < b , b )}.

Pero incluso cuando se ha demostrado que el algoritmo produce el resultado esperado en los casos {(0, 0), (1, 0), (0, 1), (2, 1), (1, 1), (1, 2)}, nos queda una sensación de inquietud hasta que podamos idear una "demostración convincente" de que los casos ( x , y ) = ( n , m ) producen todos los resultados esperados. Como señala Kleene: ¿es nuestra "demostración" (es decir, el algoritmo que constituye nuestra demostración) lo suficientemente convincente como para considerarse eficaz ?

Modelos alternativos de máquinas abstractas del μ-operador no acotado de Minsky (1967) y Boolos-Burgess-Jeffrey (2002).

El operador μ no acotado es definido por Minsky (1967) pág.  210 pero con un defecto peculiar: el operador no producirá t = 0 cuando se satisfaga su predicado (la prueba IF-THEN-ELSE); en cambio, produce t = 2. En la versión de Minsky, el contador es " t ", y la función φ( t , x ) deposita su número en el registro φ. En la definición habitual de μ, el registro w contendrá 0, pero Minsky observa que puede contener cualquier número k . El conjunto de instrucciones de Minsky es equivalente al siguiente, donde "JNE" = Saltar a z si no es igual:

{ CLR ( r ), INC ( r ), JNE ( r j , r k , z ) }

El operador μ no acotado también es definido por Boolos-Burgess-Jeffrey (2002) págs.  60-61 para una máquina contadora con un conjunto de instrucciones equivalente al siguiente:

{ CLR (r), INC (r), DEC (r), JZ (r, z), H }

En esta versión, el contador "y" se llama "r2", y la función f( x , r2) deposita su valor en el registro "r3". Quizás la razón por la que Boolos-Burgess-Jeffrey borra r3 sea para facilitar un salto incondicional al bucle ; esto se suele hacer mediante el uso de un registro dedicado "0" que contiene "0".

Referencias

  1. Kohlenbach (2005) .
  2. págs. 332 y siguientes
  • Kleene, Stephen (2009) [1952], Introducción a la metamatemática , North-Holland, ISBN 9780923891572, OCLC 935015457 
  • Kohlenbach, Ulrich (2005), Matemáticas inversas de orden superior, Matemáticas inversas 2001 (PDF) , Notas de clase en lógica, Cambridge University Press , págs. 281–295 , CiteSeerX 10.1.1.643.551 , doi : 10.1017/9781316755846.018 , ISBN   9781316755846; véase la Definición 3.8 y la Proposición 3.9.
  • Minsky, Marvin L. (1972) [1967], Computación: Máquinas finitas e infinitas , Prentice-Hall, ISBN 9780131654495, OCLC 974146753 
En las páginas 210-215, Minsky muestra cómo crear el operador μ utilizando el modelo de máquina de registros , demostrando así su equivalencia con las funciones recursivas generales .