Funciones GOTO computables

Documentos relacionados
Lenguaje de programación S (Davis/Sigal/Weyuker) Lógica y Computabilidad. Ejemplo 1. Ejemplo 2

Tema 5: Programas Universales

Tema 5: Procedimientos para obtener funciones computables

Tema 5: Funciones recursivas

Capítulo IV: FUNCIONES RECURSIVAS

Lógica y Computabilidad Capítulo 3

a partir de otras funciones. Entonces C es la menor clase de funciones que contiene a las funciones básicas y es cerrada por los p. d.

Tema 8: Teorema de Herbrand. Tableros en lógica de primer orden

Ejercicios resueltos. Computación. Tema 3

Tema 1: Sintaxis y Semántica de la Lógica Proposicional

Ejercicios resueltos. Teoría de la Computabilidad. Tema 3

La lógica de segundo orden: Sintaxis

LÓGICA FORMAL TEORIAS DE PRIMER ORDEN. Sintaxis y semántica

Tema 9: Resolución en lógica de primer orden

Capítulo V: CONJUNTOS RECURSIVAMENTE ENUMERABLES

Programación Concurrente y distribuida Modelo Concurrente declarativo

Tema 4: (Tecnologías Informáticas) Curso Dpto. Ciencias de la Computación Inteligencia Artificial Universidad de Sevilla

Tema 8: Teorema de Herbrand. Tableros en lógica de primer orden

Lógica Clásica de Predicados

Máquinas de estado finito y expresiones regulares

los lenguajes WHILE y LOOP X2 := X1; while X2 0 do X1 := X1 + 1; X2 := X2 1 od

Ejercicios resueltos. Computación. Tema 4

Tema 4: Lógicas Informática (Tecnologías Informáticas) Curso Dpto. Ciencias de la Computación Inteligencia Artificial Universidad de Sevilla

la máquina de Turing (MT) como sustituto formal del concepto de algoritmo 0 0 r 1

Práctica 4. Contenido: Estructuras de control iterativas (while, do-while, for). Sentencias break y continue.

PHP: Lenguaje de programación

1. Un Lenguaje de Programación Nuestro desarrollo de la Teoria de la Computabilidad se

Máquinas de Turing Definición y descripción

Laboratorio de Arquitectura de Redes. Sentencias de control en lenguaje C

Informática Ingeniería en Electrónica y Automática Industrial

Tema 7. Generación de código

1. Programas y funciones computables

Tema 2: El grupo de las permutaciones

Definiciones previas

Sintaxis LÓGICA COMPUTACIONAL CÁLCULO DE PROPOSICIONES. Funciones boolenas. Semántica

Computación Bio inspirada Tema VI: Modelos de Computación Celular con Membranas

Modelos De Computación. Guía Modelos de Computación. Tema I: Lenguajes y Gramáticas

Tema 2: Métodos de Deducción para la Lógica Proposicional

Modelos de Computación y Complejidad PRELIMINARES

Procesadores de lenguaje Tema 7 Generación de código intermedio

Derive V Límites y derivadas

Análisis lógico Cálculo de proposiciones

Chapter 1. Matrices. 1.1 Introducción y definiciones

Introducción a la Teoría de Autómatas, Lenguajes y Computación

Lenguajes de programación LÓGICA COMPUTACIONAL LENGUAJES DE PROGRAMACIÓN. Sintaxis y semántica formales. Lenguaje IMP

Lenguajes de programación ANÁLISIS LÓGICO LENGUAJES DE PROGRAMACIÓN. Sintaxis y semántica formales. Lenguaje IMP

Tema 7: Formas normales: Formas prenex y de Skolem

Computación I (CI-2125) Clase 3. Prof. Mireya Morales Primera

LENGUAJES Y GRAMÁTICAS

Tema 2: Métodos de Deducción para la Lógica Proposicional

LENGUAJES Y COMPILADORES

Lenguajes de primer orden. Lógica y Computabilidad. símbolos lógicos y auxiliares: x ( ) Segundo cuatrimestre 2011

El lenguaje P. Lógica y Computabilidad ( ) símbolos p. Verano convenciones. Lógica Proposicional - clase 1

Definiciones de computabilidad OTROS MODELOS COMPUTACIONALES. Computabilidad-Turing. Tesis de Church-Turing

Tema 1: Sintaxis y Semántica

Verificación de Modelos

Lenguajes y Gramáticas

BLOQUE 5. SUCESIONES Y SERIES DE NÚMEROS REALES

Tema 1. Introducción

Informática. JavaScript: Lenguaje de programación. Fco J. Martín Mateos Carmen Graciani

Semántica Operacional para la Programación en Lógica Lógica para Ciencias de la Computación

LÓGICA FORMAL TEORIAS DE PRIMER ORDEN. Axiomática

Lógica proposicional. Ivan Olmos Pineda

Estructuras algebraicas. Departamento de Álgebra. Apuntes de teoría

En general, un conjunto A se define seleccionando los elementos de un cierto conjunto U de referencia que cumplen una determinada propiedad.

Bases Formales de la Computación

Compiladores: Sesión 3. Análisis léxico, expresiones regulares

Teoría de la Computación y Leguajes Formales

Tipos de datos en S. Lógica y Computabilidad. Codificación de variables y etiquetas de S. Codificación de programas en S

Lección 6. Errores. MIGUEL ANGEL UH ZAPATA 1 Análisis Numérico I Facultad de Matemáticas, UADY. Agosto 2014

Tema 3: Conjuntos y Funciones

Diferenciciación en R n

Los modelos abstractos de cómputo. Tema 1: Introducción. El modelo transductor. El modelo reconocedor. ordenador. datos. Modelo Abstracto de Cómputo

Conceptos básicos sobre gramáticas

Compiladores: Generación de Código Intermedio

TEMA 2. ESPACIOS VECTORIALES

Exterior del algoritmo. Entorno. Usuario. Procesador. Escribir. v1 v2 v3. Leer. <acción> {; <acción>}

Introducción a la Lógica y la Computación

Enteros (Z):..., -3, -2, -1, 0, 1, 2, 3,... Números enteros (positivos o negativos), sin decimales. Incluye a los naturales.

Preliminares. 1. Notación simbólica. Conjuntos. También se da en el curso de Conjuntos y Numeros.

Sistemas de ecuaciones lineales

Programación de Sistemas. Unidad 6. Macro Procesador

1. Propiedades básicas de las medidas

Introducción a la Lógica y la Computación

Introducción a la indecidibilidad

GENERACIÓN DE CÓDIGO INTERMEDIO ÁRBOLES DE SINTAXIS ABSTRACTA (ASA)

Extremos en Sucesiones

JavaScript: Lenguaje de programación

Computación Bio inspirada Tema VIII: Complejidad Computacional en Modelos Celulares

Computación Bio inspirada Tema IX: Resolución eficiente de problemas NP-completos en Modelos Celulares

Conjuntos. () April 4, / 32

Introducción a la computación. Carlos Lopez Pombo

Formas clausulares Teoría de Herbrand Algoritmo de Herbrand Semidecidibilidad. Teoría de Herbrand. Lógica Computacional

Autómatas Mínimos. Encontrar el autómata mínimo. Universidad de Cantabria. Introducción Minimización de Autómatas Deterministas Resultados Algoritmo

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN

un conjunto cuyos elementos denominaremos vectores y denotaremos por es un espacio vectorial si verifica las siguientes propiedades:

ECUACIONES RECORRIENDO UN CAMINO PARA DEVELAR INCÓGNITAS MÓDULO 4

Matemáticas Empresariales I. Series

Teoría de la Integración

Transcripción:

Funciones GOTO computables Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Lógica Matemática Curso 2011 12 LM, 2011 12 Lenguaje GOTO 4.1

Contenido El lenguaje GOTO Sintaxis Semántica Macros Uso de macros Expansión de macros LM, 2011 12 Lenguaje GOTO 4.2

El Lenguaje GOTO Es un modelo secuencial y determinista con conjunto de datos: N. Sintaxis: De entrada: X 1 (= X ), X 2, X 3,... 1. Variables: De salida: Y Auxiliares: Z 1 (= Z), Z 2, Z 3,... 2. Etiquetas: A 1, B 1, C 1, D 1, E 1, A 2, B 2, C 2, D 2, E 2,... Notación: A = A 1, B = B 1, C = C 1, D = D 1, E = E 1. 3. Instrucciones: Para cada variable V y cada etiqueta L: Incremento: V V + 1 Decremento: V V 1 Condicional: IF V 0 GOTO L Skip: V V Estas instrucciones pueden ser etiquetadas con cualquier etiqueta K. Por ejemplo, [K] V V + 1 [K] IF V 0 GOTO L LM, 2011 12 Lenguaje GOTO 4.3

Programas GOTO Un programa GOTO (un G programa) es una sucesión finita de instrucciones del lenguaje GOTO, P = I 1, I 2,.., I n, cuya última instrucción NO es Y Y. Si P = I 1,..., I n es un programa GOTO el número n se denomina longitud del programa y se denota por P. Caso ĺımite: el Programa Vacío (con 0 instrucciones). Notación: Denotaremos por GOTO P al conjunto de G-programas. Ejemplo: p [A] X X 1 Y Y + 1 IF X 0 GOTO A Cada programa expresa un procedimiento para calcular una cierta función (parcial) de N n en N. El modo en que cada programa lleva a cabo esto se determina mediante la semántica del lenguaje GOTO. LM, 2011 12 Lenguaje GOTO 4.4

Descripciones instantáneas Sea P un programa GOTO. Denotaremos por VAR al conjunto de las variables del lenguaje GOTO y mediante var(p) al conjunto de variables que aparecen en P. Un estado de P es una aplicación σ : VAR N. Un estado es, esencialmente, una tabla variable valor que guarda el valor de las variables del programa en un momento dado. Por ello, a veces, escribiremos V = m en lugar de σ(v ) = m. Una descripción instantánea, (d.i.) de P, es un par s = (i, σ) donde 1 i P + 1 y σ es un estado de P. Cuando i = p + 1, la d.i. se denomina terminal. Si s = (i, σ), escribiremos s(v ) en lugar de σ(v ). LM, 2011 12 Lenguaje GOTO 4.5

Semántica Sea P un programa y s = (j, σ) y s = (j, σ ) descripciones instantáneas de P con j p + 1. Diremos que s es la siguiente de s en la computación de P, y escribimos s p s, si: Caso 1: I j V V + 1, s(v)=m. Entonces j = j + 1 y σ es σ sustituyendo V = m por V = m + 1. Caso 2: I j V V 1, s(v)=m. Entonces j = j + 1 y Si m > 0, σ es σ sustituyendo V = m por V = m 1. Si m = 0, σ = σ Caso 3: I j es de tipo SKIP. Entonces j = j + 1 y σ = σ. Caso 4: I j IF V 0 GOTO L. Entonces σ = σ y Si s(v ) = 0, entonces j = j + 1 Si s(v ) 0 Si existe k tal que I k es la primera instrucción etiquetada con L, entonces j = k Si no existe tal k, j = p + 1 LM, 2011 12 Lenguaje GOTO 4.6

Computación de un programa Una computación de un programa P es una sucesión de d.i. de P, s = s 1,..., s k,... tal que: s 1 = (1, σ) (y se denomina d.i. inicial); Para todo k, con s k no terminal, existe k + 1 tal que s k p s k+1 Una computación s de p es finita si y sólo si existe k tal que s k+1 es terminal; en tal caso, escribiremos P(s) y diremos que dicha computación para y se realiza en k pasos. En caso contrario, la computación s es infinita; escribiremos P(s) y diremos que no para. Lema. Para todo P GOTO P se verifica: Ausencia de bloqueo: Para toda d.i., s, no terminal, existe s tal que s p s. Determinismo: Para cada d.i. inicial existe una única computación. LM, 2011 12 Lenguaje GOTO 4.7

Ejemplo [A] IF X 0 GOTO B Z Z + 1 IF Z 0 GOTO E [B] X X 1 Y Y + 1 IF X 0 GOTO A s 1 = (1, {X = 3, Y = 0, Z = 0}) s 2 = (4, {X = 3, Y = 0, Z = 0}) s 3 = (5, {X = 2, Y = 0, Z = 0}) s 4 = (6, {X = 2, Y = 1, Z = 0}) s 5 = (1, {X = 2, Y = 1, Z = 0}) s 6 = (4, {X = 2, Y = 1, Z = 0}) s 7 = (5, {X = 1, Y = 1, Z = 0}) s 8 = (6, {X = 1, Y = 2, Z = 0}) s 9 = (1, {X = 1, Y = 2, Z = 0}) s 10 = (4, {X = 1, Y = 2, Z = 0}) s 11 = (5, {X = 0, Y = 2, Z = 0}) s 12 = (6, {X = 0, Y = 3, Z = 0}) s 13 = (7, {X = 0, Y = 3, Z = 0}) LM, 2011 12 Lenguaje GOTO 4.8

Funciones GOTO computables Sea P un G programa. La función de aridad n calculada por P es la función [[P]] (n) : N n N definida como sigue: Dado a = (a 1,..., a n ) N n, 1. Sea σ el estado de P dado por: σ(xi ) = a i (1 i n) σ(v ) = 0 para toda V VAR \ {X1,..., X n }. 2. Sea ahora s 1 = (1, σ). Entonces s k (Y ) si existe s 1,..., s k finita de p [[P]] (n) ( a) = a partir de s 1 e.c.o.c. Definición. Diremos que una función f : N n N es GOTO computable (f G COMP), si existe un programa GOTO, P tal que f = [[P]] (n). Designaremos por G COMP (n) al conjunto de funciones computables de aridad n. LM, 2011 12 Lenguaje GOTO 4.9

Ejemplos La función identidad Id N : N N es GOTO computable. IF X 0 GOTO B Z Z + 1 IF Z 0 GOTO E [B] X X 1 Y Y + 1 IF X 0 GOTO B La función vacía f es GOTO computable: La función nula O : N N GOTO computable. [A] Z Z + 1 IF Z 0 GOTO A O(x) = 0 es La función nula es calculada por cualquier programa que pare siempre y en el que no aparezca la variable de salida Y. LM, 2011 12 Lenguaje GOTO 4.10

Macros Existen bloques de instrucciones que podemos considerar como nuevas instrucciones ya que podemos utilizarlos en cualquier programa para realizar una cierta subtarea. Veamos algunos ejemplos de esto: El bloque de instrucciones: Z Z + 1 IF Z 0 GOTO L nos permite realizar un salto incondicional a la instrucción etiquetada por L (o terminar la ejecución del programa). Podemos poner a cero una variable V mediante el siguiente bloque de instrucciones: [L] V V 1 IF V 0 GOTO L LM, 2011 12 Lenguaje GOTO 4.11

Macros (II) Es útil introducir abreviaturas para poder usar cómodamente los bloques anteriores en la descripción de un programa. Dichas abreviaturas se denominan macros y para poder usarlas debemos especificar con precisión la forma en que dichas abreviaturas se reemplazan por verdadero código. } Z GOTO }{{ L} = k Z k + 1 IF Z k 0 GOTO L MACRO }{{} EXPANSIÓN { [K] V V 1 V} {{ 0} = IF V 0 GOTO K MACRO }{{} EXPANSIÓN En el primer caso Z k debe ser una variable que no aparece ne el programa en que realizamos la expansión. En el segundo caso K es una etiqueta que no aparece en dicho programa. LM, 2011 12 Lenguaje GOTO 4.12

Macros. Asignación La macro V V asigna a V el valor de V, conservando V su valor. [A] V 0 IF V 0 GOTO B GOTO C [B] V V 1 V V + 1 Z Z + 1 GOTO A [C] IF Z 0 GOTO D GOTO L [D] Z Z 1 V V + 1 GOTO C [L] V V Copia V en V y en Z y Pone V a cero Copia Z en V Pone Z a cero LM, 2011 12 Lenguaje GOTO 4.13

Uso de las macros La función suma: Sum : N 2 N Sum(x, y) = x + y P + Y X 1 Z X 2 [B] IF Z 0 GOTO A GOTO E [A] Z Z 1 Y Y + 1 GOTO B LM, 2011 12 Lenguaje GOTO 4.14

Uso de macros (II) La función producto. Prod : N 2 N Prod(x, y) = x y p Z 2 X 2 [B] IF Z 2 0 GOTO A GOTO E [A] Z 2 Z 2 1 Z 1 X 1 + Y Y Z 1 GOTO B Nota: Z 1 X 1 + Y es una macro ejecuta el programa Suma y asigna el resultado a la variable Z 1. LM, 2011 12 Lenguaje GOTO 4.15

Expansión de macros (I) Sean f GCOMP (n) y P GOTO P tales que [[P]] (n) = f. Veamos una expansión para la macro: W f (V 1,..., V n ). 1. Renombrando las etiquetas de P si fuese necesario, podemos suponer que la única etiqueta de salida de P es E y todas las demás etiquetas de P son A 1,.., A r. 2. Renombrando variables podemos suponer que las únicas variables de entrada que aparecen en P son X 1,..., X n y las únicas variables auxiliares Z 1,..., Z k. 3. Podemos expresar la situación anterior escribiendo P P(Y, X 1,..., X n, Z 1,..., Z k ; E, A 1,..., A r ) 4. Dado m N podemos obtener un nuevo programa Q m P(Z m,, Z m+1,.., Z m+n, Z m+n+1,.., Z m+n+k ; E m, A m+1,.., A m+r ) sustituyendo en P cada variable y cada etiqueta por la correspondiente de Q m. LM, 2011 12 Lenguaje GOTO 4.16

Expansión de macros (II) Para expandir la macro en un programa P, tomamos m N suficientemente grande para que Q m y P no tengan variables ni etiquetas comunes. Una vez determinado m reemplazamos la macro por: W f (V 1,..., V n ) Z m 0 Z m+1 V 1. Z m+n V n. Z m+n+1 0. Z m+n+k 0 Q m [E m ] W Z m LM, 2011 12 Lenguaje GOTO 4.17

Macros condicionales Si P(V 1,..., V n ) es un predicado G-computable: macroexpansión Z P(V 1,..., V n ) IF Z 0 GOTO L } macro IF P(V 1,..., V n ) 0 GOTO L Ejemplo: IF V = 0 GOTO L V = 0 P(v) = { 1 si v = 0 0 si v 0 donde P(v) es G-computable: { IF X 0 GOTO E Y Y + 1 LM, 2011 12 Lenguaje GOTO 4.18