Lógica de primer orden, lógica computacional y ampliación de lógica
sc_solisTutorial11 de Noviembre de 2013
16.141 Palabras (65 Páginas)983 Visitas
LÓGICA DE PRIMER ORDEN, LÓGICA COMPUTACIONAL y AMPLIACIÓN DE LÓGICA
3UiFWLFDVGH/yJLFD
Faraón Llorens Largo Ma Jesús Castel de Haro
DEPARTAMENTO DE CIENCIA DE LA COMPUTACIÓN E INTELIGENCIA ARTIFICIAL Universidad de Alicante
PROLOG
1. 2.
3. 4.
5.
6.
7.
8.
Contenido
PROGRAMACIÓN LÓGICA ......................................................................................................... 1 PROLOG Y EL LENGUAJE DE LA LÓGICA DE PRIMER ORDEN...................................... 3
2.1. 2.2. 2.3.
PREDICADOS .............................................................................................................................. 3 TÉRMINOS .................................................................................................................................. 4 CONECTIVAS LÓGICAS...............................................................................................................6
ESTRUCTURA DE UN PROGRAMA ........................................................................................... 9
3.1. PREGUNTAS................................................................................................................................ 9
SINT AXIS........................................................................................................................................ 12
4.1. 4.2. 4.3.
CARACTERES............................................................................................................................ 12 ESTRUCTURAS.......................................................................................................................... 13 OPERADORES ........................................................................................................................... 13
ESTRUCTURAS DE DATOS........................................................................................................ 18
5.1. ÁRBOLES.................................................................................................................................. 18 5.2. LISTAS...................................................................................................................................... 18
ESTRUCTURAS DE CONTROL ................................................................................................. 23
6.1. RECURSIÓN .............................................................................................................................. 23 6.2. UNIFICACIÓN ............................................................................................................................ 24 6.3. REEV ALUACIÓN........................................................................................................................ 25 6.4. EL CORTE................................................................................................................................. 27 6.5. PREDICADOS DE CONTROL ....................................................................................................... 30
PREDICADOS DE ENTRADA Y SALIDA ................................................................................. 32
7.1. 7.2. 7.3.
LECTURA Y ESCRITURA DE TÉRMINOS....................................................................................32 LECTURA Y ESCRITURA DE CARACTERES ............................................................................... 33 LECTURA Y ESCRITURA EN FICHEROS ..................................................................................... 34
MODIFICACIÓN DE LA BASE DE CONOCIMIENTOS ........................................................ 37
8.1. 8.2. 8.3.
ADICIÓN DE BASES DE CONOCIMIENTO EXTERNAS ................................................................. 37 MANIPULACIÓN DE LA BASE DE CONOCIMIENTOS .................................................................. 38 COMPONENTES DE ESTRUCTURAS ........................................................................................... 41
9. 10.
DEPURACIÓN DE PROGRAMAS PROLOG............................................................................ 44 PROGRAMACIÓN EN PROLOG........................................................................................... 47
10.1. 10.2. 10.3. 10.4.
11.
11.1. 11.2.
ENTORNO DE TRABAJO ............................................................................................................ 47 ESTILO DE PROGRAMACIÓN EN PROLOG.................................................................................. 47 INTERPRETACIÓN PROCEDIMENTAL DE LOS PROGRAMAS PROLOG ........................................... 49 VENTAJAS DE PROLOG............................................................................................................. 50
EJEMPLOS ................................................................................................................................ 52
FORMAS NORMALES ................................................................................................................ 52 ÁRBOL GENEALÓGICO.............................................................................................................. 55
© 1996-2001 Faraón Llorens Página i
LÓGICA DE PRIMER ORDEN, LÓGICA COMPUTACIONAL y AMPLIACIÓN DE LÓGICA
11.3.
12. 13.
13.1. 13.2.
JUEGO LÓGICO ......................................................................................................................... 58
PREDICADOS PREDEFINIDOS ............................................................................................ 63 SISTEMAS PROLOG ............................................................................................................... 67
PROLOG-2 ................................................................................................................................ 67 SWI-PROLOG ........................................................................................................................... 68
ANEXO: PROGRAMACIÓN LÓGICA................................................................................................................. 71
CUADRO COMPARATIVO DE LAS DIFERENTES NOTACIONES PARA BIBLIOGRAFÍA ...................................................................................................................................... 72
Página ii © 1996-2001 Faraón Llorens
PROLOG
Estos apuntes pretenden ser un documento de apoyo para los estudiantes que realizan las prácticas en el lenguaje de programación Prolog, en alguna de las asignaturas de lógica impartidas por el departamento de Ciencia de la Computación e Inteligencia Artificial de la Universidad de Alicante: Lógica de Primer Orden, Lógica Computacional y Ampliación de Lógica.
El Prolog descrito, tanto la sintaxis como los operadores básicos, siguen el estándar de Edimburgo [Clocksin y Mellish, 1987] así como las especificaciones ISO [Covington, 1993] y [Deransart y otros, 1996].
Se trata de una breve exposición de la forma de trabajo, de las características principales y de los predicados predefinidos estándar del lenguaje Prolog. No se trata de una completa descripción de la sintaxis y la semántica de Prolog ni de la forma de programar en dicho lenguaje. Para ello existen excelentes libros, algunos de ellos referenciados en la bibliografía. Son muy recomendables los libros [Clocksin y Mellish, 1987], [Bratko, 1990] y [Sterling y Shapiro, 1994], y para un nivel más avanzado [O'Keefe, 1990]
No se pretende explorar toda la potencia del lenguaje de programación lógica Prolog. Eso sobrepasaría las pretensiones de nuestras asignaturas. Simplemente queremos mostrar a los estudiantes cómo pueden escribir programas (bases de conocimientos) con el lenguaje de la lógica, por medio de hechos y reglas. Posteriormente podemos ejecutar estos programas realizando preguntas que el sistema nos responderá a partir de la información que conoce. Es decir, no vamos a estudiar Prolog desde el punto de vista de un lenguaje de programación, sino como una aplicación directa de la lógica de primer orden.
Por todo ello, únicamente vamos a describir un pequeño subconjunto de predicados predefinidos, en especial aquellos con marcado carácter lógico, que no interfieren en el control, no entraremos en detalle en los predicados de entrada/salida. Todos los ejemplos han sido probados utilizando SWI-Prolog [Wielemaker, 2001], que es el interprete/compilador utilizado en las clases prácticas.
Para cualquier duda o sugerencia podéis dirigiros a la dirección de correo electrónico:
logica@dccia.ua.es
Más información se puede encontrar en el sitio web:
http://www.dccia.ua.es/logica/prolog
© 1996-2001 Faraón Llorens
Página iii
PROLOG
1. PROGRAMACIÓN LÓGICA
El lenguaje de programación PROLOG (“PROgrammation en LOGique”) fue creado por Alain Colmerauer y sus colaboradores alrededor de 1970 en la Universidad de Marseille-Aix1, si bien uno de los principales protagonistas de su desarrollo y promoción fue Robert Kowalski2 de la Universidad de Edimburgh. Las investigaciones de Kowalski proporcionaron el marco teórico, mientras que los trabajos de Colmerauer dieron origen al actual lenguaje de programación, construyendo el primer interprete Prolog. David Warren3, de la Universidad de Edimburgh, desarrolló el primer compilador de Prolog (WAM – “Warren Abstract
...