tema 5: programas universales · 2006. 11. 29. · tema 5: programas universales dpto. ciencias de...
TRANSCRIPT
-
Tema 5:Programas Universales
Dpto. Ciencias de la Computación e Inteligencia ArtificialUniversidad de Sevilla
Lógica y ComputabilidadCurso 2006–07
LC, 2006–07 Programas universales 5.1
-
Procedimientos de definición
I Estudiaremos procedimientos para definir funciones, que nospermitan obtener nuevas funciones computables a partir deotras funciones computables ya conocidas.
I Es deseable que estos procedimientos de definición permitanobtener todas las funciones GOTO–computables a partir dealgunas funciones básicas cuya computabilidad seaindiscutible.
I Esto nos proporcionará, más adelante, una caracterización delas funciones GOTO-computables independiente de todomodelo de computación particular.
I Consideramos tres procedimientos básicos:I Composición.I Recursión primitiva.I µ–recursión (o minimización).
LC, 2006–07 Programas universales 5.2
-
Composición
Composición:Dadas g : Nn− −→ N, h1, .., hn : Nm− −→ N, decimos quef : Nm− −→ N es la composición de g y h1, . . . , hn, si
Para todo ~x ∈ Nm, f (~x) = g(h1(~x), . . . , hn(~x))
Usamos como notación f = C(g ; h1, . . . , hn).Lema. GCOMP es cerrado bajo composición:
I En efecto, sean g : Nn− −→ N, h1, ..., hn : Nm− −→ NG-computables.El siguiente programa calcula f = C(g ; h1, ..., hn):
Z1 ←− h1(X1, ...,Xm)...
Zn ←− hn(X1, ...,Xm)Y ←− g(Z1, ...,Zn)
LC, 2006–07 Programas universales 5.3
-
Recursión primitiva (I)
Recursión Primitiva:
Dadas g : Nm− −→ N, h : Nm+2− −→ N, decimos quef : Nm+1− −→ N se define por recursión primitiva a partir de g yh (y escribimos f = R(g , h)), si
Para todo ~x ∈ Nm, y ∈ N{
f (~x , 0) = g(~x)f (~x , y + 1) = h(~x , y , f (~x , y))
I Esta definición se extiende al caso m = 0:{f (0) = kf (x + 1) = h(x , f (x))
donde k ∈ N. En este caso escribimos: f = R(k, h), ydiremos que f se obtiene por recursión primitiva a partir de laconstante k y de h.
LC, 2006–07 Programas universales 5.4
-
Recursión primitiva (II)
Lema. GCOMP es cerrado bajo recursión primitiva:
I En efecto, sean g : Nm− −→ N, h : Nm+2− −→ NG-computables.El siguiente programa calcula f = R(g ; h):
Y ←− g(X1, ...,Xm)[A] IF Xm+1 = 0 GOTO E
Y ←− h(X1, ...,Xm,Z ,Y )Z ←− Z + 1Xm+1 ←− Xm+1 − 1GOTO A
LC, 2006–07 Programas universales 5.5
-
µ–recursión (I)
µ-recursión.
Sea f : Nn+1− −→ N, (n ≥ 1). La función definida porµ–recursión a partir de f es la función fµ : Nn− −→ N dada por
fµ(~x) =
{min{y : f (~x , y) = 0 ∧ ∀z < y (f (~x , z) ↓)} si existe↑ e.o.c .
I Nota. Usualmente escribiremos: µy(f (~x , y) = 0).
Lema. GCOMP es cerrada bajo µ–recursión.
I En efecto, sea f : Nn+1− −→ N, (n ≥ 1), GOTO–computable.El siguiente programa calcula fµ:
[A] Z ←− f (X1, ...,Xn,Y )IF Z = 0 GOTO EY ←− Y + 1GOTO A
LC, 2006–07 Programas universales 5.6
-
µ–recursión (II)
I Si θ es un predicado n + 1-ario, definimos:
θµ(~x) ≡ µy(θ(~x , y)) ={
min{y : θ(~x , y)} si existe el minimo↑ e.c .o.c .
Lema. θ ∈ GCOMP =⇒ µy(θ(~x , y)) ∈ GCOMPObservaciones:
I La µ–recursión permite obtener funciones que no son totalesaunque las de partida śı lo sean.
I Ejemplo. Sea f : N2 → N la función GOTO-computable
f (x , y) =
{1 si x = 00 e.o.c.
Entonces, fµ(x) = (µy)(f (x , y) = 0) =
{0 si x 6= 0↑ si x = 0
LC, 2006–07 Programas universales 5.7
-
Funciones básicas
Llamaremos funciones básicas a las siguientes funciones:
I Siguiente: S : N −→ N; S(x) = x + 1I Idénticamente nula: O : N −→ N; O(x) = 0I Proyecciones: Para cada i , n ∈ N (1 ≤ i ≤ n),∏n
i : N −→ N;∏n
i (x1, . . . , xn) = xi
Lema. Las funciones básicas son G-computables:
I Siguiente, S :{
X ←− X + 1Y ←− X
I Nula, O : Programa vaćıo, p∅I Proyecciones,
∏(n)j : Y ←− Xj
LC, 2006–07 Programas universales 5.8
-
Ejemplos (I)
Las siguientes funciones son GOTO–computables:
I La función identidad IN : N −→ NI Las funciones constantes: Cna : Nn −→ N, Cna (~x) = aI La función predecesor: pr : N −→ N
pr(x) =
{0 si x = 0
x − 1 si x > 0
I La función diferencia reducida:•− : N2 −→ N
x•− y =
{0 si x ≤ y
x − y e.c .o.c .
I La función signo: sg : N −→ N
sg(x) =
{0 si x = 01 e.c .o.c .
LC, 2006–07 Programas universales 5.9
-
Ejemplos (II)
Las siguientes funciones son GOTO–computables:
I La función signo inverso:−sg : N −→ N
−sg (x) = 1
•− sg(x)
I La función suma: + : N2 −→ N+(x , y) = x + y
I La función producto: · : N2 −→ N·(x , y) = x ·y
I La función ḿınimo: min : N2 −→ N
min(x , y) =
{x si x ≤ yy e.c .o.c .
I La función máximo: max : N2 −→ N
max(x , y) =
{x si x ≥ yy e.c .o.c .
LC, 2006–07 Programas universales 5.10
-
Ejemplos (III)
I La función distancia: || : N2 −→ N
|x − y | ={
x − y si x ≥ yy − x e.c .o.c .
I La función exponencial: exp : N2 −→ N
exp(x , y) =
{1 si x = 0 ∧ y = 0xy e.c .o.c .
I La función factorial: fact : N −→ N
fact(x) =
1 si x = 0∏1≤j≤x
j e.c .o.c .
LC, 2006–07 Programas universales 5.11
-
Predicados GOTO–computables
I Un predicado sobre N GOTO–computable si la función quelo define es GOTO–computable.
I Un conjunto A ⊆ Nn es GOTO–computable si su funcióncaracteŕıstica, CA, es GOTO–computable.
Ejemplos:
I Los conjuntos ∅ y Nn son GOTO–computables.I Los predicados: θ1(x , y) ≡ x = y ; θ2(x , y) ≡ x ≤ y ;
θ3(x , y) ≡ x < y son GOTO–computables.I Dada f : Nn −→ N; f ∈ GCOMP, los predicados (n + 1)-arios
siguientes son GOTO–computables:
θ(~x , y) ≡ f (~x) = y ; θ′(~x , y) ≡ f (~x) ≤ y ; θ′′(~x , y) ≡ f (~x) < y .
LC, 2006–07 Programas universales 5.12
-
Operaciones con conjuntos y predicados
Proposición. Sean θ, θ′ predicados sobre N, n–arios yGOTO–computables entonces ¬θ, θ ∧ θ′, θ ∨ θ′, θ ⇒ θ′ y θ ⇔ θ′son predicados GOTO–computables.
I ¬θ(~x) = sg(θ(~x)).I (θ ∧ θ′)(~x) = θ(~x)·θ′(~x)I (θ ∨ θ′)(~x) = sg(θ(~x) + θ′(~x))I θ ⇒ θ′ ≡ ¬θ ∨ θ′.I θ ⇔ θ′ ≡ θ ⇒ θ′ ∧ θ′ ⇒ θ
Corolario. Si A,B ⊆ Nn son conjuntos GOTO–computables,entonces: Nn − A; A ∩ B; A ∪ B son GOTO–computables.
I CNn−A = ¬CA;I CA∩B = CA ∧ CB ;I CA∪B = CA ∨ CB
LC, 2006–07 Programas universales 5.13
-
Definiciones por casos
Proposición. Sean k ≥ 2 y f1, . . . , fk : Nn −→ N funcionesGOTO–computables totales. Sea {A1, . . . ,Ak} una partición deNn en conjuntos GOTO–computables, es decir,
Nn =⋃k
i=1 Ai y ∀i , j = 1, . . . , k, i 6= j ⇒ Ai ∩ Aj = ∅Entonces, la función g : Nn −→ N definida por
g(~x) =
f1(~x) si ~x ∈ A1
......
...fk(~x) si ~x ∈ Ak
es GOTO–computable (y total).
I Basta observar que g = f1·CA1 + . . .+ fk ·CAk está en GCOMP.I La proposición anterior puede expresarse con predicados
GOTO–computables θ1, . . . , θk , que sean exhaustivos yexcluyentes, es decir, tales que, para todo ~x ∈ Nn:
θ1(~x) + . . . + θk(~x) = 1LC, 2006–07 Programas universales 5.14
-
Suma y producto acotados
Sea f : Nn+1 −→ N total. Definimos:I Suma acotada:
∑f (~x , y) =
∑z≤y
f (~x , z)
I Producto acotado:∏
f (~x , y) =∏z≤y
f (~x , z)
Proposición. Si f ∈ GCOMP(n+1) entonces∑f ,
∏f ∈ GCOMP(n+1).
Observaciones:
1. En vez de la última variable, podŕıa utilizarse cualquier otracomo cota de la suma o del producto.
2. Para n = 0:∑
f (y) =∑
z≤y f (z) y∏
f (y) =∏
z≤y f (z).
Corolario. Si f : Nn+1 −→ N; g : Nn+k −→ N están en GCOMP,entonces F1,F2 ∈ GCOMP, siendo F1,F2 : Nn+k −→ N,
F1(~x , ~y) =∑
z≤g(~x ,~y)
f (~x , z); F2(~x , ~y) =∏
z≤g(~x ,~y)
f (~x , z)
LC, 2006–07 Programas universales 5.15
-
Cuantificación acotada
Proposición. Sea θ ∈ GCOMP un predicado n+1-ario. Lossiguientes predicados son GOTO–computables:
θ1(~x , y) ≡ ∀z ≤ y θ(~x , z); θ2(~x , y) ≡ ∃z ≤ y θ(~x , z)
I En efecto:
θ1(~x , y) =∏z≤y
θ(~x , z); θ2(~x , y) = sg(∑z≤y
θ(~x , z))
Ejemplos. Los siguientes predicados son GOTO–computables:I Predicado de divisibilidad, x |y :
θ(x , y) ≡ ∃z ≤ y(y = z · x)
I Predicado de primalidad:
primo(x) ≡ (x > 1) ∧ ∀t ≤ x((t|x)→ (t = 1 ∨ t = x))
LC, 2006–07 Programas universales 5.16
-
Minimización acotada (I)
Definición. Sea θ(~x , y) un predicado (n + 1)–ario. Definimos lafunción θ∗µ : Nn+1 → N, aśı:
θ∗µ(~x , y) =
{min{z ≤ y : θ(~x , z)} si existe tal ḿınimoy + 1 e.c.o.c.
I Usualmente escribiremos: (µz)≤y (θ(~x , z))y diremos que θ∗µ se obtiene de θ por minimización acotada.
Definición. Sea f (~x , y) una función (n + 1)–aria. Definimos lafunción de aridad n + 1, f ∗µ , aśı:
f ∗µ (~x , y) = (µz)≤y (f (~x , z) = 0)
I Decimos que f ∗µ se obtiene de f por minimización acotada.
Proposición.I Si θ ∈ GCOMP(n+1) entonces θ∗µ ∈ GCOMP(n+1).I Si f ∈ GCOMP(n+1) entonces f ∗µ ∈ GCOMP(n+1).
LC, 2006–07 Programas universales 5.17
-
Minimización acotada (II)
Ejemplos.I Las funciones cociente y resto:
qt(x , y) =
{(µt)≤x (x < (t + 1) · y) si y 6= 00 en otro caso
rm(x , y) =
{x•− (y · qt(x , y)) si y 6= 0
0 si y = 0
I La sucesión de números primos.Sea p : N→ N la función tal que p(0) = 0 y para todo n ≥ 1,p(n) = pn es el n–ésimo primo.
I Lema. ∀n (pn+1 ≤ 1 + pn!).Por tanto, 1 + p(x)! es una cota para p(x + 1) y tenemos:{
p(0) = 0p(x + 1) = (µy)≤(1+p(x)!) (y > p(x) ∧ primo(y))
Luego p ∈ GCOMP.LC, 2006–07 Programas universales 5.18
-
Codificación de sucesiones finitas
Definición. Una codificación de Nn a partir de N, es una funcióntotal f : Nn −→ N que verifica:
1. f es PR e inyectiva.2. Para cada i , 1 ≤ i ≤ n, la función total, gi : N −→ N:
gi (x) =
{ai si x ∈ rang(f ) ∧ x = f (a1, ..., an)0 e.c .o.c .
es GCOMP.
Sea, ahora, N′ = {ε} ∪ N∗ = {ε} ∪ N ∪ N2 ∪ ... ∪ Nk ...,donde ε es la sucesión vaćıa (de longitud 0).Definición. Una función f : N′ −→ N, codifica N′ a partir de N,si:
I f es total.
I ∀n ≥ 1, f � Nn es una codificación de Nn, a partir de N.
LC, 2006–07 Programas universales 5.19
-
La función par
La función par es la función total 〈· , ·〉 : N2 −→ N definida por
〈x , y〉 = 2x · (2y + 1)•− 1
I La función par es GCOMP y biyectiva.I Para todo x y para todo y se verifica:
x ≤ 〈x , y〉, y ≤ 〈x , y〉I Existen l , r : N −→ N tales que si z = 〈x , y〉 ,
l(z) = x ; r(z) = y z = 〈l(z), r(z)〉
l y r son funciones decodificadoras de 〈 ·, ·〉.I Las funciones l , r son GCOMP(1)
Nota. Usando la función par podemos codificar N3 a partir de N:
(x , y , z) −→ 〈x , 〈y , z〉〉
Y, en general, Nk a partir de N.LC, 2006–07 Programas universales 5.20
-
Números de Gödel
Sea {pn : n ≥ 1} la sucesión de números primos y [ · · · ] : N′ −→ Nla función definida aśı:{
[ε] = 1[a1, ..., an] = p
a11 ...p
ann
Diremos que [a1, ..., an] es el número de Gödel de la sucesiónfinita a1, ..., an.
Propiedades:
I La función [ · · · ] codifica N′ a partir de N.I La función [ · · · ] no es inyectiva.I rang( [ · · · ])= N− {0}.I Cada número natural codifica infinitas sucesiones.
I Para todo i , 1 ≤ i ≤ n se verifica: ai ≤ [a1, ..., an].
LC, 2006–07 Programas universales 5.21
-
Las funciones componente y longitud
Lema. Si x ∈ N−{0, 1} existen unos únicos a1, ..., an ∈ N, an 6= 0,tales que x = [a1, ..., an].
I Si i ∈ {1, ..., n} el número ai es la componente i–ésima de x .Escribiremos (x)i = ai .
I Si i /∈ {1, ..., n} entonces será: (x)i = 0.Definición. Denominaremos función componente a la función:( · )· : N2 −→ N , definida aśı:
(x)i =
(µt)≤x (¬(pt+1i |x)) si x 6= 0
0 si x = 0
Definición. Definimos la función longitud, Long : N −→ N, aśı:
Long(x) =
(µi)≤x ((x)i 6= 0 ∧ ∀j ≤ x (j > i → (x)j = 0)) si x 6= 0, 1
0 si x = 0, 1
I Las funciones componente y longitud son GCOMP.LC, 2006–07 Programas universales 5.22
-
Codificación
I Nuestro siguiente objetivo es probar la existencia deprogramas universales, es decir, programas GOTO capaces desimular al ejecución de cualquier otro programa GOTO.
I Para ello será necesario manejar programas de maneraefectiva, es decir, manejar los programas mediante programas.
I Esto requiere la codificación de programas mediantenúmeros.
I Codificaremos las instrucciones GOTO utilizando la funciónpar 〈 〉.
I Codificaremos los programas GOTO mediante la función deGödel [ · ], usando la codificación de instrucciones previa.
LC, 2006–07 Programas universales 5.23
-
Codificación de las Instrucciones (I)
Una instrucción consta básicamente de tres elementos:
I Etiqueta,
I Variable, y
I Formato (o tipo) de la instrucción.
Codificación de las etiquetas:Ordenamos las etiquetas: A1,B1,C1,D1,E1,A2, ...,E2,A3, ...E3, . . .Asignamos un número a cada etiqueta como sigue:
(k ≥ 1) :
#(Ak) = 5(k − 1) + 1#(Bk) = 5(k − 1) + 2#(Ck) = 5(k − 1) + 3#(Dk) = 5(k − 1) + 4#(Ek) = 5k
LC, 2006–07 Programas universales 5.24
-
Codificación de las Instrucciones (II)
Codificación de las variables:Ordenamos las variables: Y ,X1,Z1,X2,Z2, · · · y asignamos unnúmero a cada variable según este orden:
#(Y ) = 1#(Xk) = 2k (k ≥ 1)#(Zk) = 2k + 1 (k ≥ 1)
Codificación del Formato:0 si el formato es V ←− V1 si el formato es V ←− V + 12 si el formato es V ←− V − 1#(L) + 2 si el formato es IF V 6= 0 GOTO L
LC, 2006–07 Programas universales 5.25
-
Codificación de las Instrucciones (III)
Definición. Sea I una instrucción GOTO. Definimos su código#(I ) como:
#(I ) = 〈a, 〈b, c〉〉en donde:
a =
{0 si I no tiene etiqueta#(L) si I tiene etiqueta L
b = Código del formato de I0 si formato V ←− V1 si formato V ←− V + 12 si formato V ←− V − 1#(L) + 2 si formato IF V 6= 0 GOTO L
c = #(V )− 1 si V es la variable de I .I Todo n ∈ N codifica una única instrucción.
LC, 2006–07 Programas universales 5.26
-
Codificación de los Programas
Sea P = (I1, I2, . . . , In). Definimos:
#(P) = [#(I1),#(I2), . . . ,#(In)]− 1
Si P∅ es el programa vaćıo, #(P∅) = [ε]− 1 = 0
Observaciones:
I Puesto que #(Y ←− Y ) = 〈0, 〈0, 0〉〉 = 0 y[a1, ..., an] = [a1, ..., an, 0, ..0], se tiene:
[#(I1), ...,#(In)] = [#(I1), ...,#(In),#(Y ←− Y ), ...,#(Y ←− Y )]
y, por tanto, la codificación no seŕıa inyectiva si los programasGOTO pudiesen terminar con la instrucción Y ←− Y . Poreso no se permite que dicha instrucción sea la última.
I Lema. Todo n ∈ N codifica un único programa GOTO.
LC, 2006–07 Programas universales 5.27
-
Codificación de las d.i.
Para describir la computación de P sobre ~x codificaremosnuméricamente las descripciones instantáneas.
Codificación de descripciones instantáneas.
I Estados: Dado el estado σ = {V1 = r1,V2 = r2, ...,Vn = rn},con #(Vi ) = i , definimos el código de σ aśı:
#(σ) = [r1, ..., rn]
I Descripciones instantáneas: Sea (i , σ) una d.i. Definimossu código como:
#(i , σ) = 〈i ,#(σ)〉
LC, 2006–07 Programas universales 5.28
-
Programas universales
Sean P ∈ GOTO y ~x ∈ Nn. ¿Es computable la función:
(~x ,#(P))→ [[P]](n)(~x)?
Un programa que calcule esta función se denomina programauniversal. Si fijamos la aridad y designamos por Un a dichoprograma, tendremos:
[[Un]](n+1)(~x ,#(P)) = [[P]](n)(~x)
Esencialmente, un programa universal es un intérprete de GOTO,que simula la ejecución del programa P sobre la tupla ~x que recibecomo entrada.
Notación: Un = [[Un]](n+1).Teorema. Para cada n ≥ 1, existe un programa Un tal que paratodo ~x ∈ Nn y todo programa GOTO, P, se tiene
[[Un]](n+1)(~x ,#(P)) = [[P]](n)(~x)
LC, 2006–07 Programas universales 5.29
-
El programa universal Un
Z ←− Xn+1 + 1S ←−
∏ni=1(p2i )
Xi
K ←− 1
(1)[C ] IF K = Long(Z ) + 1 GOTO F
}(2)
U ←− r((Z )k)P ←− pr(U)+1IF l(U) = 0 GOTO NIF l(U) = 1 GOTO AIF P - S GOTO NIF l(U) = 2 GOTO MK ←− µi ≤ Long(Z )[l((Z )i ) + 2 = l(U)]GOTO C
(3)
[M] S ←− qt(S ,P)GOTO N
[A] S ←− S ·P[N] K ←− K + 1
GOTO C
(4)[F ] Y ←− (S)1
LC, 2006–07 Programas universales 5.30
-
Descripción de Un
I BLOQUE 1: Iniciación del programa UnI En Z guardamos la información acerca del programa P.I En S el estado actualI En K la siguiente instrucción que debe ejecutarse.
(Si K = k y S = s, el par (k, s) almacena una d.i.)
I BLOQUE 2: Test de salida.Un para cuando lleguemos a una d.i. de P terminal. Como lalongitud de P es |P| = Long(Z ), la instrucción de salida será:
IF K = Long(Z ) + 1 GOTO F
I BLOQUE 3: Obtención del tipo de instrucción que debeejecutarse.
I BLOQUE 4: Obtención de la nueva d.i.
LC, 2006–07 Programas universales 5.31
-
Ejecución en tiempo limitado (I)
Proposición. Para cada n ≥ 1 el predicado:
STEP(n)(x1, ..., xn, y , t) ≡“El programa y para sobre (x1, ..., xn) en, a lo sumo, t pasos”.
es GOTO–computable.
I Podemos probar este resultado sin más que modificar elprograma universal Un adecuadamente.
LC, 2006–07 Programas universales 5.32
-
STEP (n) es GOTO–computable
Z ←− Xn+1 + 1S ←−
∏ni=1(p2i )
Xi
K ←− 1
(1)[C ] IF K = Long(Z) + 1 GOTO F
IF Xn+2 = 0 GOTO EXn+2 ←− Xn+2 − 1
(2)U ←− r((Z)k )P ←− pr(U)+1IF l(U) = 0 GOTO NIF l(U) = 1 GOTO AIF P - S GOTO NIF l(U) = 2 GOTO MK ←− µi ≤ Long(Z)[l((Z)i ) + 2 = l(U)]GOTO C
(3)
[M] S ←− qt(S , P)GOTO N
[A] S ←− S ·P[N] K ←− K + 1
GOTO C
(4)[F ] Y ←− Y + 1
LC, 2006–07 Programas universales 5.33
-
La función di (n) es GOTO–computable
La función di (n) : Nn+2 → N, se define mediante:di (n)(~x , e, t) = la t + 1–ésima d. i. de la computación de e sobre ~x
Z ←− Xn+1 + 1S ←−
∏ni=1(p2i )
Xi
K ←− 1
(1)[C ] IF K = Long(Z) + 1 ∨ Xn+2 = 0 GOTO F
Xn+2 ←− Xn+2 − 1
}(2)
U ←− r((Z)k )P ←− pr(U)+1IF l(U) = 0 GOTO NIF l(U) = 1 GOTO AIF P - S GOTO NIF l(U) = 2 GOTO MK ←− µi ≤ Long(Z)[l((Z)i ) + 2 = l(U)]GOTO C
(3)
[M] S ←− qt(S , P)GOTO N
[A] S ←− S ·P[N] K ←− K + 1
GOTO C
(4)[F ] Y ←− 〈K , S〉
LC, 2006–07 Programas universales 5.34
-
Forma normal
Teorema de la forma normal. Para cada n ≥ 1, existenI Un predicado (n + 2)-ario, GOTO–computable, Tn, yI Una función H ∈ GCOMP
tales que, para cada función, f , n-aria y G -computable existe une ∈ N verificando:
1. f (~x) ↓⇔ ∃zTn(~x , e, z)2. f (~x) = H((µz)Tn(~x , e, z))
Demostración: Dada f ∈ GCOMP(n), existe P ∈ GOTOP ,[[P]](n) = f . Sea e = #(P). Entonces
f (~x) ↓⇔ [[P]](n)(~x) ↓ ⇔ ∃t STEP(n)(~x , e, t)Definamos el predicado (n+2)-ario, Tn(~x , e, z) como:
STEP(n)(~x , e, r(z)) ∧ (r(di (n)(~x , e, r(z))))1 = l(z)donde z = 〈y , t〉 es la codificación del valor almacenado en Y(y = l(z)) y el número de pasos (t = r(z)) de la computación deP para la entrada ~x .
LC, 2006–07 Programas universales 5.35