LÓGICA DE PRIMER ORDEN, LÓGICA COMPUTACIONAL y AMPLIACIÓN DE LÓGICA
!7E.9.,8/0O.,
Faraón Llorens Largo
Mª Jesús Castel de Haro
DEPARTAMENTO DE CIENCIA DE LA COMPUTACIÓN E
INTELIGENCIA ARTIFICIAL
Universidad de Alicante
1.
PROLOG
Contenido
PROGRAMACIÓN LÓGICA ......................................................................................................... 1
2.
3.
4.
3.1.
4.1.
4.2.
4.3.
5.1.
5.2.
5.
6.
2.1.
2.2.
2.3.
PROLOG Y EL LENGUAJE DE LA LÓGICA DE PRIMER ORDEN...................................... 3
PREDICADOS .............................................................................................................................. 3
TÉRMINOS.................................................................................................................................. 4
CONECTIVAS LÓGICAS............................................................................................................... 6
ESTRUCTURA DE UN PROGRAMA ........................................................................................... 9
PREGUNTAS................................................................................................................................ 9
SINTAXIS........................................................................................................................................ 12
CARACTERES............................................................................................................................ 12
ESTRUCTURAS.......................................................................................................................... 13
OPERADORES ........................................................................................................................... 13
ESTRUCTURAS DE DATOS........................................................................................................ 18
ÁRBOLES.................................................................................................................................. 18
LISTAS...................................................................................................................................... 18
ESTRUCTURAS DE CONTROL ................................................................................................. 23
RECURSIÓN .............................................................................................................................. 23
UNIFICACIÓN............................................................................................................................ 24
REEVALUACIÓN........................................................................................................................ 25
EL CORTE................................................................................................................................. 27
PREDICADOS DE CONTROL ....................................................................................................... 30
PREDICADOS DE ENTRADA Y SALIDA ................................................................................. 32
LECTURA Y ESCRITURA DE TÉRMINOS.................................................................................... 32
LECTURA Y ESCRITURA DE CARACTERES ............................................................................... 33
LECTURA Y ESCRITURA EN FICHEROS..................................................................................... 34
8. MODIFICACIÓN DE LA BASE DE CONOCIMIENTOS ........................................................ 37
ADICIÓN DE BASES DE CONOCIMIENTO EXTERNAS ................................................................. 37
MANIPULACIÓN DE LA BASE DE CONOCIMIENTOS .................................................................. 38
COMPONENTES DE ESTRUCTURAS ........................................................................................... 41
9. DEPURACIÓN DE PROGRAMAS PROLOG............................................................................ 44
6.1.
6.2.
6.3.
6.4.
6.5.
7.1.
7.2.
7.3.
8.1.
8.2.
8.3.
7.
10.
11.
PROGRAMACIÓN EN PROLOG........................................................................................... 47
ENTORNO DE TRABAJO............................................................................................................ 47
10.1.
ESTILO DE PROGRAMACIÓN EN PROLOG.................................................................................. 47
10.2.
10.3.
INTERPRETACIÓN PROCEDIMENTAL DE LOS PROGRAMAS PROLOG........................................... 49
10.4. VENTAJAS DE PROLOG............................................................................................................. 50
EJEMPLOS ................................................................................................................................ 52
11.1.
FORMAS NORMALES ................................................................................................................ 52
11.2. Á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.
electrónico:
Para cualquier duda o sugerencia podéis dirigiros a la dirección de correo
[email protected]
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 Machine”). Se pretendía usar la lógica
formal como base para un lenguaje de programación, es decir, era un primer intento de
diseñar un lengua
Comentarios de: Prácticas de Lógica Prolog (0)
No hay comentarios