El indeterminismo en programación lógico-funcional: un enfoque basado en reescritura 1

Tamaño: px
Comenzar la demostración a partir de la página:

Download "El indeterminismo en programación lógico-funcional: un enfoque basado en reescritura 1"

Transcripción

1 El indeterminismo en programación lógico-funcional: un enfoque basado en reescritura 1 Trabajo de investigación Autor: Directores: Juan Rodríguez Hortalá Francisco J. López Fraguas Jaime Sánchez Hernández Departamento de Sistemas Informáticos y Computación Universidad Complutense de Madrid Junio de Este trabajo ha sido financiado parcialmente por los proyectos TIN C03-03 (MERIT-FORMS-UCM) y S-0505/TIC/0407 (PROMESAS-CAM).

2 2 Agradecimientos Gracias a Jaime y a Paco por introducirme en el mundo de la investigación, por guiarme en mis primeros pasos, y por la confianza depositada y el esfuerzo dedicado para llevar a cabo este trabajo. Gracias también a María por todo lo demás.

3 3 Resumen Por su alto poder expresivo, el uso del indeterminismo ha despertado especial interés en el ámbito de la programación declarativa. En particular, está en la base del lenguaje Prolog [SS86], quizás el representante más conocido de los lenguajes indeterministas. Los lenguajes funcionales, también dentro del ámbito declarativo, no suelen contemplar el indeterminismo como parte constitutiva del lenguaje, aunque no son ajenos a su interés [SS92] y prescriben metodologías para simularlo utilizando sus propias construcciones [Wad85]. La programación lógico-funcional (PLF) [Han94, Rod01, Han05], o más en general la programación declarativa multiparadigma, constituye una corriente de investigación importante, que persigue integrar en un solo lenguaje las principales virtudes de varios paradigmas independientes: programación lógica, programa funcional perezosa, e incluso programación con restricciones. En este trabajo realizaremos una comparativa entre algunas de las descripciones semánticas disponibles para lenguajes lógico-funcionales con funciones indeterministas, y propondremos una nueva descripción semántica para programación lógico-funcional basada en la reescritura. Los marcos abordados serán el de la reescritura de términos [BN98] y el de la lógica de reescritura CRWL [GHLR99], como marcos consolidados; el de la semántica operacional FLC [AHH + 05], como marco emergente; y por último el nuevo marco de la let-reescritura [LRS07c], una de las constribuciones originales de este trabajo. Dedicaremos un capítulo a cada uno de ellos. Intentaremos obtener resultados técnicamente precisos que puedan ser utilizados como herramientas para poder compartir técnicas y extender conclusiones de un formalismo a otro. De esta forma, al plantear cada formalismo su modelo de la PLF desde una perspectiva distinta y a un nivel de abstracción diferente, podremos enfrentar cada problema relativo al análisis o transformación de programas PLF que se nos presente en el futuro, desde el punto de vista más apropiado al problema en cuestión. Algunos de estos resultados, en particular los que relacionan los marcos CRWL y FLC, así como los que relacionan la nueva relación de let-reescritura con CRWL y estos dos últimos marcos con la reescritura tradicional, son resultados originales publicados en [LRS06, LRS07a, LRS07c].

4 4

5 Índice general 1. Introducción Indeterminismo Indeterminismo en programación lógico-funcional Objetivos y estructura del trabajo Objetivos Estructura del trabajo Sistemas de reescritura Sistemas Abstractos de Reducción Expresiones y Sustituciones Sistemas de Reescritura Variantes de la Reescritura Reescritura Basada en Constructoras Reescritura con Variables Extra Estrechamiento La lógica de reescritura CRWL Preliminares Una lógica de reescritura condicional basada en constructoras FLC: una semántica operacional de bajo nivel El lenguaje FLC y su semántica Relación con CRWL El cálculo de pruebas CRWL F LC Relación entre CRWL F LC y FLC Conclusiones Let-reescritura Let-reescritura Sintaxis de la let-reescritura Reglas de la let-reescritura Adecuación de la let-reescritura a CRWL Adecuación de la let-reescritura a CRWL let Otras propiedades de la let-reescritura Let-estrechamiento Adecuación del let-estrechamiento CRWL/let-reescritura vs. reescritura tradicional Corrección de la let-reescritura respecto a la reescritura tradicional. 119

6 6 ÍNDICE GENERAL Completitud de CRWL respecto a la reescritura tradicional Trabajo relacionado y conclusiones Conclusiones finales y trabajo futuro Aportaciones Trabajo futuro Bibliografía 134

7 Capítulo 1 Introducción 1.1. Indeterminismo Según [TFE07a, TFE07b]: El determinismo es la propuesta filosófica según la cual cualquier evento, incluyendo la cognición humana y su comportamiento, la decisión y la acción, es determinado causalmente por una cadena ininterrumpida de acontecimientos previos. El determinismo también puede definirse como la tesis de que en cualquier instante existe un único futuro físicamente posible El indeterminismo es la creencia filosófica opuesta al determinismo: la creencia según la cual existen eventos que no corresponden con el determinismo (y por tanto, en algún sentido, no se deben a ninguna causa). Por ejemplo: 1. Ningún evento tiene causa en absoluto. 2. Algunos eventos no tienen causa en absoluto. 3. Algunos eventos son causados sólo parcialmente. 4. Cualquier evento es causado sólo parcialmente. En el ámbito de los lenguajes de programación comúnmente se considera que un lenguaje es determinista cuando la evaluación de una expresión cualquiera calcula siempre los mismos valores para los mismos datos de entrada. De esta forma se considera que la mayor parte de los lenguajes imperativos (Pascal, C/C++, Java, C#,... ) son deterministas. Sin embargo esta afirmación se puede considerar bastante imprecisa desde cierto punto de vista, pues en cualquiera de estos lenguajes es sencillo escribir un programa que no tenga parámetros de entrada y que devuelva un número pseudo-aleatorio o simplemente que nos diga qué hora es. Cualquiera de estos programas devolverá valores diferentes según el momento en que se invoque, de forma independiente del valor de unos parámetros de entrada que no tiene. Este indeterminismo se deberá a la interacción del lenguaje con el sistema operativo, que hace de interfaz con el mundo exterior. Pero como el mundo exterior no es modelado por estos lenguajes de forma explícita entonces sería muy complicado utilizarlo para razonar sobre el comportamiento de los cómputos. Otra situación común en la que surge el indeterminismo de forma natural es en el ámbito de la programación concurrente, en la que varios procesos se realizan a la vez por diversos

8 8 1. Introducción agentes, en máquinas diferentes o en una misma máquina con capacidades multitarea. Normalmente estos agentes ejecutan tareas de forma independiente y utilizan ciertas primitivas proporcionadas por los lenguajes para sincronizarse y colaborar entre sí. En estos espacios de tiempo en que los procesos se ejecutan de forma independiente es imposible afirmar de forma precisa qué proceso terminará antes su tarea, por ello son necesarias dichas primitivas de sincronización. Este indeterminismo es inevitable incluso cuando los procesos se ejecutan en una única máquina, ya que no podemos saber de antemano como distribuirá los recursos de la máquina el sistema operativo. E incluso, aunque muchos sistemas operativos proporcionan mecanismos para asegurar la provisión de ciertos recursos a procesos determinados, la naturaleza física de las propias máquinas hace imposible determinar con exactitud el momento en que se terminará la ejecución de un único proceso. Sin embargo, el indeterminismo que nos ocupa en este trabajo no es el que surge por la interacción con el exterior, ni el debido a procesos concurrentes o a las limitaciones físicas del hardware. Este trabajo trata sobre el indeterminismo usado como recurso expresivo de un lenguaje. En los lenguajes indeterministas se proporcionan primitivas u otro tipo de recursos para expresar procesos cuyo resultado final no está totalmente determinado por los datos que emplean de entrada. En estos lenguajes, en los que la concurrencia no tiene por qué estar presente, el indeterminismo es parte del modelo de cómputo. Distintas variantes del indeterminismo se han utilizado desde hace mucho tiempo en la especificación de sistemas (e.g, máquinas de Turing o autómatas indeterministas) o la escritura de programas (ejemplos clásicos son las construcciones de McCarthy [McC63] o Dijkstra [Dij97]). El indeterminismo es especialmente útil en problemas que involucran algún proceso de búsqueda, porque permite expresarlos de forma natural y directa: cada alternativa se plasma en el lenguaje como una regla del programa y es el propio sistema el que gestiona la exploración de las distintas posibilidades. Si el lenguaje es determinista (como habitualmente ocurre en programación imperativa) será el programador quien deba codificar expresamente en su algoritmo la exploración de las distintas alternativas, tarea que con frecuencia no es trivial y es proclive a introducir errores en el programa Indeterminismo en programación lógico-funcional Por su alto poder expresivo, el uso del indeterminismo ha despertado especial interés en el ámbito de la programación declarativa. En particular, está en la base del lenguaje Prolog, quizás el representante más conocido de los lenguajes indeterministas. Los lenguajes funcionales, también dentro del ámbito declarativo, no suelen contemplar el indeterminismo como parte constitutiva del lenguaje, aunque no son ajenos a su interés [SS92] y prescriben metodologías para simularlo utilizando sus propias construcciones [Wad85]. La programación lógico-funcional (PLF) [Han94, Rod01, Han05], o más en general la programación declarativa multiparadigma, constituye una corriente de investigación importante, que persigue integrar en un solo lenguaje las principales virtudes de varios paradigmas independientes: programación lógica, programa funcional perezosa, e incluso programación con restricciones. Dos lenguajes actuales representativos de esta corriente son Toy [LS99, CSe06] y Curry [Han06], que comparten sus principales características. En ellos los programas son sistemas de reescritura [BN98] posiblemente no confluentes y no terminantes que definen por tanto funciones perezosas posiblemente no deterministas.

9 1.3. Objetivos y estructura del trabajo 9 La semántica adoptada para el no determinismo es la de elección en la invocación (calltime choice) [Hus93], por resultar más natural para la programación y más eficaz en la ejecución al corresponderse con el mecanismo de compartición (sharing) habitual en los lenguajes funcionales perezosos. La combinación evaluación perezosa/indeterminismo es una cuestión técnica no trivial suscitada en [Hus93] a la que se dio respuesta en [GHLR99] con la propuesta de CRWL, un marco semántico muy detallado considerado como la fundamentación semántica más adecuada [Han05] para esta familia de lenguajes. CRWL ha dado lugar una amplia colección de trabajos (ver [Rod01]) que abordan extensiones del marco original o su uso como base de la construcción de herramientas de desarrollo de programas (depuración, verificación, optimización,...). La combinación de indeterminismo y pereza, además de plantear nuevos desafíos en el ámbito de las descripciones semánticas de los programas, también abre nuevas vías para el desarollo de algoritmos que exploten el uso combinado de estos dos recursos expresivos. En particular, es conocido empíricamente por algunos ejemplos [GHLR99, Han06] que la interacción entre evaluación perezosa e indeterminismo hace que algunos algoritmos formulados de una manera muy natural (declarativa) se comporten mucho más eficientemente que al usar evaluación impaciente, o que al mantener la evaluación perezosa pero simulando el indeterminismo mediante técnicas puramente funcionales clásicas [Wad85]. Sin embargo, sí que es posible simular el indeterminismo en programación funcional de forma eficiente, extrapolando las estructuras implícitas en los mecanismos operacionales de PLF, como mostramos en [LRS07b], un ejemplo de transferencia técnica entre la PLF y la programación funcional. El mecanismo operacional propio de los lenguajes lógico-funcionales es el estrechamiento (narrowing), que combina reescritura y unificación (ver [BN98]). Aunque CRWL incluye también un cálculo de estrechamiento perezoso, la noción que ha jugado un papel más importante ha sido la de estrechamiento necesario (needed narrowing) [AEH00], basada en árboles definicionales [Ant92a] y nociones clásicas de la teoría de reescritura. Establecer la relación técnica entre ambos enfoques -CRWL y estrechamiento necesario- resultaría de gran interés, al conectar dos líneas de trabajo que se han revelado muy fructíferas por separado; pero no ha sido factible hasta la fecha porque en [AEH00] no se consideran sistemas indeterministas, y en alguna secuela suya donde sí se hace [Ant97] el indeterminismo considerado es diferente (semántica de elección en ejecución o run-time choice). Recientemente, sin embargo, se ha presentado en [AHH + 05] un mecanismo operacional que esencialmente combina el estrechamiento necesario con el indeterminismo con elección en la invocación. Las nociones allí presentadas parecen herramientas adecuadas para establecer una relación entre CRWL y el estrechamiento necesario: esta será precisamente una de las aportaciones de este trabajo Objetivos y estructura del trabajo Objetivos En este trabajo realizaremos una comparativa entre algunas de las descripciones semánticas disponibles para lenguajes lógico-funcionales con funciones indeterministas, y propon-

10 10 1. Introducción dremos una nueva descripción semántica para PLF basada en la reescritura. Concretamente, nuestros objetivos son: Revisar y presentar distintas descripciones semánticas existentes para el indeterminismo tal y como se entiende en la programación lógico-funcional moderna. Expondremos los conceptos básicos en el campo de los sistemas abstractos de reducción y la reescritura de términos [BN98], ya que éstas serán las nociones en las que se fundamentan de una manera u otra el resto de descripciones semánticas expuestas. También se presentarán el marco CRWL [GHLR99] y la nueva semántica operacional propuesta en [AHH + 05], que llamaremos FLC. Para cada una de estas nociones se intentará explicar los conceptos subyacentes y dar intuiciones útiles acerca su naturaleza y sus mecanismos por medio de explicaciones verbales y ejemplos. También se presentarán sus propiedades fundamentales y se motivará su utilidad. Establecer una comparación técnica entre dichas descripciones, formulando y probando resultados de equivalencia. Estos resultados se intentarán formular de manera técnica y precisa de forma que puedan ser utilizados como herramientas para poder compartir técnicas y extender conclusiones de un formalismo a otro. De esta forma, al plantear cada formalismo su modelo de la PLF desde una perspectiva distinta y a un nivel de abstracción diferente, podremos enfrentar cada problema relativo al análisis o transformación de programas PLF que se nos presente en el futuro, desde el punto de vista más apropiado al problema en cuestión. Proponer una descripción semántica alternativa para PLF, ligada más estrechamente a la noción de reescritura. Por motivos que explicaremos más adelante la reescritura clásica no es un marco apropiado para la descripción de la semántica de la PLF moderna. Sin embargo la reescritura tiene grandes virtudes a la hora de describir cómputos, ya que proporciona una noción precisa, simple y de alto nivel de abstracción de lo que es dar un paso en el proceso de reducción de una expresión a su valor asociado. Por ello desarrollaremos una modificación de la reescritura, la letreescritura, inspirada en [SH04, MOW98, Plu01], en la que se añaden las nociones de compartición de subexpresiones y elección en la invocación al marco de la reescritura. También introduciremos la relación de let-estrechamiento asociada, y probaremos su corrección y completitud respecto a la let-reescritura. Estudiar la relación entre la nueva noción de let-reescritura y el marco CRWL y el de la reescritura tradicional, buscando resultados de equivalencia que prueben la adecuación de la let-reescritura para describir los cómputos en PLF de forma simple y con un alto nivel de abstracción. De esta manera, al haber relacionado anteriormente la semántica operacional de [AHH + 05] con el marco CRWL, habremos conseguido tender puentes entre cada uno de estos formalismos tan diversos Estructura del trabajo Además de la introducción y conclusiones, este trabajo consta de cuatro capítulos intermedios dedicado cada uno a un formalismo diferente. En los capítulos segundo y tercero expondremos material estándar sobre dos marcos ya consolidados como son la reescritura de términos y la lógica de reescritura CRWL.

11 1.3.2 Estructura del trabajo 11 En el capítulo cuarto introduciremos la semántica FLC tal y como se presenta en [AHH + 05], y los resultados originales (publicados) que hemos obtenido respecto a su relación técnica con CRWL. Por último en el capítulo quinto presentaremos más resultados originales: las nuevas nociones de let-reescritura y let-estrechamiento, y los resultados respecto a la adecuación del let-estrechamiento a la let-reescritura, la adecuación de la letreescritura a CRWL y la adecuación a la reescritura tradicional del marco común formado por CRWL y la let-reescritura, esta última para la clase de programas deterministas. Los resultados respecto a la relación entre la let-reescritura, CRWL y la reescritura tradicional han sido publicados en [LRS07c]. Por último en el capítulo sexto presentaremos las conclusiones, recapitulando las aportaciones del trabajo y evaluando el grado de consecución de los objetivos propuestos, y por último planteando las líneas de trabajo abiertas para un posible desarrollo futuro.

12 12 1. Introducción

13 Capítulo 2 Sistemas de reescritura En este capítulo revisaremos los conceptos fundamentales en el campo de la reescritura de términos. Este material es material estándar en la literatura del tema, y aquí se expone basándose fundamentalmente en su presentación en [BN98, Plu98, Vad02] Sistemas Abstractos de Reducción Definición (Sistema abstracto de reducción (ARS) 1 ). Es cualquier par (A, ) formado por un conjunto A que llamaremos conjunto soporte y una relación binaria sobre él, A A que llamaremos relación de reducción. Utilizaremos a b para denotar (a, b) El término reducción se debe a la manera en que se utilizan a menudo los ARS s para modelar cómputos. Dado un cómputo en el que se calcula un valor v para una expresión e mediante una serie de pasos intermedios i j, podemos modelarlo definiendo un ARS en el que cada paso involucrado en el proceso esté relacionado con el paso que le sigue, lo que denotaríamos e i 1 i 2... i n v. Llamamos derivación o secuencia de reducción a cualquiera de estas cadenas de elementos relacionados. En este modelo la relación de reducción representa la acción de dar un paso de simplificación de la expresión de entrada, con lo que se considera que en a b la expresión b es más simple que a y por tanto su complejidad ha sido reducida. Aunque esta es una buena intuición para el modelado de cómputos terminantes no lo es tanto cuando el cómputo a modelar no termina, como en el caso de un cómputo que enumere los números naturales: podríamos modelar dicho cómputo mediante la derivación (infinita) en la que ya no resulta tan natural considerar que la derivación vaya reduciendo o simplificando los valores. En todo caso nos ceñiremos a esta terminología por compatibilidad con otros textos. Dado que los sistemas de reducción tratan con relaciones, debemos clarificar el concepto de composición de relaciones: Definición (Composición de relaciones). Dadas dos relaciones R B C y S A B su composición se define como 1 Abstract Reduction System

14 14 2. Sistemas de reescritura R S = {(x, z) A C y B tal que (x, y) S, (y, z) R} 2 Las siguientes nociones serán utilizadas con frecuencia a lo largo de este trabajo: Definición (Nociones básicas para ARSs). Dado un ARS (A, ) se definen: - Relaciones de reducción derivadas de : identidad 0 = {(x, x) x A} (i+1)-composición i+1 = i cierre reflexivo = = 0 cierre transitivo + = i>0 i cierre reflexivo-transitivo = 0 + inversa = 1 = {(y, x) x y} cierre simétrico = cierre simétrico-transitivo + = ( ) + cierre simétrico-reflexivo-transitivo = ( ) Estas construcciones pueden entenderse como caminos, por ejemplo si a n b entonces decimos que hay un camino de longitud n entre a y b. - Propiedades de los elementos de A respecto a : x A es reducible sii y A tal que x y. x A está en forma normal o se dice que es irreducible sii y A tal que x y. y A es una forma normal de x A sii y está en forma normal y además x y (hay camino de x a y). Si x tiene una única forma normal entonces ésta se denota por x. y A es un sucesor directo de x A sii x y. y A es un sucesor o reducto de x A sii x + y. x, y A son convertibles si x y. x, y A son reunibles si z A tal que x z y, lo cual denotamos mediante x y. - Propiedades de la relación de reducción : es terminante (o fuertemente normalizante o noetheriana) sii no existe ninguna derivación infinita a 0 a 1 a 2... de elementos de A. es normalizante (o débilmente normalizante) sii todo elemento de A tiene al menos una forma normal. es Church-Rosser sii x y implica que x y, para todo x, y A. Debido a que x y implica x y, la propiedad de Church-Rosser también puede entenderse como la equivalencia x y sii x y. es confluente sii y 1 x y 2 implica que y 1 y 2, para todo x, y 1, y 2 A. 2 Empleamos el criterio (f g)(x) = f(g(x)) que también se emplea en lenguajes como Haskell. El otro criterio posible (f g)(x) = g(f(x)) también es usado ampliamente en otros marcos.

15 2.1. Sistemas Abstractos de Reducción 15 es semi-confluente sii y 1 x y 2 implica que y 1 y 2, para todo x, y 1, y 2 A. es localmente confluente (o débilmente confluente) sii y 1 x y 2 implica que y 1 y 2, para todo x, y 1, y 2 A. es fuertemente confluente sii y 1 x y 2 implica que z A tal que y 1 = z y 2. es subconmutativa sii y 1 x y 2 implica que z A tal que y 1 = z = y 2. tiene la propiedad del diamante sii y 1 x y 2 implica que z A tal que y 1 z y 2. es convergente sii es a la vez confluente y terminante. Podemos ver una representación gráfica de algunas de estas propiedades en la figura 2.1 (página 16), en la que se utilizan líneas continuas para las reducciones cuantificadas universalmente, y líneas discontinuas para las cuantificadas existencialmente. Usaremos esta notación de diagramas a lo largo del trabajo. El campo de estudio de los ARS s ha sido muy explotado a lo largo de los años. Los siguientes son algunos de los resultados más importantes en dicho campo: Teorema (Resultados básicos sobre ARS s). Los siguientes resultados se cumplen para cualquier ARS (A, ) (ver [BN98, Plu98]): a) Terminación implica normalización, aunque la implicación contraria no se cumple en general (ver figura 2.2, página 17). b) La propiedad de Church-Rosser, la confluencia y la semi-confluencia son equivalentes. c) La subconmutatividad implica confluencia. d) La confluencia implica confluencia local. e) Si es confluente entonces ningún elemento de A tiene más de una forma normal. f) Una relación terminante es confluente sii es localmente confluente (lema de Newman [New42]). En ausencia de terminación la confluencia local es estrictamente más débil que la confluencia, como podemos ver en la figura 2.3, página 17). g) La confluencia fuerte implica confluencia. h) La subconmutatividad implica confluencia. i) La propiedad del diamante implica confluencia fuerte, y por tanto también confluencia (por g)). j) Si es normalizante y confluente entonces todo elemento de A tiene una y sólo una forma normal. k) Si es normalizante y confluente entonces x y sii x = y

16 16 2. Sistemas de reescritura x y x y 1 y 2 z z a) Propiedad de Church-Rosser b) Confluencia x x y 1 y 2 y 1 y 2 z z c) Semi-confluencia d) Confluencia local x x y 1 y 2 = z y 1 y 2 = = z e) Confluencia fuerte f) Subconmutatividad x y 1 y 2 z g) Propiedad del diamante Figura 2.1: Propiedades de la relación de reducción

17 2.2. Expresiones y Sustituciones 17 e 0 e 1 e 2 e 3 e 4 e 5... s Figura 2.2: Confluente y normalizante, pero no terminante u x y v Figura 2.3: Confluencia local sin confluencia 2.2. Expresiones y Sustituciones Definición (Signatura). Una signatura Σ es un conjunto de símbolos, donde cada f Σ tiene asociado un número natural que llamamos su aridad. Se entiende cada símbolo de la signatura como una función con tantos argumentos como indica su aridad, por tanto los símbolos con aridad cero corresponderán a funciones constantes. Para cada natural n se define el conjunto Σ n que corresponde al conjunto de símbolos de la signatura cuya aridad asociada es n. Como convención, utilizaremos f, g,... para denotar los símbolos de la signatura. Definición (Variables). Supondremos también la existencia de un conjunto infinito numerable de símbolos de variable V, tal que Σ V =. Como convención utilizaremos x, y, X, Y,... para denotar variables 3. Definición (Expresiones). A partir de Σ y V definimos el conjunto de expresiones Exp como: Exp e ::= x f(e 1,..., e n ) donde x V, f Σ n y e 1,..., e n Exp. En la comunidad de la reescritura es habitual referirse a nuestras expresiones como términos, pero en este trabajo se ha preferido utilizar esta terminología por ser más habitual en los trabajos del marco CRWL [GHLR99] 4. 3 A lo largo de este trabajo adoptaremos una convención u otra (variables en mayúscula o variables en minúscula) según el capítulo en el que nos encontremos, siguiendo siempre la convención correspondiente al marco semántico descrito en dicho capítulo. Por ejemplo para los marcos de reescritura y FLC utilizaremos variables en minúsculas, mientras que para el marcos CRWL y el de la let-reescritura emplearemos variables en mayúsculas. 4 En todo caso debe quedar bien claro que Exp es exactamente el conjunto de términos con los que trabajan los sistemas de reescritura.

18 18 2. Sistemas de reescritura El conjunto de variables de una expresión e Exp, var(e), se define como: var(x) = x var(f(e 1,..., e n )) = var(e i ) i {1,...,n} Se dice que una expresión e Exp es básica o ground cuando var(e) =. Por otra parte una expresión será lineal cuando ninguna variable aparezca dos veces en dicha expresión. A lo largo de este trabajo también utilizaremos la notación o para referirnos a tuplas de elementos de cualquier de construcción sintáctica o. Definición (Posiciones y subexpresiones). Podemos ver las expresiones como árboles cuya raíz es el símbolo de la signatura más externo (o la propia expresión si esta es una variable) y cuyos hijos son los argumentos a los que se aplica este símbolo (en el caso de que sea una variable o constante este árbol sería una hoja). Por ejemplo a la expresión f(g(x), h) le correspondería el siguiente árbol: f g h x Siguiendo esta idea una posición en una expresión es una cadena de naturales separados por puntos que indican cómo movernos por estos árboles empezando por la raíz. Por ejemplo en la expresión anterior la posición 1 correspondería a la subexpresión g(x) mientras que la posición 1.1 a la subexpresión x. Denotamos mediante ɛ a la cadena vacía que corresponde a la posición de la raíz de la expresión. Entonces definimos el conjunto O(e) de posiciones de cualquier e Exp como: O(e) = ɛ ( ɛ i {1,...,n} p O(e i ) si e x V {i.p}) si e f(e 1,..., e n ) Podemos utilizar las posiciones en un término para apuntar a subtérminos de éste. Formalmente la subexpresión de una expresión e que aparece en la posición p O(e), e p, se define como: e ɛ = e f(e 1,..., e n ) i.q = e i q Para el ejemplo anterior tendríamos las siguientes posiciones (anotadas en rojo):

19 2.2. Expresiones y Sustituciones 19 ɛ f 1 g h x La posición ɛ también es conocida por el nombre de posición raíz. Dada una expresión, su símbolo raíz es el símbolo que se encuentra en la raíz del árbol correspondiente a la expresión. Además el conjunto O(e) suele partirse en los conjuntos Õ(e)= {p O(e) e p V} de posiciones en los que no hay variables, y O V (e)= {p O(e) e p V} de posiciones de las variables. Por tanto O(e) = Õ(e) O V(e). Podemos ordenar parcialmente las posiciones en una expresión según el orden de prefijo, que definimos como sigue, dados p, q O(e): p q p q p q y se dice que son paralelas si r tal que p.r q si p q p q si p q q p Definición (Contextos y reemplazamientos). Una noción relacionada con la de posición en un expresión es la de contexto, que se refiere expresiones a las que se les ha practicado uno o varios huecos en alguna posición. En este trabajo emplearemos contextos de un sólo hueco, definimos el conjunto Cntxt de contextos con un solo hueco como: Cntxt C ::= [] f(..., C,...) donde f Σ. La aplicación de un contexto C a una expresión e, denotada como C[e], corresponde con la acción de rellenar el hueco del contexto con dicha expresión, y se define como: [][e] = e f(..., C,...)[e] = f(..., C[e],...) Una noción similar es la de reemplazamiento de una subexpresión por otra, dadas e, s Exp, p O(e), el remplazamiento de e p por s en e se denota como e[s] p y se define como: e[s] ɛ = s f(e 1,..., e n )[s] i.q = f(e 1,..., e i [s] q,..., e n ) Definición (Sustituciones). Una sustitución es una función σ : V Exp tal que {x V σ(x) x} es finito. Denotaremos mediante Subst al conjunto de sustituciones. Aunque como función matemática cualquier sustitución es una función total y por tanto su dominio es siempre V, cuando hablemos del dominio de una sustitución nos referiremos al conjunto de variables de V cuya imagen es distinta de ellas mismas. Formalmente, dada σ Subst:

20 20 2. Sistemas de reescritura Su dominio dom(σ)= {x V σ(x) x} V. Su rango ran(σ)= {σ(x) x dom(σ)} Exp. El conjunto de variables introducidas por la sustitución vran(σ)= {var(σ(x)) x dom(σ)} V. Como los dominios de las sustituciones son finitos por definición, podemos denotar las sustituciones mediante listas de parejas variable/valor, de la forma [x 1 /e 1, x 2 /e 2,...]. Por ejemplo mediante [x/f, y/2, z/h] denotaremos la sustitución σ tal que dom(σ) = {x, y, z} y σ(x) = f, σ(y) = 2 y σ(z) = h. Siguiendo con la idea de esta notación, dadas σ, θ Subst tales que dom(σ) dom(θ) =, mediante σ θ denotaremos la unión disjunta de σ y θ, que es la única sustitución tal que dom(σ θ) = dom(σ) dom(θ), x dom(σ), (σ θ)(x) = σ(x) y x dom(θ), (σ θ)(x) = θ(x). En el caso de la sustitución vacía, que es aquella cuyo dominio es el conjunto vacío, la denotaremos mediante el símbolo ɛ. Dado D V y σ Subst mediante σ D denotamos la restricción de σ al dominio D, sustitución definida como: { σ(x) si x D σ D (x) = x en otro caso Además emplearemos la notación σ \D como abreviatura de σ (V\D) (donde \ es el operador de diferencia de conjuntos), y σ = θ[d] como abreviatura de σ D = θ D Por abuso de notación identificaremos cada sustitución σ con su extensión a expresiones σ : Exp Exp, definida de la forma natural aplicando la sustitución a cada variable que aparece en la expresión argumento. En estos casos también usaremos la notación posfija para la aplicación de sustituciones a expresiones. Por tanto: xσ = σ(x) f(e 1,..., e n )σ = f(e 1 σ,..., e n σ) Denotamos la composición de dos sustituciones σ, θ Subst como (θ σ)(x) = θ(σ(x)). Decimos que σ Subst es idempotente sii σ σ = σ (se puede demostrar que σ Subst es idempotente sii dom(σ) vran(σ) = ). También podemos definir el preorden de subsunción para las sustituciones, según el cual dadas σ, θ Subst se dice que σ es más general que θ, σ θ, sii µ Subst tal que µ σ = θ 5. Como es habitual utilizaremos la abreviatura σ θ[d] para denotar σ D θ D. Este preorden induce un preorden parcial entre expresiones según el cual dadas e, s Exp se tiene que s e sii σ Subst tal que sσ = e. En este caso se dice que e es una instancia de s o que e se ajusta al patrón s (e matches s). Una sustitución σ es un renombramiento si ran(σ) V, y además es biyectiva. Se dice que e, e Exp son variantes cada una de la otra si existe un renombramiento σ tal 5 El criterio, como ocurría con el orden de prefijo de las posiciones, es que es menor el elemento que es más general, es decir, que concreta menos y por tanto aporta menos información. El criterio intuitivo en todos los órdenes que utilizaremos será considerar menor lo que aporte menos información.

21 2.2. Expresiones y Sustituciones 21 que eσ = e. En este caso además ocurre que cada una es instancia de la otra, es decir, e e y e e (lo que no implica que e = e necesariamente). Es sencillo demostrar los siguientes lemas sobre reemplazamientos, sustituciones y posiciones: Lema Para cualquier e, e Exp, o O(e), σ Subst se cumple que (e[e ] o )σ = (eσ)[e σ] o. Demostración. Por inducción en la longitud de o: Caso base : o = ɛ. Entonces (e[e ] ɛ )σ = e σ = (eσ)[e σ] ɛ. Paso inductivo : o = i.q. Como o O(e) entonces e debe ser de la forma e = f(s 1,..., s i,..., s n ), por tanto: (e[e ] o )σ = (f(s 1,..., s i,..., s n )[e ] i.q )σ = f(s 1,..., s i [e ] q,..., s n )σ = f(s 1 σ,..., (s i [e ] q )σ,..., s n σ) = f(s 1 σ,..., (s i σ)[e σ] q,..., s n σ) por HI = f(s 1 σ,..., s i σ,..., s n σ)[e σ] i.q = (f(s 1,..., s i,..., s n )σ)[e σ] i.q = (eσ)[e σ] o Lema Para cualquier e Exp, o O(e), σ Subst se cumple que (eσ) o = (e o )σ. Demostración. Por inducción en la longitud de o: Caso base : o = ɛ. Entonces (eσ) ɛ = eσ = (e ɛ )σ. Paso inductivo : o = i.q. Como o O(e) entonces e debe ser de la forma e = f(s 1,..., s i,..., s n ), por tanto: (eσ) o = (f(s 1,..., s i,..., s n )σ) i.q = f(s 1 σ,..., s i σ,..., s n σ) i.q = (s i σ) q = (s i q )σ por HI = (f(s 1,..., s i,..., s n ) i.q )σ = (e o )σ Como veremos Exp se utiliza muchas veces como el conjunto soporte de un ARS. En ese caso se definen las siguientes propiedades posibles del ARS resultante: Definición (Propiedades de un ARS con Exp como soporte). Dado un ARS (Exp, ): es cerrada bajo sustituciones sii para todo e, e Exp, σ Susbst se tiene que e e implica eσ e σ.

22 22 2. Sistemas de reescritura es cerrada bajo Σ-operaciones sii para todo n 0, e 1,..., e n, e 1,..., e n Exp, f Σ n se tiene que e 1 e 1,..., e n e n implica que f(e 1,..., e n ) f(e 1,..., e n). es compatible con Σ-operaciones sii para todo n 0, e 1,..., e i 1, e, e, e i+1..., e n Exp, f Σ n se tiene que e e implica que f(e 1,..., e i 1, e, e i+1,..., e n ) f(e 1,..., e i 1, e, e i+1,..., e n ). es compatible con Σ-contextos sii para todo s, e, e Exp, o O(s) e tiene que e e implica que s[e] o s[e ] o. El siguiente lema relaciona las propiedades anteriores bajo supuestos diversos [BN98]: Lema Dado un ARS (Exp, ): es compatible con Σ-operaciones sii es compatible con Σ-contextos. Si es reflexiva y transitiva entonces es compatible con Σ-operaciones sii es cerrada bajo Σ-operaciones Sistemas de Reescritura A partir de una signatura Σ y un conjunto de variables V podemos definir el concepto de Σ-ecuación (o simplemente ecuación), que no es más que un par de expresiones e, e Exp que consideramos que son iguales, lo cual expresamos mediante la notación e e. A partir de un conjunto (finito o infinito) E de Σ-ecuaciones sobre expresiones, que llamamos especificación ecuacional, se puede definir la teoría ecuacional de E, que es el conjunto de ecuaciones que se pueden deducir empleando todas las instancias de ecuaciones de E como axiomas, y considerando la reflexividad, simetría, transitividad y cierre bajo Σ-operaciones como reglas de inferencia. De esta forma decimos que la ecuación e e se puede deducir de E, denotado E = e e, sii e e pertenece a la teoría ecuacional de E. Podemos extender esta noción de deductibilidad a partir de una teoría ecuacional a las sustituciones. De esta manera dada una especificación ecuacional E y un par de sustituciones σ, θ Subst decimos que E = σ θ sii x V, E = xσ xθ, y que E = σ θ sii µ Subst tal que E = µ σ θ. Como es habitual utilizaremos E = σ θ[d] como abreviatura de E = σ D θ D, y E = σ θ[d] para abreviar E = σ D θ D. En el momento en que aparecen nociones que definen un nuevo tipo de igualdad entre expresiones basada en criterios semánticos, como ocurre con estas nociones que acabamos de introducir, conviene definir otro tipo de igualdad entre expresiones basada solamente en criterios sintácticos, la igualdad sintáctica (o identidad simbólica o identidad símbolo a símbolo), que denotaremos mediante el símbolo. Esta se define como la menor relación de equivalencia que relaciona dos expresiones si en ambas aparecen los mismos símbolos en las mismas posiciones, es decir, la que sólo relaciona a cada expresión consigo misma. Un cálculo ecuacional es un sistema de inferencia que nos permite computar la teoría ecuacional correspondiente a una especificación ecuacional dada. Los cálculos operacionales más evidentes son muy ineficientes, por lo que a lo largo de los años se ha ido investigando sobre las distintas restricciones más operativas que se pueden imponer sobre las reglas de

23 2.3. Sistemas de Reescritura 23 inferencia de forma que el sistema siga siendo capaz de derivar la teoría ecuacional completa para la especificación ecuacional de entrada. Una de estas técnicas consiste en considerar que las ecuaciones están orientadas de izquierda a derecha, para después utilizarlas como criterio para reemplazar términos por términos más simples, considerando que los lados derechos de las ecuaciones orientadas son más simples que sus correspondientes lados izquierdos. Esta es la idea básica detrás de los sistemas de reescritura. Definición (Reglas y sistemas de reescritura). Una regla de reescritura es una pareja (l, r) Exp Exp, denotada l r, tal que l V y var(r) var(l). Decimos que l es el lado lado izquierdo de la regla y r su lado derecho. De esta forma una regla de reescritura l r no es más que la versión orientada de la ecuación l r. Un sistema de reescritura (TRS) 6 es cualquier conjunto de reglas de reescritura. Ya que cada regla de reescritura es una ecuación orientada, cada TRS tiene una especificación ecuacional asociada, que no es más que la que resulta de considerar que sus reglas no están orientadas. En algunos textos se omite la condición var(r) var(l) de la definición de regla de reescritura, eliminando dicha restricción se obtiene una variante de la reescritura que contemplaremos en la sección De todas formas la noción de regla de reescritura de la definición es la que se utiliza más habitualmente y la que utilizaremos salvo que se indique otra cosa explícitamte. Definición (Paso de reescritura). Dado un sistema de reescritura R, éste induce una relación R Exp Exp que llamamos relación de reescritura de R, definida como: e R e[rσ] o para cualquier e Exp, (l r) R, σ Subst, o O(e) tales que e o lσ. En este caso diremos que e se reescribe a e[rσ] o mediante un paso de reescritura, utilizando la regla l r. El subtérmino de lσ reemplazado en el paso de reescritura se denomina redex (reducible expression) y el proceso de encontrar un redex en una expresión se llama encaje de patrones o matching. Cuando el sistema de reescritura utilizado quede implícito y se sepa claramente de cuál se trata, a menudo omitiremos el subíndice R de la relación de reescritura, escribiendo simplemente e e. También utilizaremos la notación R e e para hacer explícito que la reescritura se realizó empleando el TRS R. Nótese también que el par (Exp, R ) constituye un ARS, al cual podemos por tanto aplicar la terminología usual ( 0, +,,...), y las propiedades de cuya relación de reducción asociada podemos estudiar como tal (confluencia, terminación,... ). Nótese cómo al estar R determinado por el conjunto de reglas R entonces estas propiedades también dependerán de R. Debido a esto en un abuso del lenguaje identificaremos un TRS con su ARS asociado. Por ello también utilizaremos la notación a las nociones propias de los ARS s (e e, e, e e,...). Ejemplo Por ejemplo, dado el siguiente TRS: R = {repeat(x) x : repeat(x), heads(x : y : xs) (x, y), coin 0, coin 1} 6 Term Rewriting System, ya que en terminología clásica de reescritura nuestras expresiones reciben el nombre de términos.

24 24 2. Sistemas de reescritura podemos construir la siguiente derivación de reescritura: heads(repeat(coin)) heads(coin : repeat(coin)) heads(coin : coin : repeat(coin)) (coin, coin) (0, coin) (0, 1) Al ser Exp el conjunto soporte del ARS asociado a un TRS, podemos plantearnos si éste cumple alguna de las propiedades de las definición El siguiente lema formula los resultados a ese respecto: Lema Para cualquier TRS R, se tiene que R es cerrada bajo sustituciones y compatible con Σ-operaciones y Σ-contextos. Por otra parte R es también cerrada bajo sustituciones y compatible con Σ-operaciones y Σ-contextos, y además es cerrada bajo Σ-operaciones. No todas las propiedades de los TRS s se cumplen para TRS s arbitrarios, y algunas incluso son indecidibles, como muestra el siguiente teorema [BN98]: Teorema (Decidibilidad de las propiedades de los TRS s). El problema de decidir cuándo un TRS finito (constituido por un número finito de reglas) es terminante es en general indecidible. Este problema es decidible para la clase de TRS s finitos y básicos por la derecha. Un TRS R es básico por la derecha sii los lados derechos de todas sus reglas son básicos, es decir, (l r) R, var(r) = El problema de decidir cuándo un TRS finito es confluente es en general indecidible. Este problema es decidible para la clase de TRS s finitos y terminantes. Existen condiciones suficientes para garantizar la confluencia, caracterizadas mediante distintas clase de TRS s 7. Podemos utilizar la reescritura como cálculo ecuacional de la especificación ecuacional asociada a un TRS, según el siguiente teorema [Plu98]. Teorema (Completitud de la reescritura como cálculo ecuacional). Para todo TRS R, e, e Exp se tiene que R = e e sii R e e Es decir, la deducibilidad de una ecuación en una especificación ecuacional es equivalente a la convertibilidad en un TRS asociado (puede haber varios correspondientes a las distintas orientaciones de las ecuaciones). Lamentablemente la relación es indecidible para TRS s arbitrarios, pero afortunadamente es decidible para TRS s finitos y convergentes, como veremos en el siguiente teorema. Teorema (Cálculo ecuacional de reescritura). Dado un TRS R finito, confluente y terminante, y un par de expresiones e, e Exp como entrada, el siguiente algoritmo devuelve SI en el caso en que R = e e y NO en otro caso: 7 Una de las clases de TRS s confluentes más popular es la clase de TRS s ortogonales (ver [BN98]), utilizada ampliamente en la teoría de lenguajes funcionales.

25 2.4. Variantes de la Reescritura Calcular las formas normales únicas e, e correspondientes a las expresiones de entrada. 2. Si e e entonces devolver SI, en otro caso devolver NO. Demostración. Como R es terminate no puede existir ninguna cadena infinita e e 1 e 2..., ni tampoco empezando desde e, así que podemos calcular una forma normal para e y para e en un número finito de pasos. Además por el apartado a) del teorema sabemos que terminación implica normalización, por tanto por el apartado j) del mismo teorema sabemos que las formas normales de e y e son únicas, ya que R también es confluente. Por último por el apartado k) del mismo teorema sabemos que x y sii x y 8, lo que combinado con el teorema resulta en que R = e e sii x y, por tanto este algoritmo termina y es correcto y completo Variantes de la Reescritura En esta sección presentaremos un par de variantes de la reescritura que serán utilizadas extensamente en el resto del trabajo, la reescritura basada en constructoras y la reescritura con variables extra. Ambas variantes se pueden combinar resultando la reescritura con variables extra basados en constructoras. De todas formas, excepto en los lugares en que se indique otra cosa expresamente, al hablar de reescritura nos referiremos a la variante ordinaria de la reescritura tal y como se establece en las definiciones y (página 23) Reescritura Basada en Constructoras Esta variante de la reescritura se basa en descomponer la signatura en dos subconjuntos disjuntos: Definición (Constructoras, funciones definidas, c-términos y c-sustituciones). Σ = CS F S, donde CS es el conjunto de símbolos de constructora y FS el de símbolos de funciones definidas. Para cada natural n se definen los conjuntos CS n y F S n que corresponden a la intersección del conjunto correspondiente con Σ n A partir de CS y V definimos el conjunto de c-términos o términos construidos CTerm como: CT erm t ::= x c(t 1,..., t n ) donde x V, c CS n y t 1,..., t n CT erm El conjunto CSubst Subst es el conjunto de sustituciones cuyo rango es subconjunto de CT erm, es decir, CSubst = {θ Subst x dom(θ), σ(x) CT erm}. Llamamos c-sustituciones a los elementos de CSubst. 8 Nótese que en la sección 2.1 todavía no se había formulado el concepto de igualdad sintáctica, por eso el teorema está formulado utilizando = en lugar de, aunque se refiera igualmente a la igualdad sintáctica.

26 26 2. Sistemas de reescritura Como convención, normalmente utilizaremos c, d,... para denotar símbolos de constructora, f, g,... para los símbolos de función, e, e para las expresiones, t, t para los c-términos, σ para sustituciones y θ para c-sustituciones. El significado intuitivo es que Exp contiene las expresiones evaluables mientras que CTerm contiene los valores resultados de las evaluaciones. Para que este criterio sea efectivo, en esta variante de la reescritura se restringe la forma de las reglas de reescritura de la siguiente manera: Definición (Reglas y TRS s basados en constructoras). Una regla de reescritura l r está basada en constructoras si l f(t 1,..., t n ) para algún f F S, i 0, {t 1,..., t n } CT erm. Un TRS está basado en constructoras si todas sus reglas están basadas en constructoras. Por lo demás la reescritura basada en constructoras funciona igual que la reescritura tradicional, sólo se restringe la forma de las reglas de reescritura Reescritura con Variables Extra En esta variante en vez de restringir la forma de las reglas de los TRS s se es más flexible con estas, permitiendo que aparezcan variables en los lados derechos que no aparecen en los lados izquierdos: Definición (Reglas y TRS s con variables extra, variables extra de una regla). Una regla de reescritura con variables extra es una pareja (l, r) Exp Exp, denotada l r, tal que l V. Un TRS con variables extra es cualquier conjunto de reglas de reescritura con variables extra. Denotamos el conjunto de variables extra de una regla de reescritura mediante EV (l r)= var(r)\var(l). La noción de reescritura para TRS s con variables extra se define igual que la noción de reescritura. Nótese que en este caso en un paso e e[lσ] o R e[rσ] o e la sustitución σ puede instanciar libremente las variables extra en l r. Ejemplo El siguiente es un ejemplo de TRS con variables extra: R = { sientonces(cierto, X) X ajunta(pepe, pipo) cierto, ajunta(pepe, popi) cierto, amiguito(x) sientonces(ajunta(x, Y ), Y ) } Las variables extras introducen no confluencia con facilidad, como podemos ver en estas dos derivaciones no reunibles: amiguito(pepe) sientonces(ajunta(pepe, pipo), pipo) sientonces(cierto, pipo) pipo amiguito(pepe) sientonces(ajunta(pepe, popi), popi) sientonces(cierto, popi) popi 2.5. Estrechamiento Esta sección se basará fundamentalmente en los resultados presentados en [Vad02]. Al principio de la sección 2.3 vimos cómo dada una especificación ecuacional E (que no es

27 2.5. Estrechamiento 27 más que un conjunto finito de Σ-ecuaciones), un problema interesante es calcular la teoría ecuacional asociada a E, es decir, el conjunto de ecuaciones que se pueden deducir de E. También es interesante ser capaz de resolver problemas de E-unificación en los cuales dada una ecuación e e que denominamos objetivo debemos encontrar todas las sustituciones σ Subst tales que E = eσ e σ. Llamamos a cada una de estas sustituciones solución del objetivo o E-unificador de e y e. Denominamos a los objetivos así definidos objetivos con semántica ecuacional, ya que su noción de solución asociada está definida en términos de una teoría ecuacional 9. Dada una especificación ecuacional E nos interesaría disponer de un método que fuera capaz de encontrar todos los E-unificadores para cualquier objetivo dado. El problema es que aquello sería poco viable operacionalmente porque en general para una especificación ecuacional E cualquiera y un objetivo cualquiera, el conjunto de sus E-unificadores puede ser infinito. Por ello sería más conveniente manejar conjuntos como los de la siguiente definición: Definición (Conjunto completo de E-unificadores). Dada una especificación ecuacional E y un objetivo e e, un conjunto completo de E-unificadores para ese objetivo es cualquier S Subst que satisface las siguientes condiciones: 1. σ S, σ es un E-unificador de e y e, es decir, E = eσ e σ. 2. σ S, dom(σ) var(e) var(e ). 3. Si θ es un E-unificador de e y e entonces σ S tal que E = σ θ. Es decir, cualquier E-unificador de e y e está generalizado en S. Un conjunto completo de E-unificadores S de e, e Exp se considera minimal sii σ, σ S tales que E = σ σ se tiene que σ = σ, es decir, no contiene unificadores redundantes. Desgraciadamente, no siempre es posible generar de manera efectiva un conjunto completo minimal de unificadores [FH86]: el problema de E-unificación es indecidible en el caso general. El caso particular en que E = es decidible y se denomina unificación sintáctica, ya que se puede reducir al problema de encontrar una sustitución σ Subst tal que eσ e σ. En este caso la solución σ se denomina unificador de e y e. Existen algoritmos eficientes para calcular el unificador de un par de expresiones [MM82], en concreto resulta interesante calcular el unificador más general de un par e, e Exp, denotado umg(e, e ) que tiene la propiedad de que es más general (es menor en el preorden de subsunción) que cualquier otro unificador de e y e. Se puede demostrar que el umg de una pareja de expresiones es siempre único salvo renombramiento, es decir, dados dos unificadores σ, σ de un par de expresiones entonces existe un renombramiento µ Subst tal que µ σ = σ. Una forma eficiente de calcular soluciones para un objetivo ecuacional e e consiste en calcular los vínculos de las variables que constituyen la solución σ a la vez que se realiza la reescritura. La relación resultante es una generalización de la reescritura denominada 9 En otros marcos se establecen otras semánticas para los objetivos, sin ir más lejos la establecida el marco CRWL mediante el operador [GHLR99].

Definición 1 Un semigrupo es un conjunto E provisto de una operación binaria asociativa sobre E, se denota por (E, ).

Definición 1 Un semigrupo es un conjunto E provisto de una operación binaria asociativa sobre E, se denota por (E, ). ALGEBRA La primera parte del presente libro está dedicada a las estructuras algebraicas. En esta parte vamos a iniciar agregándole a los conjuntos operaciones. Cuando las operaciones tienen determinadas

Más detalles

Programación Internet con Lenguajes Declarativos Multiparadigma. PARTE I: Fundamentos

Programación Internet con Lenguajes Declarativos Multiparadigma. PARTE I: Fundamentos Curso de Doctorado: Programación Internet con Lenguajes Declarativos Multiparadigma. PARTE I: Fundamentos Pascual Julián Iranzo Pascual.Julian@uclm.es Universidad de Castilla La Mancha. Departamento de

Más detalles

Tema 1: Conjuntos. Miguel Ángel Olalla Acosta Departamento de Álgebra Universidad de Sevilla. Septiembre de 2017

Tema 1: Conjuntos. Miguel Ángel Olalla Acosta Departamento de Álgebra Universidad de Sevilla. Septiembre de 2017 Tema 1: Conjuntos Miguel Ángel Olalla Acosta miguelolalla@us.es Departamento de Álgebra Universidad de Sevilla Septiembre de 2017 Olalla (Universidad de Sevilla) Tema 1: Conjuntos Septiembre de 2017 1

Más detalles

Tema 1: Conjuntos. Miguel Ángel Olalla Acosta Departamento de Álgebra Universidad de Sevilla. Septiembre de 2018

Tema 1: Conjuntos. Miguel Ángel Olalla Acosta Departamento de Álgebra Universidad de Sevilla. Septiembre de 2018 Tema 1: Conjuntos Miguel Ángel Olalla Acosta miguelolalla@us.es Departamento de Álgebra Universidad de Sevilla Septiembre de 2018 Olalla (Universidad de Sevilla) Tema 1: Conjuntos Septiembre de 2018 1

Más detalles

Tema 1: Conjuntos. Miguel Ángel Olalla Acosta Departamento de Álgebra Universidad de Sevilla. Septiembre de 2016

Tema 1: Conjuntos. Miguel Ángel Olalla Acosta Departamento de Álgebra Universidad de Sevilla. Septiembre de 2016 Tema 1: Conjuntos Miguel Ángel Olalla Acosta miguelolalla@us.es Departamento de Álgebra Universidad de Sevilla Septiembre de 2016 Olalla (Universidad de Sevilla) Tema 1: Conjuntos Septiembre de 2016 1

Más detalles

Conjuntos. Un conjunto es una colección de objetos. Si a es un objeto y R es un conjunto entonces por. a R. se entiende que a pertenece a R.

Conjuntos. Un conjunto es una colección de objetos. Si a es un objeto y R es un conjunto entonces por. a R. se entiende que a pertenece a R. Conjuntos Un conjunto es una colección de objetos. Si a es un objeto y R es un conjunto entonces por se entiende que a pertenece a R. a R Normalmente, podremos definir a un conjunto de dos maneras: Por

Más detalles

1. Conjuntos y funciones

1. Conjuntos y funciones Centro de Matemática Facultad de Ciencias Universidad de la República Introducción a la Topología Curso 2016 PRACTICO 1: CONJUNTOS. 1 1. Conjuntos y funciones Ejercicio 1. Si I es un conjunto y A α es

Más detalles

Sistemas de Reescritura Cristóbal Domínguez González Jorge García de la Nava Ruiz Michel Piliougine Rocha Miguel Ángel Rico Blanco

Sistemas de Reescritura Cristóbal Domínguez González Jorge García de la Nava Ruiz Michel Piliougine Rocha Miguel Ángel Rico Blanco Sistemas de Reescritura Cristóbal Domínguez González Jorge García de la Nava Ruiz Michel Piliougine Rocha Miguel Ángel Rico Blanco 13 de Marzo del 2001 PROGRAMACIÓN DECLARATIVA II Introducción Comenzamos

Más detalles

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

Estructuras algebraicas. Departamento de Álgebra.  Apuntes de teoría ESTRUCTURAS ALGEBRAICAS GRADO EN MATEMÁTICAS. CURSO 2015/2016 Apuntes de teoría Tema 1: Grupos y subgrupos. 1.1. Introducción Definición 1.1. Un grupo es un par (G, ), donde G es un conjunto no vacío,

Más detalles

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

Preliminares. 1. Notación simbólica. Conjuntos. También se da en el curso de Conjuntos y Numeros. CAPíTULO 1 Preliminares 1. Notación simbólica. Conjuntos. También se da en el curso de Conjuntos y Numeros. El método matemático es axiomático y deductivo: a partir de unos principios aceptados inicialmente

Más detalles

Capítulo 4: Conjuntos

Capítulo 4: Conjuntos Capítulo 4: Conjuntos Miguel Ángel Olalla Acosta miguelolalla@us.es Departamento de Álgebra Universidad de Sevilla Septiembre de 2014 Olalla (Universidad de Sevilla) Capítulo 4: Conjuntos Septiembre de

Más detalles

Contenido. Prólogo... Prólogo a la edición en español Argumentos y proposiciones lógicas Introducción

Contenido. Prólogo... Prólogo a la edición en español Argumentos y proposiciones lógicas Introducción CONTENIDO vii Contenido Prólogo... Prólogo a la edición en español... XVIl XXI 1 Cálculo proposicional... 1 1.1 Argumentos y proposiciones lógicas 1.1.1 Introducción 1 1 1.1.2 Algunos argumentos lógicos

Más detalles

Memo Garro. A n F. n=1

Memo Garro. A n F. n=1 σ-álgebra Memo Garro Introducción En este apunte estudiaremos el concepto de σ-álgebra, como un tipo especial de familia de subconjuntos de un espacio Ω, aunque todavía desde un punto de vista puramente

Más detalles

Fundamentos de la especificación formal

Fundamentos de la especificación formal Fundamentos de la especificación formal Métodos Formales en Ingeniería del Software María Alpuente El lenguaje Maude Sintaxis: se utilizan reglas de reescritura (como Haskell, ML, Scheme o Lisp) Semántica:

Más detalles

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

En general, un conjunto A se define seleccionando los elementos de un cierto conjunto U de referencia que cumplen una determinada propiedad. nidad 3: Conjuntos 3.1 Introducción Georg Cantor [1845-1918] formuló de manera individual la teoría de conjuntos a finales del siglo XIX y principios del XX. Su objetivo era el de formalizar las matemáticas

Más detalles

MÉTODOS MATEMÁTICOS DE LA FÍSICA I

MÉTODOS MATEMÁTICOS DE LA FÍSICA I MÉTODOS MATEMÁTICOS DE LA FÍSICA I Ignacio Sánchez Rodríguez Curso 2006-07 TEMA PRELIMINAR ÍNDICE 1. Lenguaje matemático 2 2. Conjuntos 6 3. Aplicaciones 10 4. Relaciones 12 5. Estructuras algebraicas

Más detalles

PARADIGMAS DE PROGRAMACIÓN CALCULO LAMBDA CALCULO LAMBDA

PARADIGMAS DE PROGRAMACIÓN CALCULO LAMBDA CALCULO LAMBDA PARADIGMAS DE PROGRAMACIÓN 2006 CALCULO LAMBDA CALCULO LAMBDA El cálculo lambda fue desarrollado por Alonso Church en la década del 30 con el objeto de dar una teoría general de las funciones. El cálculo

Más detalles

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002 Departamento de Cs. e Ingeniería de la Computación Universidad Nacional del Sur Ejercicios Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto

Más detalles

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

Sintaxis LÓGICA COMPUTACIONAL CÁLCULO DE PROPOSICIONES. Funciones boolenas. Semántica Proposiciones atómicas y compuestas Sintaxis LÓGICA COMPUTACIONAL CÁLCULO DE PROPOSICIONES Francisco Hernández Quiroz Departamento de Matemáticas Facultad de Ciencias, UNAM E-mail: fhq@cienciasunammx Página

Más detalles

DURACIÓN Y UBICACIÓN TEMPORAL DENTRO DEL PLAN DE ESTUDIOS

DURACIÓN Y UBICACIÓN TEMPORAL DENTRO DEL PLAN DE ESTUDIOS 5.3.2.7 FICHA DE LA MATERIA PROGRAMACIÓN DENOMINACIÓN DE LA MATERIA PROGRAMACIÓN MÓDULO AL QUE PERTENECE CRÉDITOS ECTS 30 CARÁCTER Obligatoria DURACIÓN Y UBICACIÓN TEMPORAL DENTRO DEL PLAN DE ESTUDIOS

Más detalles

Tema 1: Fundamentos.

Tema 1: Fundamentos. Tema 1: Fundamentos. 1. Nociones básicas de la Teoría de Conjuntos. Definición. Un conjunto es una colección de objetos. A los objetos de un conjunto se les llama elementos del conjunto. Se denominará

Más detalles

Introducción al Lambda Cálculo (C)

Introducción al Lambda Cálculo (C) Introducción al Lambda Cálculo (C) Francisco Rafael Yépez Pino Programación Declarativa Avanzada Introducción al -Cálculo: 1. δ-reducciones y -reducciones 1.1. Teorías 1.2. Eta-conversión y extensionalidad

Más detalles

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

Formas clausulares Teoría de Herbrand Algoritmo de Herbrand Semidecidibilidad. Teoría de Herbrand. Lógica Computacional Teoría de Herbrand Lógica Computacional Departamento de Matemática Aplicada Universidad de Málaga Curso 2005/2006 Contenido 1 Formas clausulares Refutación y formas clausulares 2 Teoría de Herbrand Universo

Más detalles

Lenguajes funcionales: λ-cálculo

Lenguajes funcionales: λ-cálculo Lenguajes funcionales: λ-cálculo λ-cálculo (Church 1933) Cálculo para el estudio formal del comportamiento de las funciones Sintaxis: λ expresiones Reglas de reducción de λ expresiones Método matemático

Más detalles

TÍTULO: MATEMÁTICA DISCRETA Y LÓGICA Disponibilidad

TÍTULO: MATEMÁTICA DISCRETA Y LÓGICA Disponibilidad TÍTULO: MATEMÁTICA DISCRETA Y LÓGICA Disponibilidad Calculo proposicional 1 Argumentos y proposiciones lógicas 1 Algunos argumentos lógicos importantes 2 Proposiciones 4 Conexiones lógicas 5 Negación (tabla)

Más detalles

Tecnología de la Programación

Tecnología de la Programación Tecnología de la Programación Semántica Operacional David Cabrero Souto Facultad de Informática Universidade da Coruña Curso 2007/2008 Verificación formal Recordar descriptores BOE: Diseño de algoritmos

Más detalles

DESIGUALDADES. AXIOMA 1.- Tricotomía de los números reales. Si a y b son números reales entonces se cumple una y solo una de las relaciones

DESIGUALDADES. AXIOMA 1.- Tricotomía de los números reales. Si a y b son números reales entonces se cumple una y solo una de las relaciones DESIGUALDADES 4.1.- AXIOMAS DE ORDEN. Cualquier conjunto o Campo de números que satisface los siguientes 4 Axiomas se dice que es un conjunto de números ORDENADO. El conjunto o Campo de los números reales

Más detalles

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

Tema 4: (Tecnologías Informáticas) Curso Dpto. Ciencias de la Computación Inteligencia Artificial Universidad de Sevilla Tema 4: Proposicional Dpto. Ciencias de la Computación Inteligencia Artificial Universidad de Sevilla Lógica Informática (Tecnologías Informáticas) Curso 2015 16 Contenido Los tableros semánticos proporcionan

Más detalles

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

un conjunto cuyos elementos denominaremos vectores y denotaremos por es un espacio vectorial si verifica las siguientes propiedades: CAPÍTULO 2: ESPACIOS VECTORIALES 2.1- Definición y propiedades. 2.1.1-Definición: espacio vectorial. Sea un cuerpo conmutativo a cuyos elementos denominaremos escalares o números. No es necesario preocuparse

Más detalles

Operaciones extendidas de conjuntos

Operaciones extendidas de conjuntos 234 A. GENERALIDADES DE TEORÍA DE CONJUNTOS Tema 3. Operaciones extendidas de conjuntos En este tema extenderemos las operaciones de conjuntos anteriormente definidas a familias arbitrarias de conjuntos.

Más detalles

Informática Haskell Matemáticas Curso Pepe Gallardo Universidad de Málaga. Temario

Informática Haskell Matemáticas Curso Pepe Gallardo Universidad de Málaga. Temario Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Temario 1 Introducción y semántica operacional 2 Tipos predefinidos 3 Patrones y Definiciones de Funciones 4 Funciones

Más detalles

Curso: Teoría de la Computación. Unidad 2, Sesión 7: Complejidad computacional

Curso: Teoría de la Computación. Unidad 2, Sesión 7: Complejidad computacional Curso: Teoría de la Computación. Unidad 2, Sesión 7: Complejidad computacional Instituto de Computación, Facultad de Ingeniería Universidad de la República, Montevideo, Uruguay dictado semestre 2-2009

Más detalles

Coordinación de Matemática I (MAT021) 1 er Semestre de 2013 Semana 1: Lunes 11 Viernes 16 de Marzo. Contenidos

Coordinación de Matemática I (MAT021) 1 er Semestre de 2013 Semana 1: Lunes 11 Viernes 16 de Marzo. Contenidos Coordinación de Matemática I (MAT021) 1 er Semestre de 2013 Semana 1: Lunes 11 Viernes 16 de Marzo Complementos Contenidos Clase 1: Elementos de lógica: Conectivos, tablas de verdad, tautologías y contingencias.

Más detalles

Teorema de Existencia y Unicidad Ecuaciones Diferenciales Ordinarias.

Teorema de Existencia y Unicidad Ecuaciones Diferenciales Ordinarias. Teorema de Existencia y Unicidad Ecuaciones Diferenciales Ordinarias. Dr. Rafael Morones E. Dept. de Matemáticas ITAM August 5, 2002 1 Contenido 1 Preliminares. 3 1.1 Sucesiones...............................

Más detalles

Lógica Clásica de Predicados

Lógica Clásica de Predicados Lógica Clásica de Predicados Lógica Computacional Departamento de Matemática Aplicada Universidad de Málaga 10 de enero de 2008 Contenido 1 Sintaxis 2 Variables y Sustituciones 3 Significado y verdad 4

Más detalles

Capítulo 2 Conjuntos. 2.1 Introducción. 2.2 Determinación de conjuntos. Definición:

Capítulo 2 Conjuntos. 2.1 Introducción. 2.2 Determinación de conjuntos. Definición: Capítulo 2 Conjuntos 2.1 Introducción El concepto de conjunto, de singular importancia en la ciencia matemática y objeto de estudio de una de sus disciplinas más recientes, está presente, aunque en forma

Más detalles

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Algoritmos y programas. Algoritmos y Estructuras de Datos I Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de

Más detalles

Programación con restricciones - Tema 0 : Conceptos básicos

Programación con restricciones - Tema 0 : Conceptos básicos Programación con restricciones - Tema 0 : Conceptos básicos Rafael Caballero Roldán - Facultad de Informática - UCM 1. Introducción Esta asignatura trata de la programación con restricciones, un paradigma

Más detalles

1. Conjuntos y funciones

1. Conjuntos y funciones PRACTICO 1: CONJUNTOS. 1. Conjuntos y funciones Es útil saber de memoria las siguientes propiedades de conjuntos y funciones. Tanto como saber las tablas. Ejercicio 1. Si I es un conjunto y A α es un conjunto

Más detalles

n! = 1 2 n 0! = 1 (n+1)! = (n + 1) n!

n! = 1 2 n 0! = 1 (n+1)! = (n + 1) n! Capítulo 3 Recursión La recursión es un estilo autoreferencial de definición usado tanto en matemática como en informática. Es una herramienta de programación fundamental, particularmente importante para

Más detalles

Lenguajes de Programación

Lenguajes de Programación Lenguajes de Programación Semántica Ma. Laura Cobo Departamento de Ciencias e Ingeniería de la Computación 2018 Prof. Ma. Laura Cobo Página 1 Semántica La clase pasada, vimos como definir la sintaxis y

Más detalles

Análisis lógico Cálculo de proposiciones

Análisis lógico Cálculo de proposiciones Sintaxis Semántica Sistemas de demostración Análisis lógico Cálculo de proposiciones Departamento de Matemáticas Facultad de Ciencias, UNAM E-mail: fhq@ciencias.unam.mx Página Web: www.matematicas.unam.mx/fhq

Más detalles

3.3. TEORÍA BÁSICA DE CONJUNTOS Utilizar tablas de verdad para comprobar la equivalencia lógica p q p q.

3.3. TEORÍA BÁSICA DE CONJUNTOS Utilizar tablas de verdad para comprobar la equivalencia lógica p q p q. 3.3. TEORÍA BÁSICA DE CONJUNTOS 83 a) p q b) p q c) q p 7. Sabiendo que la proposición compuesta ( q) (q p) es falsa, indicar cuál es el valor de verdad de las proposiciones p y q. 8. Utilizar tablas de

Más detalles

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Lógica y Estructuras Discretas Tutor: Antonio Rivero Cuesta Tema 3 Conjuntos, Relaciones y Funciones Conjuntos y Operaciones Los conjuntos se representan con letras mayúsculas,

Más detalles

Temas. Objetivo. Que el estudiante logre:

Temas. Objetivo. Que el estudiante logre: 0 Temas Objetivo Que el estudiante logre: 1) Formalizar problemas de decisión. 2) Identificar conceptos constructivos de la Teoría de la Computabilidad. 1 2 TEORÍA DE LA COMPLEJIDAD COMPUTACIONAL TEORÍA

Más detalles

1. Medida Exterior. Medida de Lebesgue en R n

1. Medida Exterior. Medida de Lebesgue en R n 1. La integral de Lebesgue surge del desarrollo de la integral de Riemann, ante las dificultades encontradas en las propiedades de paso al ĺımite para calcular la integral de una función definida como

Más detalles

Esquemas de análisis sintáctico para CFG

Esquemas de análisis sintáctico para CFG Apéndice A Esquemas de análisis sintáctico Los algoritmos de análisis sintáctico de esta memoria se describen utilizando esquemas de análisis sintáctico, una estructura para realizar descripciones de alto

Más detalles

FUNDAMENTOS DE COMPUTABILIDAD GUÍA DOCENTE

FUNDAMENTOS DE COMPUTABILIDAD GUÍA DOCENTE FUNDAMENTOS DE COMPUTABILIDAD GUÍA DOCENTE OBJETIVOS: El área de Fundamentos de Computabilidad se encuadra en el campo de la Informática Teórica, que trata de dar respuesta a cuestiones tales como qué

Más detalles

Lenguajes Libres del Contexto

Lenguajes Libres del Contexto Capítulo 3 Lenguajes Libres del Contexto [LP81, cap 3] n este capítulo estudiaremos una forma de representación de lenguajes más potentes que los regulares. Los lenguajes libres del contexto (LC) son importantes

Más detalles

INTRODUCCION AL ALGEBRA.

INTRODUCCION AL ALGEBRA. INTRODUCCION AL ALGEBRA. 2- TEORIA DE CONJUNTOS. Apuntes de la Cátedra. Alberto Serritella. Colaboraron: Cristian Mascetti. Vanesa Bergonzi Edición Previa CECANA CECEJS CET Junín 2010. UNNOBA Universidad

Más detalles

Capítulo 2. Funciones

Capítulo 2. Funciones Capítulo 2. Funciones Objetivo: El alumno analizará las características principales de las funciones reales de variable real y formulará modelos matemáticos. Contenido: 2.1 Definición de función real de

Más detalles

Curso Básico de Computación

Curso Básico de Computación Curso Básico de Computación 4 Gramáticas libres de contexto Feliú Sagols Troncoso Matemáticas CINVESTAV-IPN 2010 Curso Básico de Computación (Matemáticas) 4 Gramáticas libres

Más detalles

Capítulo 2. Preliminares Definiciones Básicas de Lógica

Capítulo 2. Preliminares Definiciones Básicas de Lógica Capítulo 2 Preliminares El objetivo principal del siguiente capítulo es proveer al lector de definiciones básicas en lógica matemática para que los resultados del trabajo de tesis sean entendibles. Este

Más detalles

TEMA 5: NÚMEROS RACIONALES ÍNDICE:

TEMA 5: NÚMEROS RACIONALES ÍNDICE: TEMA 5: NÚMEROS RACIONALES ÍNDICE: 1 INTRODUCCIÓN 2 EL CONJUNTO DE LOS NÚMEROS RACIONALES 3 REPRESENTACIÓN GEOMÉTRICA DE LOS NÚMEROS RACIONALES 4 SUMA DE NÚMEROS RACIONALES 5 MULTIPLICACIÓN DE NÚMEROS

Más detalles

TEMA 1: NÚMEROS NATURALES. SISTEMA DE NUMERACIÓN

TEMA 1: NÚMEROS NATURALES. SISTEMA DE NUMERACIÓN 1 TEMA 1: NÚMEROS NATURALES. SISTEMA DE NUMERACIÓN 1. INTRODUCCIÓN Los números naturales aparecen debido a la necesidad que tiene el hombre para contar. Para poder construir este conjunto N, podemos seguir

Más detalles

Conjuntos finitos y conjuntos numerables

Conjuntos finitos y conjuntos numerables Tema 3 Conjuntos finitos y conjuntos numerables En este tema vamos a usar los números naturales para contar los elementos de un conjunto, o dicho con mayor precisión, para definir los conjuntos finitos

Más detalles

open green road Guía Matemática INECUACIONES profesor: Nicolás Melgarejo .cl

open green road Guía Matemática INECUACIONES profesor: Nicolás Melgarejo .cl Guía Matemática INECUACIONES profesor: Nicolás Melgarejo.cl 1. Orden en R Consideremos un conjunto compuesto por símbolos no numéricos como el siguiente: A = {Œ, Ø,!, #, Æ, ø} No es posible ordenar el

Más detalles

Contenido. BLOQUE I: PRELIMINARES Tema 2 ALGUNAS NOCIONES DE TEORÍA DE CONJUNTOS, RELACIONES Y FUNCIONES Lógica Grado en Ingeniería Informática

Contenido. BLOQUE I: PRELIMINARES Tema 2 ALGUNAS NOCIONES DE TEORÍA DE CONJUNTOS, RELACIONES Y FUNCIONES Lógica Grado en Ingeniería Informática Contenido BLOQUE I: PRELIMINARES Tema 2 ALGUNAS NOCIONES DE TEORÍA DE CONJUNTOS, RELACIONES Y FUNCIONES Lógica Grado en Ingeniería Informática Alessandra Gallinari URJC Nociones de teoría de conjuntos

Más detalles

Conjuntos, relaciones y funciones Susana Puddu

Conjuntos, relaciones y funciones Susana Puddu Susana Puddu 1. Repaso sobre la teoría de conjuntos. Denotaremos por IN al conjunto de los números naturales y por ZZ al de los enteros. Dados dos conjuntos A y B decimos que A está contenido en B o también

Más detalles

Estructuras Discretas. Conjuntos. Conjuntos & Funciones. Especificación de Conjuntos.

Estructuras Discretas. Conjuntos. Conjuntos & Funciones. Especificación de Conjuntos. Estructuras Discretas Conjuntos Conjuntos & Funciones Claudio Lobos clobos@inf.utfsm.cl niversidad Técnica Federico Santa María Estructuras Discretas INF 152 Definición: conjunto n conjunto es una colección

Más detalles

PRELIMINARES. En este capítulo vamos a dar, sin ser muy estrictos, algunas nociones necesarias para la compresión de la asignatura.

PRELIMINARES. En este capítulo vamos a dar, sin ser muy estrictos, algunas nociones necesarias para la compresión de la asignatura. 1 PRELIMINARES 1. CONJUNTOS En este capítulo vamos a dar, sin ser muy estrictos, algunas nociones necesarias para la compresión de la asignatura. 1.1 Def:. Se define un conjunto como una colección de objetos.

Más detalles

Conjuntos finitos y conjuntos numerables

Conjuntos finitos y conjuntos numerables Tema 3 Conjuntos finitos y conjuntos numerables En este tema vamos a usar los números naturales para contar los elementos de un conjunto, o dicho con mayor precisión, para definir los conjuntos finitos

Más detalles

Introducción a la Complejidad Computacional

Introducción a la Complejidad Computacional Introducción a la Complejidad Computacional El análisis sobre decidibilidad que hemos hecho nos permite saber qué podemos hacer y qué no podemos hacer. Pero nada sabemos de qué tan difícil resolver los

Más detalles

Teorías. Una teoría acerca de una base de conocimiento Σ contendrá no sólo a Σ sino que a todo lo que se puede deducir de Σ.

Teorías. Una teoría acerca de una base de conocimiento Σ contendrá no sólo a Σ sino que a todo lo que se puede deducir de Σ. Teorías Qué es una teoría? Ya hemos usado antes la noción de base de conocimiento Este concepto se refiere a un conocimiento, representado a través de axiomas. Una teoría acerca de una base de conocimiento

Más detalles

Introducción TEORÍA DE LA COMPUTACIÓN INTRODUCCIÓN. Lógica

Introducción TEORÍA DE LA COMPUTACIÓN INTRODUCCIÓN. Lógica Introducción TEORÍA DE LA COMPUTACIÓN INTRODUCCIÓN Francisco Hernández Quiroz Departamento de Matemáticas Facultad de Ciencias, UNAM E-mail: fhq@ciencias.unam.mx Página Web: www.matematicas.unam.mx/fhq

Más detalles

Conjuntos, Aplicaciones y Relaciones

Conjuntos, Aplicaciones y Relaciones Conjuntos, Aplicaciones y Relaciones Curso 2017-2018 1. Conjuntos Un conjunto será una colección de objetos; a cada uno de estos objetos lo llamaremos elemento del conjunto. Si x es un elemento del conjunto

Más detalles

Recordemos que utilizaremos, como es habitual, la siguiente notación para algunos conjuntos de números que son básicos.

Recordemos que utilizaremos, como es habitual, la siguiente notación para algunos conjuntos de números que son básicos. Capítulo 1 Preliminares Vamos a ver en este primer capítulo de preliminares algunos conceptos, ideas y propiedades que serán muy útiles para el desarrollo de la asignatura. Se trata de resultados sobre

Más detalles

Definiciones Inductivas

Definiciones Inductivas Definiciones Inductivas Lógica Matemática José de Jesús Lavalle Martínez 24 de junio de 2011 Resumen Este documento es una traducción de partes de la sección 2.3 Inductive Definitions del libro Logic for

Más detalles

Axiomas del Cálculo de Predicados

Axiomas del Cálculo de Predicados Axiomas del Cálculo de Predicados Si bien el cálculo proposicional nos permitió analizar cierto tipo de razonamientos y resolver acertijos lógicos, su poder expresivo no es suficiente para comprobar la

Más detalles

EL TEOREMA DE SEIFERT-VAN KAMPEN. 1. Preliminares sobre grupos

EL TEOREMA DE SEIFERT-VAN KAMPEN. 1. Preliminares sobre grupos EL TEOREMA DE SEIFERT-VAN KAMPEN 1. Preliminares sobre grupos Sea G un grupo. Denotaremos de forma multiplicativa la operación en G. Así, el producto de x, y G es x y, y el inverso de x G es x 1. Para

Más detalles

Introducción a la programación: Contenido. Introducción

Introducción a la programación: Contenido. Introducción Introducción a la programación: Contenido Introducción a la programación:... 1 Introducción... 1 1. Procesamiento automatizado de información... 1 2. Concepto de algoritmo.... 2 3. Lenguajes de programación....

Más detalles

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

Lenguajes de programación LÓGICA COMPUTACIONAL LENGUAJES DE PROGRAMACIÓN. Sintaxis y semántica formales. Lenguaje IMP Lenguajes de programación LÓGICA COMPUTACIONAL LENGUAJES DE PROGRAMACIÓN Francisco Hernández Quiroz Departamento de Matemáticas Facultad de Ciencias, UNAM E-mail: fhq@ciencias.unam.mx Página Web: www.matematicas.unam.mx/fhq

Más detalles

Conjuntos, relaciones de equivalencia y aplicaciones

Conjuntos, relaciones de equivalencia y aplicaciones CAPíTULO 1 Conjuntos, relaciones de equivalencia y aplicaciones 1. Conjuntos La idea de conjunto es una de las más significativas en Matemáticas. La mayor parte de los conceptos matemáticos están construidos

Más detalles

Lenguajes de programación ANÁLISIS LÓGICO 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 Lenguajes de programación ANÁLISIS LÓGICO LENGUAJES DE PROGRAMACIÓN Francisco Hernández Quiroz Departamento de Matemáticas Facultad de Ciencias, UNAM E-mail: fhq@ciencias.unam.mx Página Web: www.matematicas.unam.mx/fhq

Más detalles

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

LÓGICA FORMAL TEORIAS DE PRIMER ORDEN. Sintaxis y semántica LÓGICA FORMAL TEORIAS DE PRIMER ORDEN Sintaxis y semántica Pedro López Departamento de Inteligencia Artificial Facultad de Informática Universidad Politécnica de Madrid Lenguajes de primer orden 1 La lógica

Más detalles

UNIDAD 5 : ESTRUCTURAS ALGEBRAICAS

UNIDAD 5 : ESTRUCTURAS ALGEBRAICAS UNIVERSIDAD DON BOSCO - DEPARTAMENTO DE CIENCIAS BÁSICAS UNIDAD 5 : ESTRUCTURAS ALGEBRAICAS ÁLGEBRA LINEAL - GUIÓN DE CLASE - SEMANA 10 - CICLO 01-2015 Estudiante: Grupo: 1. Aplicaciones 1.1. Aplicaciones.

Más detalles

Métodos de Inteligencia Artificial

Métodos de Inteligencia Artificial Métodos de Inteligencia Artificial L. Enrique Sucar (INAOE) esucar@inaoep.mx ccc.inaoep.mx/esucar Tecnologías de Información UPAEP Contenido Lógica proposicional Lógica de predicados Inferencia en lógica

Más detalles

Máquinas de estado finito y expresiones regulares

Máquinas de estado finito y expresiones regulares Capítulo 3 Máquinas de estado finito y expresiones regulares En este tema definiremos y estudiaremos máquinas de estado finito, llamadas también máquinas de estado finito secuenciales o autómatas finitos.

Más detalles

Un elemento de un monoide se dice que es inversible si tiene elemento inverso.

Un elemento de un monoide se dice que es inversible si tiene elemento inverso. Tema 1: Semigrupos 1 Tema 1: Semigrupos 1. Semigrupos: Conceptos fundamentales. Recordemos que un sistema algebraico es un conjunto S con una o varias operaciones sobre él, siendo una operación ó ley de

Más detalles

Estructuras algebraicas

Estructuras algebraicas Semana 10[1/14] 26 de abril de 2007 Semana 10[2/14] Grupos Un grupo es un caso particular de una estructura algebraica. Veremos que esta noción rescata ampliamente las propiedades de estructuras tales

Más detalles

RELACIONES CONSTRUCCIÓN DE RELACIONES

RELACIONES CONSTRUCCIÓN DE RELACIONES RELACIONES Entre las cosas que se pueden estudiar de un conjunto esta la clasificación de sus elementos, su ordenación, o intentar establecer algunas conexiones entre ellos. Formalmente, una relación R

Más detalles

Coordinación de Ciencias Computacionales INAOE. Teoría de Autómatas y Lenguajes Formales. Temario detallado para examen de ingreso 2012

Coordinación de Ciencias Computacionales INAOE. Teoría de Autómatas y Lenguajes Formales. Temario detallado para examen de ingreso 2012 Coordinación de Ciencias Computacionales INAOE Teoría de Autómatas y Lenguajes Formales Temario detallado para examen de ingreso 2012 1. Autómatas 1.1. Por qué estudiar la teoría de autómatas? 1.1.1. Introducción

Más detalles

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

Tema 4: Lógicas Informática (Tecnologías Informáticas) Curso Dpto. Ciencias de la Computación Inteligencia Artificial Universidad de Sevilla Tema 4: Dpto. Ciencias de la Computación Inteligencia Artificial Universidad de Sevilla Lógicas Informática (Tecnologías Informáticas) Curso 2017 18 Contenido Presentaremos un algoritmo más para estudiar

Más detalles

CONJUNTOS. Por ejemplo, el E del ejemplo 2 se escribe.

CONJUNTOS. Por ejemplo, el E del ejemplo 2 se escribe. CONJUNTOS La teoría de conjuntos nos permite describir de forma precisa conjuntos de números, de personas, de objetos, etc que comparten una propiedad común. Esto puede ser de gran utilidad al establecer

Más detalles

Introducción TEORÍA DE LA COMPUTACIÓN INTRODUCCIÓN. Lógica

Introducción TEORÍA DE LA COMPUTACIÓN INTRODUCCIÓN. Lógica Introducción TEORÍA DE LA COMPUTACIÓN INTRODUCCIÓN Francisco Hernández Quiroz Departamento de Matemáticas Facultad de Ciencias, UNAM E-mail: fhq@ciencias.unam.mx Página Web: www.matematicas.unam.mx/fhq

Más detalles

TEMA 3 Elementos de la teoría de los conjuntos. *

TEMA 3 Elementos de la teoría de los conjuntos. * TEM 3 Elementos de la teoría de los conjuntos. * Conjuntos. Un conjunto es cualquier colección, bien definida, de objetos llamadas elementos o miembros del conjunto. Una manera de describir un conjunto

Más detalles

1. Cadenas EJERCICIO 1

1. Cadenas EJERCICIO 1 LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007 - BOLETÍN DE EJERCICIOS Víctor J. Díaz Madrigal y José Miguel Cañete Departamento de Lenguajes y Sistemas Informáticos 1. Cadenas La operación reversa aplicada

Más detalles

14/02/2017. TEMA 3: EL CUERPO DE LOS NUMEROS REALES Esp. Prof. Liliana N. Caputo

14/02/2017. TEMA 3: EL CUERPO DE LOS NUMEROS REALES Esp. Prof. Liliana N. Caputo TEMA 3: EL CUERPO DE LOS NUMEROS REALES Esp. Prof. Liliana N. Caputo Así como al estudiar conjuntos hablamos de la existencia de términos primitivos (que no se definen), para definir algunos conjuntos,

Más detalles

Sucesiones. Una sucesión de números reales es una tira, o una lista, de nḿeros reales que generalmente denotamos como

Sucesiones. Una sucesión de números reales es una tira, o una lista, de nḿeros reales que generalmente denotamos como Universidad de la República Facultad de Ingeniería IMERL Sucesiones Curso Cálculo 1 2008 Una sucesión de números reales es una tira, o una lista, de nḿeros reales que generalmente denotamos como a 1, a

Más detalles

Conjuntos. Relaciones. Aplicaciones

Conjuntos. Relaciones. Aplicaciones Conjuntos. Relaciones. Aplicaciones Conjuntos 1. Considera el subconjunto A de números naturales formado por los múltiplos de 4 y el conjunto B N de los números que terminan en 4. Comprueba que A B y B

Más detalles

Bases Formales de la Computación

Bases Formales de la Computación Bases Formales de la Computación Pontificia Universidad Javeriana 12 de septiembre de 2008 CÁLCULOS DE PROCESOS Contenido 1 2 Sistemas Concurrentes Múltiples agentes (procesos) que interactuan entre ellos.

Más detalles

El ente básico de la parte de la matemática conocida como ANÁLISIS, lo constituye el llamado sistema de los número reales.

El ente básico de la parte de la matemática conocida como ANÁLISIS, lo constituye el llamado sistema de los número reales. EL SISTEMA DE LOS NÚMEROS REALES Introducción El ente básico de la parte de la matemática conocida como ANÁLISIS, lo constituye el llamado sistema de los número reales. Números tales como:1,3, 3 5, e,

Más detalles

Lógica Instituto de Computación. 27 de febrero

Lógica Instituto de Computación. 27 de febrero Inducción Lógica 2018 Instituto de Computación 27 de febrero Instituto de Computación (InCo) Inducción Curso 2018 1 / 1 Inducción - Plan Conjuntos inductivos Inducción como mecanismo primitivo para definir

Más detalles

Lógica - Conjuntos inductivos

Lógica - Conjuntos inductivos Lógica - Conjuntos inductivos Matemática discreta y Lógica I Mayo de 2017 Las transparencias son tomadas del curso de Lógica del instituto de computación de Facultad de Ingeniería. Inducción - Plan Conjuntos

Más detalles

Tema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I

Tema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I Tema 4: Gramáticas independientes del contexto Teoría de autómatas y lenguajes formales I Bibliografía Hopcroft, J. E., Motwani, R., y Ullman, J. D. Introducción a la Teoría de Autómatas, Lenguajes y Computación.

Más detalles

Espacios topológicos. 3.1 Espacio topológico

Espacios topológicos. 3.1 Espacio topológico Capítulo 3 Espacios topológicos 3.1 Espacio topológico Definición 3.1.1. Un espacio topológico es un par (X, τ), donde X es un conjunto, y τ es una familia de subconjuntos de X que verifica las siguientes

Más detalles

Tema 10: Conceptos Metalógicos

Tema 10: Conceptos Metalógicos Facultad de Informática Grado en Ingeniería Informática Lógica PARTE 2: LÓGICA DE PRIMER ORDEN Tema 10: Conceptos Metalógicos Profesor: Javier Bajo jbajo@fi.upm.es Madrid, España 12/11/2012 Introducción

Más detalles