Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Teoría de Figueira - p5
Teoría de Figueira - p5
1, 3, 3, 2, 2
Por ejemplo,
I h2, 5i = 22 (2 · 5 + 1)−̇1 = 43 es
I l(43) = 2 [1, 3, 3, 2, 2] = 21 · 33 · 53 · 72 · 112 = 40020750.
I r (43) = 5
47 48
Propiedades de la codificación de secuencias Observadores de secuencias
Los observadores de la secuencia x = [a1 , . . . , an ] son
I x[i] = ai
Teorema I |x| = longitud de x
Si [a1 , . . . , an ] = [b1 , . . . , bn ] entonces ai = bi para todo Proposición
i ∈ {1, . . . , n}.
Los observadores de secuencias son primitivas recursivas.
Demostración. Demostración.
Por la factorización única en primos.
I x[i] = mı́nt≤x (¬pit+1 |x)
Observar que I |x| = mı́ni≤x (x[i] 6= 0 ∧ (∀j)≤x (j ≤ i ∨ x[j] = 0))
51 52
Lenguaje de programación S (Davis/Sigal/Weyuker) Ejemplo 1
I resulta igual de poderoso que las máquinas de Turing, pero es Ejecución para
más fácil de programar Programa P entrada X = 3:
I imperativo, muy simple [A] X ←X −1 X Y
variables de entrada: X1 , X2 , . . . 3 0
Y ←Y +1
2 1
única variable de salida: Y IF X 6= 0 GOTO A
empiezan inicializadas en 0 1 2
variables temporales: Z1 , Z2 , . . . 0 3
I las variables almacenan números naturales
I 3 instrucciones (cada una puede o no estar etiquetada):
1. V ← V + 1 I escribimos X por X1 ; Z por Z1
I la variable V se incrementa en 1 I P termina cuando X = 0 porque no hay siguiente instrucción
2. V ← V − 1
I V se decrementa en 1 si antes era > 0; si no queda en 0 I P computa la función f : N → N,
I es el V −̇1 que ya vimos (
3. IF V 6= 0 GOTO A x si x 6= 0
I condicional muy primitivo f (x) =
I A es una etiqueta que denota una instrucción del programa 1 si no
I si el valor de V es distinto de 0, la ejecución sigue con la
primera instrucción que tenga etiqueta A I siempre deja la variable X en 0
I si el valor de V es 0, sigue con la próxima instrucción
I programa = sucesión finita de instrucciones 53 54
Ejemplo 2 Macros
[A] IF X 6= 0 GOTO B I S no tiene salto incondicional
Z ←Z +1 I pero podemos simularlo con GOTO L
IF Z 6= 0 GOTO E I lo usamos, como si fuera parte del lenguaje, pero:
I cada vez que aparece
[B] X ←X −1 GOTO L
Y ←Y +1 en un programa P, lo reemplazamos con
Z ←Z +1
V ←V +1
IF Z 6= 0 GOTO A
IF V 6= 0 GOTO L
donde V tiene que ser una variable que no aparece en P.
I computa la función f : N → N, f (x) = x
I cuando intenta ir a E , termina Vamos a ver que se pueden simular muchas otras operaciones.
I en el ejemplo, Z solo sirve para un salto incondicional. En Una vez que sepamos que se pueden escribir en el lenguaje S, las
general GOTO L es equivalente a usamos como si fueran propias (son pseudoinstrucciones).
I la forma abreviada se llama macro
V ←V +1
I el segmento de programa que la macro abrevia se llama
IF V 6= 0 GOTO L
expansión del macro
donde V es una variable nueva (en el ejemplo es Z ) 55 56
Asignación de cero: V ← 0 Asignación de variables: Y ← X
57 58
Y ←0 Y ← X1
[A] IF X 6= 0 GOTO B se puede usar para asignar a la Z ← X2
GOTO C variable V el contenido de la variable
V 0 y dejar V 0 sin cambios dentro de [B] IF Z 6= 0 GOTO A
[B] X ←X −1 GOTO E
un programa P cualquiera: V ← V 0 .
Y ←Y +1 [A] Z ←Z −1
I cambiar Y por V
Z ←Z +1 Y ←Y +1
I cambiar X por V 0
GOTO A GOTO B
I cambiar Z por una variable
[C ] IF Z 6= 0 GOTO D
temporal que no aparezca en P
GOTO E
I cambiar A, B, C , D por
[D] Z ←Z −1 computa la función f : N × N → N
etiquetas que no aparezcan en P
X ←X +1 f (x1 , x2 ) = x1 + x2
GOTO C
59 60
Resta de dos variables Estados
Un estado de un programa P es una lista de ecuaciones de la
Y ← X1 forma V = m (donde V es una variable y m es un número) tal que
Z ← X2 I hay una ecuación para cada variable que se usa en P
[C ] IF Z 6= 0 GOTO A I no hay dos ecuaciones para la misma variable
GOTO E
I g es una función parcial Por ejemplo, para P:
[A] IF Y 6= 0 GOTO B
I la indefinición se nota con
GOTO A ↑ (en el metalenguaje) [A] X ←X −1
[B] Y ←Y −1 I el comportamiento del Y ←Y +1
Z ←Z −1 programa que se indefine IF X 6= 0 GOTO A
es la no terminación
GOTO C
I no hay otra causa de I son estados de P:
computa la función g : N × N → N indefinición I no son estados de P:
I X = 3, Y = 1
( I X = 3, Y = 1, Z = 0 I X =3
x1 − x2 si x1 ≥ x2 I X = 3, Y = 1, Z = 8 I X = 3, Z = 0
g (x1 , x2 ) =
↑ si no I no hace falta que I X = 3, Y = 1, X = 0
sea alcanzado
61 62