Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Resumen
La programaci n declarativa es un estilo de programao ci n en el cual el programador especica qu debe compuo e tarse en lugar de c mo debe realizarse el c mputo, esto meo o diante el uso de relaciones entre los datos. Un ejemplo es la programaci n l gica inductiva, un modelo de aprendizaje o o maquinal que permite describir el proceso para inducir programas l gicos a partir de f rmulas l gicas instanciadas; o o o una extension funcional del modelo anterior es la programaci n l gico-funcional inductiva, en la cual dados ejemo o plos de igualdades concretas se desea obtener un programa l gico-funcional que permita deducir dichos ejemplos. o
del lenguaje, adem s se citan algunos ejemplos de paradiga mas considerados de tipo declarativo; especialmente se enfatiza y se describen en la secciones 3 y 4 la programaci n o l gica inductiva y la l gico-funcional inductiva, esta ultima o o se ilustra a trav s de un ejemplo basado en la suma de nue meros naturales. Por ultimo en la secci n 6 se presenta el o criterio MDL como un modelo de comparaci n y selecci n o o de programas l gicos y l gico-funcionales. o o
2. Programaci n Declarativa o
Un lenguaje declarativo es tal que sus sentencias describen relaciones entre los datos, ocultando los algoritmos dentro de la sem ntica del lenguaje. Informalmente, la Proa gramaci n Declarativa (PD) establece qu debe ser compuo e tado, pero no necesariamente c mo computarlo. En el ambio to de la programaci n, el t rmino declarativa se suele introo e ducir contraponi ndolo al t rmino imperativa (o procedie e mental). En esta las estructuras de control del lenguaje de programaci n permiten seguir perfectamente las acciones o que debe realizar un programa. La ausencia de este tipo de estructuras de control es lo que caracteriza a los lenguajes declarativos. De esta forma, la PD facilita la labor del programador, permiti ndole concentrarse en dar una formulae ci n del problema, liber ndolo tanto del control de la ejecuo a ci n del algoritmo como de la m quina. Puede decirse que o a en la aproximaci n imperativa la construcci n de un proo o grama consiste en estudiar las secuencias de instrucciones que debe dar al computador para buscar la soluci n, mieno tras que la aproximaci n declarativa viene caracterizada por o una actitud muy diferente: c mo expresar la descripci n o o del problema para que el computador pueda buscar las soluciones?. El primero de los estilos describe las acciones a realizar, mientras que el segundo describe el conocimiento acerca del problema. Asi, en la PD un algoritmo aparece descompuesto a trav s de la famosa ecuaci n [7]: e o Algoritmo = L gica + Control o 1
Abstract
The declarative programming is a style of programming where the programmer species what it should be computed instead of how it should do the computation, this by means of the use of relationship among the data. An example is the inductive logic programming, a model of machine learning that allows to describe the process to induce logic programs starting from logic formulas instanced; an functional extension of previous model is the inductive functional logic programming, where given examples of concrete equations are wish to obtain a logic functional program that allows to deduce those examples. June 13, 2007
1. Introducci n o
En la secci n 2 se presenta la descripci n acerca de los o o conceptos fundamentales de la programaci n declarativa, o haciendo enfasis en las caractersticas y requisitos que debe poseer la teora sobre la cual se fundamenta la l gica utiliza o da para realizar la deducci n de metas u objetivos por parte o
La programaci n l gico-funcional inductiva: un paradigma de la programaci n declarativa, Cubides, Gomez o o o que indica que la componente esencial de un algoritmo es la componente l gica o la especicaci n de un problema en o o t rminos de cierta l gica. e o Los dos principales paradigmas de la PD son la Programaci n L gica (PL) y la Programaci n Funcional (PF). o o o Hist ricamente el t rmino declarativo ha sido acu ado para o e n cubrir la PL y la PF pero en la ultimas d cadas han apa e recido nuevos ejemplares de paradigmas que pueden ubicarse en el area de la PD, algunos de estos son: La Pro gramaci n con Restricciones, La Programaci n Algebraica, o o La Programaci n Concurrente con Restricciones y La Proo gramaci n L gico-Funcional, La Programaci n L gica Ino o o o ductiva y la La Programaci n L gico-Funcional Inductiva, o o principalmente. La sem ntica de un lenguaje programaci n da signicaa o do a los programas y permite describir formalmente lo que calculan; dada la losofa de la PD los programas son vis tos como f rmulas y desde esta perspectiva, un programa o tiene dos lecturas. La primera es ver la f rmula como un o programa desde el punto de vista operacional, con un modelo de reducci n que permite realizar un proceso de infeo rencia utilizado para probar que un objetivo puede ser derivado del programa, esto se encuentra especicado por una sem ntica operacional. La segunda es ver un programa coa mo una f rmula de una l gica a la que se le exige tambi n o o e una sem ntica declarativa, el t rmino declarativa indica que a e se utiliza un dominio matem tico conocido en el cual intera pretar los objetos sint cticos. a La posible ventaja de esta visi n viene dada cuando la o interpretaci n sem ntica es sencilla, y de esta forma los o a programas son f ciles de manejar, transformar y vericar. a As, si se lee un programa como una f rmula se puede razo o nar sobre su correcci n centrando la atenci n en un an lisis o o a l gico de la f rmula, a trav s de un formalismo que permita o o e probar que el programa satisface la especicaci n; teniendo o presente que tanto la especicaci n como el programa son o expresados mediante f rmulas. o Por lo anterior se observa que la principal caracterstica que dene la PD es la l gica, por lo tanto las caractersticas o y requisitos apropiados que debe poseer la l gica para ser o utilizada como modelo deductivo son: i) un modelo te rico o (sem ntica declarativa), ii) un mecanismo de deducci n o a o c mputo (sem ntica operacional), y iii) un teorema de coo a rrecci n (los c mputos o respuestas calculadas deben ser o o correctos). Con respecto a los mecanismos de c mputo asociados se o puede citar la resoluci n para los lenguajes l gicos y la reeso o critura para los funcionales, estos son los estilos m s reprea sentativos de la PD; una nueva tendencia de lenguaje declarativo consiste en unicar los paradigmas l gicos y los funo cionales, por ejemplo la Programaci n L gico-Funcional o o (tambi n conocida como Programaci n Ecuacional), en esta e o aproximaci n se considera el uso de ecuaciones para denir o 2 funciones, y est fundamentada te ricamente en la L gica a o o Ecuacional, la cual es una restricci n de la l gica del c lcuo o a lo de predicados obtenida mediante la eliminaci n de las o conectivas l gicas y todo smbolo de predicado distinto de o la igualdad. La evaluaci n de objetivos (computo) se reao liza mediante el uso del principio operacional denominado narrowing el cual es una combinaci n del principio de reo ducci n de los lenguajes funcionales junto con la resoluci n o o de los l gicos. o
La programaci n l gico-funcional inductiva: un paradigma de la programaci n declarativa, Cubides, Gomez o o o l gicas instanciadas, la PL permite deducir f rmulas l gio o o cas a partir de programas l gicos, es decir la PLI puede ser o pensada como el proceso inverso de la deducci n, en el cual o las reglas de inferencia inducidas pueden ser obtenidas por inversion de reglas deducidas. La importancia de la PLI se justica a partir de que: da la posibilidad de usar conocimiento previo y la comprensibilidad de teoras; esto diere radicalmente de la forma en que otras t cnicas de aprendizaje maquinal e (como los sistemas de l gica fuzzy, las redes neuronao les y los algoritmos gen ticos) operan. e es un modelo m s tratable y natural de muchos proa blemas, adem s tiene toda la validaci n eciente de la a o resoluci n SLD [12]. o permite hacer consideraciones y razonamientos formales acerca de las hip tesis, los conocimientos previos y o la relaci n entre estos. o provee una notable ventaja en el campo del aprendizaje maquinal por el aumento de la aplicabilidad a sistemas de aprendizaje de teoras que poseen un mayor poder expresivo que el de las teoras proposicionales. ha sido utilizada con exito dentro de muchos campos: bioqumica, redes bayesianas, interfaz hombre-m qui a na, an lisis musical, ecologa, etc. a A pesar de las ventajas exhibidas anteriormente, la PLI posee algunas limitaciones inherentes al modelo de la computaci n l gica: la imposibilidad de denir funciones de forma o o natural sin necesidad de simularlas, la carencia de constructores de orden superior y los tipos. l gico-funcional B que sirve de soluci n a un problema reo o suelto previamente) si se dispone de el. El proceso de inducir programas est basado en la idea a de realizar una generalizaci n de ejemplos; esto se realio za incluyendo variables como argumentos de las funciones, en las ocurrencias en las cuales los subt rminos son conse tantes, en este paso se genera un conjunto de ecuaciones denominado ecuaciones hip tesis EH. Luego de obtener el o conjunto EH se hace uso de algunos operadores para obtener nuevos programas m s generales, llamados programas a hip tesis P H, los cuales est n compuestos exclusivamente o a por ecuaciones del conjunto EH; b sicamente existen dos a operadores, el narrowing inverso y la uni n, el primero tieo ne por objetivo seleccionar pares de ecuaciones del conjunto EH y luego obtener una nueva ecuaci n m s compleja o a que generalmente incluye llamadas recursivas a funciones. Al usar el otro operador se seleccionan dos de los mejores programas (de acuerdo a un criterio de selecci n) obtenio dos previamente y luego se construye un nuevo programa uniendo los conjuntos de ecuaciones que denen los programas iniciales, el nuevo programa tiene la propiedad de que este cubrir al menos los ejemplos a partir de los cua a les se construyeron los programas constituyentes. Con base en estos operadores se generan nuevos programas cada vez m s robustos, hasta que se encuentre uno que sea una aproa ximaci n satisfactoria a la soluci n del problema, o hasta o o que denitivamente no se satisfaga el criterio mnimo de selecci n jado previamente; es usual en estos casos hacer o uso del principio MDL4 como criterio de selecci n. o En concreto, el algoritmo para inducir programas l gicoo funcionales parte de las evidencias positivas E + y negativas E (v ase la denici n 1), de un conocimiento pree o vio opcional B (un programa l gico-funcional), y con este o conocimiento se pretende inducir un programa P tal que B P E + y B P E .5 Denici n 1. Las evidencias positivas E + y negativas E o son ejemplos suministrados por el usuario expresados como ecuaciones, donde el lado derecho de la ecuaci n esta o lo m s simplicado posible. Los ejemplos positivos E + son a igualdades que representan casos particulares validos (instancias) para la categora a generalizar, esta evidencia debe ser deducida por el programa soluci n obtenido; mientras o que los ejemplos negativos E representan desigualdades y por lo tanto instancias que no pertenecen a la categora que se desea generalizar, por lo que no deben ser deducidas por el programa soluci n. o
ingl s Minimum Description Length. e smbolo indica que de la teora B P se pueden deducir los ejemplos del conjunto E + .
5 El
4 Del
Con base en los ejemplos presentados en la tabla 1 se puede hacer la construcci n de una tabla equivalente (tabla o 2), en la cual cada ejemplo es expresado en t rminos del e predicado de igualdad, 0s y aplicaciones sucesivas de la funci n sucesor. o
Tabla 2. Ejemplos de evidencias E + y E .
Ejemplos positivos E + sum(0, 0) = 0 sum(s(0), s(0)) = s(s(0)) sum(0, s(0)) = s(0) sum(s(s(0)), 0) = s(s(0)) sum(s(0), 0) = s(0) sum(s(0), s(s(0))) = s(s(s(0))) Ejemplos negativos E sum(s(0), 0) = 0 sum(0, 0) = s(0) sum(s(0), s(0)) = s(0) sum(s(0), 0) = s(s(0)) sum(0, s(0)) = s(s(0)) sum(s(s(0)), s(0)) = s(0)
parte izquierda es una variable, ya que no sirven para denir la funci n suma, sino que se hace una simple reescritura de o las variables, a este paso se le llama generalizaci n restrico tiva. En la gura 1 se presenta un arbol, en el cual se ilustra la forma de como obtener todas la generalizaciones del primer ejemplo positivo de la tabla 2 (sum(0, 0) = 0), el proceso consiste en sustituir cada subt rmino por una variable nuee va y por todas las usadas previamente, as como se puede observar haciendo el recorrido del arbol en preorden. Luego de obtener las ecuaciones generalizadas y restringidas es necesario efectuar una vericaci n de la consiso tencia con los ejemplos, esto se hace vericando la consistencia negativa inicialmente, la cual se realiza mediante la escogencia de cada una de las ecuaciones generalizadas y vericando si de esta se puede deducir alg n ejemplo de la u evidencia negativa, lo anterior se hace observando si las variables se pueden reemplazar por valores constantes convenientes, de tal manera que de la regla se deduzca el ejemplo, para cada ecuaci n que permita deducir al menos un ejemo plo negativo, esta debe ser descartada. Tras ejecutar el ltro de la consistencia negativa, se procede a vericar la consistencia positiva, como en el caso anterior se busca si para la ecuaciones restantes se puede deducir ejemplos positivos de forma unica, para aquellas ecuaciones que cumplan con el caso anterior, entonces estas pasan todos los ltros y pueden ser tenidas en cuenta para generar nuevos programas de manera consistente. En la tabla 3 se exhibe cada uno de los pasos realizados durante la generalizaci n y la vericaci n de la consisteno o cia, las ecuaciones de la ultima columna son utilizadas para conformar los primeros programas hip tesis, junto con las o otras ecuaciones obtenidas luego de generalizar todos los ejemplos positivos y vericando que no haya duplicidad de ecuaciones, a partir de este conjunto resultante se aplican los operadores a las ecuaciones pertenecientes para obtener programas m s robustos. a
sum(0, 0) = 0
[] sum(0, 0) = 0 []
sum(x, y) = x
[x]
[x]
sum(0, x) = y
se obtiene sum(s(X), 0) = s(X), en el segundo caso dado que X es un t rmino libre entonces para s(X) se puede e sustituir el t rmino X por su equivalente sum(X, 0) y de e all que s(X) = s(sum(X, 0)); de estas nuevas igualdades y aplicando la propiedad de la transitividad se obtiene que sum(X, s(0)) = s(X) , , sum(s(X), 0) = s(X) (3) sum(X, s(0)) = sum(s(X), 0) sum(X, s(0)) = s(X) , , s(sum(X, 0)) = s(X) sum(X, s(0)) = s(sum(X, 0)) (4)
5.2.2. Union
El operador de uni n es utilizado simplemente para obo tener un nuevo programa como resultado de hacer la union conjuntista entre dos programas, el uso de este operador permite que se pueda obtener un programa nal como resultado de la conjunci n de un programa que trata los casos geneo rales y otro que trata los casos particulares (casos base). Un ejemplo del uso de este operador se puede observar en que si se hace la uni n del programa sum(X, 0) = X y el proo grama sum(X, s(Y )) = s(sum(X, Y )), como resultado se obtendr el programa {sum(X, 0) = X, sum(X, s(Y )) = a s(sum(X, Y ))} que es soluci n para el problema de la suo ma de n meros naturales. u
Dadas las ecuaciones generalizadas que son consistentes: sum(X, 0) = X (1) sum(X, s(0)) = s(X) (2)
si se toman la partes derechas de (1) y (2) se pueden obtener las dos siguientes ecuaciones s(X) = sum(s(X), 0) y s(X) = s(sum(X, 0)), esto debido a que: en primera instancia como sum(X, 0) = X para todo t rmino, en pare ticular para s(X) por lo tanto si se reemplaza X por s(X)
La programaci n l gico-funcional inductiva: un paradigma de la programaci n declarativa, Cubides, Gomez o o o de aprendizaje, como los sistemas de l gica difusa y las reo des neuronales. La posibilidad de utilizar este conocimiento previo se debe a la fuerte relaci n que tienen los proo gramas con la estructura recursiva de los lenguajes l gicoo funcionales y a que por las propiedades de equivalencia de la igualdad, la combinaci n de programas resulta ser relatio vamente sencilla. Para ilustrar el uso del conocimiento previo se mostrar como a partir de un programa para sumar a numeros se puede obtener un programa que multiplique numeros naturales, por ejemplo dadas las reglas sum(0, X) = X y prod(X, 0) = 0 mediante narrowing inverso se puede obtener la ecuaci n prod(X, 0) = sum(0, 0), en esta ecuao ci n se puede ver como se combinan las funciones prod() o y sum(). As, como en el caso anterior y realizando de forma iterativa generalizaciones y aplicaciones de los operadores se puede obtener el programa {prod(s(X), Y ) = sum(prod(X, Y ), Y ), prod(0, X) = 0} que es soluci n o para el problema del producto de numeros naturales.
7. Trabajos futuros
Como trabajo de tesis de Maestra en Matem tica Apli a cada del primer autor, se est haciendo un estudio de a la l gica ecuacional y la inducci n de programas l gicoo o o funcionales, con base en esto se implementar un algoritmo a en Java para inducir programas y se har una vericaci n a o formal de la correctitud de los programas obtenidos a trav s e de la sem ntica denotational [2] que es de tipo eminentea mente declarativo.
8. Conclusiones
Se pudo observar como el paradigma de la programaci n l gico-funcional inductiva permite generar programas o o a partir de ejemplos, como un claro estilo de programaci n o declarativa, el cual tiene una gran potencial para la producci n de software, principalmente en la generaci n de proo o gramas que eval en operaciones y relaciones aritm ticas u e elementales.
Referencias
[1] C. Ferri, O. J. Hern ndez, and M. Ramrez. Aprendizaje a autom tico de programas l gico-funcionales. Inteligencia a o Articial, Revista Iberoamericana de Inteligencia Articial, (11):2738, 2000. [2] J. Gomez. Sem ntica denotacional mediante operadores a clausura. Tesis de maestra en Matem ticas, Universidad a Nacional de Colombia, Facultad de Ciencias, Bogot , 1998. a [3] T. R. Gregory. Models of Computation and Formal Languages. Oxford University Press, New York, 1998. [4] M. Hanus. The Integration of Functions into Logic Programming: From Theory to Practice. Journal of Logic Programming, 19 & 20:583628, 1994. [5] O. J. Hern ndez and M. Ramrez. Inverse Narrowing for a the Induction of Functional Logic Programs. In Joint Conference, on Declarative Programming, APPIA-GULPPRODE98, pages 379393, 1998. [6] O. J. Hern ndez and M. Ramrez. The Theory Behind Ina ductive Functional Logic Programming (IFPL). Technical report, Universidad Polit cnica de Valencia, 2000. e [7] R. Kowalski. Algorithm = Logic + Control. CACM, 22(7):424436, 1979. [8] J. Martin. Lenguajes formales y teora de la computaci n. o McGraw-Hill, Mexico, 3ra edition, 2004. [9] S. Muggleton, editor. Proceedings of the First International Workshop on Inductive Logic Programming, Viano de Castelo, Portugal, 1991. [10] S. Muggleton. Inductive Logic Programming. Academic Press Limited, London, 1992. [11] G. D. Plotkin. Authomatic Methods of Inductive Inference. Ph. D., Science of Computer, Edimburgh University, 1971. [12] S. Russell and P. Norvig. Inteligencia articial: un enfoque moderno. Pearson Education, Madrid, 2da edition, 2004. [13] E. Y. Shapiro. Algorithmic Program Debugging. MIT Press, 1983.
log2 tam(e)
donde tam(e) = 1 + nv + nc + nf , siendo nv , nc y nf 2 el n mero de variables, de constantes y de funciones de la u parte derecha de las reglas. El factor de coincidencia (ConF ) es denido como: ConF (P ) = 1, 1 mx a si P tiene solo una ecuaci n; o
|eE + : Pi P Pi e| |E + |
, en otro caso.
De esta forma, se dene la optimalidad (Opt) como: Opt(P ) = LenF (P )+CovF + (P )+ConF (P ) Los par metros , y , se utilizan como heursticas a con el n de reducir considerablemente el tama o de las n b squedas que son efectuadas para realizar la inducci n. u o
8 El concepto de mejor programa, hace referencia al programa que cubra m s ejemplos positivos con mayor optimalidad. a