Curso 2003-2004 - dccia
Curso 2003-2004 - dccia
Curso 2003-2004 - dccia
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
LICENCIATURA DE MATEMÁTICAS<br />
PRÁCTICAS DE LÓGICA DE PRIMER ORDEN<br />
<strong>Curso</strong> <strong>2003</strong>-<strong>2004</strong><br />
FIGURAS IMPOSIBLES<br />
Página 1
ENUNCIADO DE PRÁCTICAS –LC <strong>Curso</strong> <strong>2003</strong>/<strong>2004</strong><br />
INTRODUCCIÓN<br />
Sólo a los lógicos puros – que son muy pocos – les interesa la Lógica por sí misma. La<br />
mayor parte de las personas que estudian Lógica se interesan por sus aplicaciones, pues saber<br />
aplicar la Lógica, dominarla como arte, consiste, sobre todo, en saber probar si una sentencia dada<br />
es o no deducible de otras. Para trabajar con este concepto, que es el que marca el carácter de la<br />
Lógica, y teniendo en cuenta que estamos en el siglo de los ordenadores, se han pensado en unas<br />
prácticas que, por un lado trabajen con esta herramienta y por otro, os sirvan de ayuda a la<br />
preparación del examen teórico de la asignatura.<br />
Con el ordenador tendremos una excelente herramienta para entender, de forma práctica,<br />
algunas de las nociones fundamentales de la Lógica teórica (la forma de representar y razonar), para<br />
ello los informáticos han desarrollado programas que ayudan a los estudiantes de Lógica a adquirir<br />
estas técnicas formales, con las que favorecer el aprendizaje de la misma, de forma automática.<br />
Por otro lado, no desechamos el lápiz y papel con los que también trabajaremos en la<br />
realización de algunos ejercicios y/o cuestionarios, y que ¡tantos recuerdos nos traen!. En fin, este<br />
año no sólo potenciaremos el uso del lenguaje de programación Prolog, como la herramienta que<br />
nos permite llevar la Lógica al ordenador sino que, además, trabajaremos con otras herramientas<br />
para que reforcéis todo lo aprendido en las clases teóricas. Todo ello está pensado para que las<br />
clases teóricas y prácticas estén relacionadas.<br />
CONTENIDO DEL DOCUMENTO<br />
Página 2<br />
∗ Propuesta de las prácticas del curso <strong>2003</strong>-<strong>2004</strong>.<br />
∗ Normas generales: asignación de grupos, descripción y evaluación.<br />
∗ Práctica I: Entorno de trabajo. Introducción al lenguaje Prolog.<br />
∗ Práctica II: Creación de una Base de Conocimientos en Prolog.<br />
∗ Práctica III: Estudio de razonamientos lógicos.<br />
PROPUESTA DE PRÁCTICAS DE LPO PARA EL CURSO <strong>2003</strong>-<strong>2004</strong><br />
CCLLAASSEESS PPRRÁÁCCTTIICCAASS<br />
LÓGICA DE PRIMER ORDEN<br />
<strong>Curso</strong>: Primero.<br />
Carácter: Asistencia obligatoria.<br />
Créditos: 3<br />
Duración: 6 sesiones (2 horas/semana).<br />
Grupos: 2 personas.<br />
Evaluación: Continua.<br />
Docencia Contenido Material Clases de 2 horas<br />
Práctica I<br />
Práctica II<br />
Práctica<br />
III<br />
Entorno de trabajo. Introducción al lenguaje Prolog<br />
Creación de una Base de Conocimiento con Prolog<br />
Formalización del conocimiento. Estudio de la<br />
validez de los razonamientos usando diversos<br />
métodos<br />
Pag Web<br />
SWI-Prolog<br />
Prueba<br />
escrita.<br />
ADN<br />
1<br />
3<br />
2
NORMAS GENERALES<br />
Asignación de grupos<br />
PRÁCTICAS DE LÓGICA DE PRIMER ORDEN (03/04)<br />
Todos los alumnos deben tener necesariamente asignado un grupo de prácticas.<br />
Descripción<br />
La carga docente de cada grupo de prácticas propone, para cada grupo, de una hora a la<br />
semana, pero al ser prácticas impartidas con ordenador hemos pensado que resultan más<br />
eficientes si cada grupo da dos horas a la semana, en semanas alternas.<br />
Durante el curso se realizarán tres prácticas:<br />
o Práctica I: Contenido: I.a, I.b, I.c. Enfocada a explicar las líneas generales de las<br />
prácticas, recogida de material en la Web de Lógica y manejo del entorno de<br />
trabajo. Se introducirá el lenguaje de programación lógica Prolog (SWI-Prolog<br />
para Windows 1 ), con el que se trabajará en la Práctica II. Duración: una clase de<br />
dos horas. Evaluación: Asistencia a clase y realización de actividades propuestas<br />
en el transcurso de la clase. Nota máxima: 1 pto.<br />
o Práctica II: Contenido: II.a, II.b, II.c, II.d. Enfocada a diseñar una Base de<br />
Conocimientos escrita en lenguaje Prolog. Para ello, se comenzará cada clase con<br />
los conceptos de Prolog necesarios para trabajar en esa sesión con SWI-Prolog<br />
([Wielemaker,1998]), como los predicados predefinidos en Prolog, ... Se trabajarán<br />
los ejemplos del Anexo A: Prolog, del libro [Castel y Llorens,1999] y que se<br />
encuentran en los ficheros ej01.pl a ej10.pl del directorio ejemplos. Duración: 3<br />
clases de 2 horas Evaluación: Asistencia a clase, presentación de la Base de<br />
Conocimientos propuesta. Nota máxima: 5 ptos.<br />
o Práctica III: Contenido: III.a. Enfocada al estudio de la validez de argumentos<br />
usando la deducción natural. Se trabajará con la aplicación software ADN.<br />
Duración: dos clases de dos horas. Evaluación: Entrega de los ejercicios<br />
propuestos. Nota máxima: 4 ptos.<br />
En cada práctica se hace una descripción de la misma mediante los apartados: presentación,<br />
objetivos, “hacer” y opcional. En el apartado de “hacer” está el trabajo obligatorio que<br />
el alumno debe presentar para aprobar esa sesión.<br />
Todas las prácticas que realicéis deberán empezar con el siguiente encabezamiento: nombre<br />
de los autores, asignatura, curso, descripción y cualquier otra información que<br />
consideres adecuada.<br />
Todas las prácticas deben guardarse en un disco de trabajo que el alumno presentará al<br />
profesor cada vez que éste lo requiera.<br />
1 Este documento se ha escrito trabajando en la versión 4.0.9. Esta versión es la que se encuentra instalada en<br />
los ordenadores de los laboratorios de prácticas y se puede encontrar en el sitio web de la asignatura<br />
Página 3
ENUNCIADO DE PRÁCTICAS –LC <strong>Curso</strong> <strong>2003</strong>/<strong>2004</strong><br />
Página 4<br />
PLANIFICACIÓN CLASES<br />
CLASE<br />
(2 horas)<br />
CONTENIDO SEMANA grupo A SEMANA grupo B<br />
1 I.a, I.b, I.c 13 - 17 de octubre 20 - 24 de octubre<br />
2 II.a 27 - 31 de octubre 3 - 7 de noviembre<br />
3 II.b 10 - 14 de noviembre 17 - 21 de noviembre<br />
4 II.c, II.d 24 - 28 de noviembre 1 - 5 de diciembre<br />
5 III.a 8 - 12 de diciembre 15 - 19 de diciembre<br />
6 III.a 6 – 9 de enero 12 -16 de enero<br />
Evaluación<br />
La nota de prácticas está comprendida entre 0 y 10 puntos repartidos entre todas las<br />
prácticas.<br />
La asistencia a prácticas es obligatoria.<br />
La corrección se llevará a cabo en el laboratorio donde se imparten las clases de prácticas, de<br />
manera presencial, con el profesor, que preguntará al alumno todo lo que estime oportuno<br />
hasta obtener la nota de dicha práctica.<br />
Para aprobar hay que sacar un mínimo de 5 puntos para ello debéis realizar, al menos, lo<br />
pedido en el apartado “hacer” (completo).<br />
La nota de prácticas tiene un peso del 30% en la nota final de la asignatura que se<br />
sumará al 70% de la nota de teoría, siempre y cuando se aprueben ambas partes.<br />
Siempre que las prácticas estén aprobadas, y el alumno quiera, se le guardará la nota de<br />
éstas para la convocatoria de septiembre, si no hubiese aprobado el examen teórico.<br />
PRÁCTICA I: I.a, I.b, I.c 1 PTO.<br />
ENTORNO DE TRABAJO. INTRODUCCIÓN AL LENGUAJE PROLOG.<br />
Esta práctica corresponde a un nivel introductorio en el que, en primer lugar, se hará un<br />
recorrido por las diferentes prácticas que se realizarán durante el curso, se recogerá material y se<br />
presentará el lenguaje Prolog (con el que se trabajará en la Práctica II). Su objetivo es que el alumno<br />
se familiarice y adquiera cierta soltura para desenvolverse en el entorno de trabajo de SWI-<br />
Prolog (entrada y salida del sistema, consulta de programas, edición y modificación de<br />
programas,...), así como con la forma de funcionamiento y los predicados predefinidos del lenguaje<br />
Prolog (cualquier Prolog estándar en general).
Práctica I I.a: Sitio Web. Obtención de material<br />
Información sobre SWI-Prolog<br />
PRÁCTICAS DE LÓGICA DE PRIMER ORDEN (03/04)<br />
Presentación: En esta sesión se recorrerán las páginas Web de la asignatura disponibles vía<br />
Internet, de forma que el alumno sepa dónde encontrar la información que necesite en cada<br />
momento. Además, se informará de las prácticas que se realizarán durante el curso.<br />
Práctica I<br />
ADN: http://www.<strong>dccia</strong>.ua.es/logica/ADN<br />
SWI-Prolog: : http://www.<strong>dccia</strong>.ua.es/logica/prolog/material.html<br />
Editor Pfe, Ejemplos y Enunciado de prácticas:<br />
http://www.<strong>dccia</strong>.ua.es/logica/prolog<br />
Objetivos:<br />
Conocer la información que hay en las páginas Web de Lógica.<br />
Recogida de material necesario para prácticas (enunciado prácticas, intérprete SWI-<br />
Prolog, ejemplos, editor,…).<br />
Hacer:<br />
Recoger material.<br />
Opcional:----<br />
SWI-Prolog I.b: Presentación del entorno SWI-Prolog<br />
Presentación: Se presenta el entorno de programación Prolog (SWI-Prolog): entrada y salida<br />
del sistema, consulta de programas, edición y modificación de programas, forma de<br />
funcionamiento y uso de los predicados predefinidos del lenguaje Prolog (cualquier Prolog<br />
estándar, en general). Se trabajará el apartado 10. Sistemas Prolog, del Anexo A: Prolog, del libro:<br />
[Castel y Llorens,1999].<br />
Objetivos:<br />
Arranque de SWI-Prolog.<br />
Órdenes del S.O.: pwd, ls, cd, ...<br />
Salir de SWI-Prolog: halt.<br />
Sistema de ayuda en línea: ?- help.<br />
Hacer:<br />
Practicar con las órdenes y predicados predefinidos de Prolog.<br />
Opcional:----<br />
SWI-Prolog es un intérprete Prolog de dominio público para ordenadores PC desarrollado<br />
en el Dept. of Social Science Informatics (SWI) de la Universidad de Amsterdam.<br />
Tanto el software, el manual de referencia (en formato PostScript), como distinta<br />
información sobre el intérprete la podemos encontrar en la siguiente dirección:<br />
Página 5
ENUNCIADO DE PRÁCTICAS –LC <strong>Curso</strong> <strong>2003</strong>/<strong>2004</strong><br />
Página 6<br />
http://www.swi-prolog.org<br />
Es potente y flexible (permite integración con C), y tiene las ventajas de que, de momento, se<br />
mantiene actualizado y se ejecuta sobre un entorno gráfico más agradable para el usuario. Para<br />
ejecutarlo, una vez iniciado Windows, basta con hacer doble click sobre el icono correspondiente<br />
(plwin.exe) y aparece la ventana de la Ilustración 1.<br />
Ilustración 1: Ventana de SWI-Prolog<br />
El intérprete SWI-Prolog posee un sistema de ayuda en línea que se puede consultar mediante los<br />
predicados:<br />
?- help.<br />
?- help(Termino).<br />
?- help(Seccion).<br />
?- apropos(Cadena).<br />
SWI-Prolog, a partir de la versión 4, incorpora un sistema GUI (“Graphical User Interface”) que nos<br />
permite, entre otras cosas, tener un frontal gráfico para la ayuda.<br />
Al estar desarrollado sobre plataforma Unix reconoce algunas órdenes del sistema operativo que<br />
nos pueden ser de utilidad para la gestión de los archivos:<br />
cd cambiar el directorio de trabajo<br />
pwd muestra el directorio de trabajo<br />
ls muestra el contenido del directorio de trabajo.<br />
Para terminar la sesión y salir del intérprete SWI-Prolog utilizaremos el predicado:<br />
?- halt.
Práctica I<br />
Ilustración 2: Ayuda SWI-Prolog<br />
SWI-Prolog I.c: Edición de programas<br />
PRÁCTICAS DE LÓGICA DE PRIMER ORDEN (03/04)<br />
Presentación: Mediante un editor de texto escribiremos nuestra Base de Conocimientos de<br />
sentencias de Prolog (hechos y reglas) que reflejarán nuestro conocimiento acerca del problema a<br />
formalizar. Después de guardar nuestro trabajo en disco (disco duro o disquete), podemos usarlo<br />
(ejecutarlo) para obtener nuevo conocimiento, para ello, se abre la ventana de SWI-Prolog, se<br />
consulta el fichero deseado y se hacen todas las preguntas que queramos. Se trabajará el apartado 7.<br />
Programación en Prolog, del Anexo A: Prolog, del libro [Castel y Llorens,1999], en sus tres<br />
subapartados, 7.1. Entorno de Trabajo; 7.2. Estilo de Programación en Prolog; y 7.3. Ventajas de<br />
Prolog.<br />
Objetivos:<br />
Edición de programas: pfe, bloc de notas o PCE Emacs.<br />
Guardar fichero en disco de trabajo (unidad A).<br />
Consulta de ficheros: consult.<br />
Comentarios en Prolog: /* ... */ o %.<br />
Introducción al lenguaje Prolog.<br />
Rutina de trabajo: editar-guardar-consultar-preguntar.<br />
Hacer:<br />
Esquema de trabajo en Prolog: editar-guardar-consultar-preguntar.<br />
Opcional:----<br />
Página 7
ENUNCIADO DE PRÁCTICAS –LC <strong>Curso</strong> <strong>2003</strong>/<strong>2004</strong><br />
Esquema de trabajo en Prolog (Ilustración 3)<br />
Editar: mediante un editor de texto escribiremos nuestra Base de Conocimientos (hechos y reglas)<br />
que reflejará nuestro conocimiento acerca del problema a formalizar (ver más adelante “editores de<br />
texto para escribir programas Prolog”).<br />
Página 8<br />
?- edit(fichero).<br />
Guardar: se guarda el fichero en disco (disco duro o disquete) con la extensión .pl.<br />
Consultar: Para ejecutar un fichero debemos consultarlo primero. Para ello abrimos la ventana de<br />
SWI-Prolog y escribimos el predicado consult o el nombre (ruta completa o relativa) encerrado<br />
entre corchetes:<br />
?- consult(fichero).<br />
?- [fichero].<br />
Ejemplos ?- consult(practica1).<br />
?- consult(‘practica1.pl’).<br />
?- [practica1].<br />
?- consult(‘a:practica1.pl’).<br />
?- [‘a:practica1.pl’].<br />
Siempre que el nombre del fichero tenga algún carácter distinto de letras o dígitos (espacios, dos<br />
puntos, barra, ...) irá entrecomillado (con comillas simples), para que Prolog lo reconozca como un<br />
átomo. Por defecto, la extensión .pl no es necesario escribirla.<br />
Preguntar: Una vez consultada la base de conocimientos correspondiente, estaremos en<br />
condiciones de hacer las preguntas que queramos que Prolog responda (problema a resolver).<br />
El ciclo (editar-guardar-consultar-preguntar) se repetirá continuamente hasta que finalizar el<br />
trabajo.<br />
¡¡Cuidado!!: Si utilizas un directorio temporal de trabajo en el disco duro, al finalizar cada sesión<br />
ten la precaución de guardar tus ficheros en el disquete (unidad A) y borrarlos del disco duro.<br />
Consultar<br />
Preguntas<br />
<br />
Ilustración 3: Esquema de trabajo en Prolog<br />
Base de Conocim ientos:<br />
• Hechos<br />
• Reglas<br />
Guardar
Editores de texto para escribir programas Prolog<br />
PRÁCTICAS DE LÓGICA DE PRIMER ORDEN (03/04)<br />
Editores bloc de notas y pfe: Para escribir un programa Prolog podemos utilizar cualquier<br />
editor de texto 2 como, por ejemplo, el bloc de notas de Windows, pero si el programa tiene muchas<br />
líneas y tenemos que corregir errores, como el intérprete nos da el número de la línea donde<br />
aparecen, es conveniente que utilicemos un editor que tenga numeración de líneas como, por<br />
ejemplo, pfe ("Programmer's File Editor"), ver Ilustración 4.<br />
http://www.lancs.ac.uk/people/cpaap/pfe/<br />
Editor PCE Emacs: a partir de la<br />
versión 4, SWI-Prolog incorpora el<br />
editor PCE Emacs, que reconoce la<br />
sintaxis de colores para Prolog y cuenta<br />
con una barra de menú personalizada<br />
para el Prolog, entre otras cosas. Este<br />
editor se invoca con el predicado:<br />
?- emacs(fichero).<br />
Ilustración 4: Editores bloc de notas y pfe.<br />
Ilustración 5: Editor PCE Emacs.<br />
2 Los editores de texto guardan el texto (sus códigos ASCII) sin formato. Si utilizas un procesador de texto<br />
(wordPad, Word, ...) acuérdate de guardarlo como documento de texto sin formato.<br />
Página 9
ENUNCIADO DE PRÁCTICAS –LC <strong>Curso</strong> <strong>2003</strong>/<strong>2004</strong><br />
PRÁCTICA II: II.a, II.b, II.c, II.d, 5 PTOS.<br />
Página 10<br />
BASE DE CONOCIMIENTOS: ZOO-LÓGICO<br />
En este práctica se escribirá un programa en Prolog que consistirá en crear una base de<br />
conocimientos en la que se recopilará información sobre un dominio (problema) dado. Para este<br />
curso se ha elegido la representación de la información correspondiente a un zoológico que<br />
gestionará un zoo (animales, ubicación, precio de entradas, …). En cada clase se hará una<br />
introducción teórica del tema de Prolog que corresponda, y luego se realizarán pequeños ejercicios<br />
que os ayuden a conformar la base de conocimientos requerida.<br />
Práctica II<br />
SWI-Prolog II.a: Declaración de Hechos<br />
Presentación: Prolog es un lenguaje de programación que se utiliza para resolver problemas en<br />
los que entran en juego objetos y relaciones entre ellos. Para ello usa dos herramientas: los hechos y<br />
las reglas. Los hechos son la formalización en Prolog de sentencias declarativas del lenguaje<br />
natural que expresan que uno o varios objetos poseen unas determinadas propiedades, o que tienen<br />
algún tipo de relación entre ellos, de forma concisa, sin estar sujetas a ningún tipo de restricción.<br />
Trabajaremos con los apartados 1. Prolog y el lenguaje de la Lógica de Primer Orden; 2. Estructura<br />
de un programa y los subapartados 3.1. Caracteres y 3.2. Estructuras, del Anexo A: Prolog, del libro<br />
[Castel y Llorens,1999], así como con el fichero ej01.pl.<br />
Objetivos:<br />
Aprender la formalización en Prolog de hechos.<br />
Creación de una Base de Conocimientos.<br />
Hacer: (1 pto.)<br />
Crear un fichero: práctica1.pl en vuestro disco de trabajo.<br />
Formalizar y representar la información de las tablas 1, 2 y 3, en forma de hechos<br />
de Prolog, que sigan los esquemas de relación ERII.a.<br />
Formalizar en Prolog las preguntas de la sección ?.<br />
Opcional:----<br />
Tabla 1: Procedencia de especies<br />
Código Especies Zona Procedencia<br />
A-1 primates 1<br />
África,<br />
América<br />
A-2 reptiles 2 América<br />
A-3 peces 3 Brasil<br />
A-4 aves 4 España<br />
A-5 felinos 5 África, Asia
Clave<br />
Tabla 2: Zoológicos<br />
PRÁCTICAS DE LÓGICA DE PRIMER ORDEN (03/04)<br />
Zoo Clave Primates Reptiles Peces Aves Felinos<br />
Alicante Z1 100 250 90 115 75<br />
Barcelona Z2 350 460 325 225 95<br />
Bilbao Z3 180 300 230 100 50<br />
Madrid Z4 200 475 320 235 85<br />
Sevilla Z5 110 270 100 160 45<br />
Tabla 3: Precios y horarios<br />
Horario Temporada alta Temporada baja<br />
Entrada Cierre adultos niños adultos niños<br />
Descuento<br />
grupos<br />
(%)<br />
Descuento<br />
3ª edad (%)<br />
Z1 9 15 15,5 ∈ 7 ∈ 10 ∈ 4,5 ∈ 10 50<br />
Z2 9:30 17 20,5 ∈ 10 ∈ 11 ∈ 5 ∈ 12 45<br />
Z3 9:30 17 17 ∈ 8,5 ∈ 10 ∈ 4 ∈ 12 45<br />
Z4 10 18 19 ∈ 9,5 ∈ 9 ∈ 3,5 ∈ 10 50<br />
Z5 10 17 16 ∈ 8,5 ∈ 8 ∈ 4 ∈ 12 60<br />
ERII.a: Esquemas de relación para escribir hechos de Prolog<br />
procd_especies(Cod,Esp,Zona,Procd)
ENUNCIADO DE PRÁCTICAS –LC <strong>Curso</strong> <strong>2003</strong>/<strong>2004</strong><br />
Página 12<br />
? Antes de seguir, comprueba que Prolog responde correctamente a las preguntas:<br />
¿Dime algún lugar de procedencia de los primates?.<br />
¿Dime alguna especie de América?.<br />
¿Dime alguna especie de África?.<br />
¿Dime de dónde proceden las aves?.<br />
¿Dime la clave del zoo de Madrid?.<br />
¿Dime si algún zoo abre a las 8 h?.<br />
¿Dime si algún zoo abre a las 9 h?.<br />
CONSEJO: a partir de este momento verifica cada procedimiento que escribas realizando todas las<br />
preguntas (directas a ese procedimiento) que se te ocurran. Define los nuevos<br />
procedimientos apoyándote en los que ya tienes. Esto tendrá una doble ventaja, ya que por<br />
un lado, como ya has verificado que funcionan correctamente únicamente deberás<br />
comprobar lo nuevo que has añadido. Por otro lado, tu base de conocimientos será más<br />
fácil de modificar, ya que modificando únicamente un procedimiento su efecto se trasmite<br />
a todos los que lo utilizan.<br />
Práctica II<br />
SWI-Prolog II.b: Declaración de Reglas<br />
Presentación: Las reglas, al igual que los hechos, sirven para formalizar en Prolog sentencias<br />
declarativas del lenguaje natural que expresan que uno o varios objetos poseen unas determinadas<br />
propiedades, o que tienen algún tipo de relación entre ellos, pero usan definiciones, que pueden ser<br />
imaginarias o no y que están sujetas a algún tipo de restricción. Se puede decir que una regla es un<br />
hecho que depende de otros hechos. Trabajaremos con los apartados 1. Prolog y el lenguaje de la<br />
Lógica de Primer Orden; 2. Estructura de un programa y los subapartados 3.1. Caracteres y 3.2.<br />
Estructuras, del Anexo A: Prolog, del libro [Castel y Llorens,1999], así como con el fichero ej01.pl.<br />
Objetivos:<br />
Aprender la formalización en Prolog de reglas.<br />
Utilización de las conectivas lógicas.<br />
Hacer: (1,5 pto.)<br />
Formalizar reglas en Prolog que sigan los esquemas de relación ERII.b.<br />
Formalizar en Prolog las preguntas de la sección ?.<br />
Opcional: (0,25 ptos.)<br />
Formalizar tres reglas más que se os ocurran.<br />
ERII.b: Esquemas de relación para escribir reglas de Prolog.<br />
especies(Cod,Esp)
PRÁCTICAS DE LÓGICA DE PRIMER ORDEN (03/04)<br />
? Antes de seguir, comprueba que Prolog responde correctamente a las preguntas:<br />
Práctica II<br />
¿Dime el código de los reptiles?.<br />
¿Dime los códigos de todas las especies?.<br />
¿Dime de dónde proceden las aves?.<br />
¿Dime especies que procedan de América?.<br />
¿Dime los descuentos del zoo de Alicante y de Madrid?.<br />
¿Dime cuántos primates hay en el zoo de Sevilla?.<br />
¿Dime cuántas aves hay en cada zoo?.<br />
¿Dime el precio de los adultos en temporada alta del zoo de Sevilla?.<br />
¿Dime a qué hora abre el zoo de Madrid?.<br />
SWI-Prolog II.c: Operadores Aritméticos y Relacionales<br />
Presentación: Las operaciones aritméticas son útiles para comparar números y calcular<br />
resultados. Prolog nos permite la utilización de números para trabajar con ellos. Incluiremos en<br />
nuestra Base de Conocimientos distintas reglas que necesiten realizar operaciones o comparaciones<br />
de valores numéricos Trabajaremos con el subapartado 3.3. Operadores, del Anexo A: Prolog, del<br />
libro [Castel y Llorens,1999], así como con los ficheros ej02.pl y ej03.pl.<br />
Objetivos:<br />
Aprender la utilización de los operadores aritméticos y relacionales en Prolog.<br />
Uso del predicado de igualdad (=).<br />
Realización de operaciones aritméticas con el operador is.<br />
Hacer: (1,5 pto.)<br />
Formalizar reglas en Prolog que sigan los esquemas de relación ERII.c.<br />
Formalizar en Prolog las preguntas de la sección ?.<br />
Opcional: (0,25 ptos).<br />
Formalizar las reglas del apartado Opcional- ERII.c.<br />
ERII.c: Esquemas de relación para escribir reglas de Prolog con operadores.<br />
total_anim(Zoo,T)
ENUNCIADO DE PRÁCTICAS –LC <strong>Curso</strong> <strong>2003</strong>/<strong>2004</strong><br />
Página 14<br />
? Antes de seguir, comprueba que Prolog responde correctamente a las siguientes preguntas:<br />
Práctica II<br />
¿Dime el número de animales que tiene el zoo de Alicante?.<br />
¿Compara los zoos de Madrid y Sevilla para saber cuál tiene más o menos<br />
animales?.<br />
¿Compara todos los zoos con el de Alicante?.<br />
¿Busca algún zoo que tenga un precio de adulto menor que 17 euros y de niños<br />
menor que 10 euros?.<br />
¿Dime qué pagará una familia de dos adultos y tres niños en el zoo de Madrid en<br />
temporada baja?.<br />
¿Dime que pagará un grupo de 30 personas, en donde 10 son de la tercera edad,<br />
para entrar en el zoo de Sevilla en temporada alta?.<br />
SWI-Prolog II.d: Obtención de respuestas alternativas<br />
Presentación: Cuando a Prolog le hacemos una pregunta que contiene una variable nos responde<br />
con un valor de la misma que satisface el objetivo (proceso de unificación). Si deseamos obtener<br />
más valores que satisfagan también la pregunta, podemos activar el proceso de reevaluación<br />
(“backtracking”) pulsando “;” (punto y coma) tras la respuesta de Prolog. Trabajaremos con los<br />
subapartados 5.2. Unificación y 5.3. Reevaluación el apartado 5. Estructuras de Control, del Anexo<br />
A: Prolog, del libro [Castel y Llorens,1999], así como con el fichero ej05.pl.<br />
Objetivos:<br />
Analizar el modo en que Prolog puede obtener todas las respuestas válidas a una pregunta.<br />
Aprender la reevaluación para activar el proceso de generación de soluciones múltiples.<br />
Hacer: (0,5 ptos.)<br />
Formalizar en Prolog las preguntas de la sección ?.<br />
Opcional:---<br />
? Antes de seguir, comprueba que Prolog responde correctamente a las siguientes preguntas:<br />
¿Dime todos los lugares de procedencia de los primates?.<br />
¿Dime todas las especies que procedan de África?.<br />
¿Dime todos los zoos que abran a las 9h?.<br />
¿Dime todos los zoos que cierren antes de las 19 h?.<br />
¿Dime todos los zoos que sean mayores que el de Alicante?.<br />
¿Dime todos los zoos que sean menores que el de Bilbao?.
PRÁCTICAS DE LÓGICA DE PRIMER ORDEN (03/04)<br />
PRÁCTICA III: III.a 4 PTOS.<br />
Práctica III<br />
EL ASISTENTE DE DEDUCCIÓN NATURAL: ADN<br />
Deducción Lógica III.a: Métodos de deducción<br />
Presentación:. Uno de los aspectos fundamentales de la Lógica es que, además de un lenguaje<br />
de representación y formalización de conocimiento, nos proporciona unas técnicas de<br />
razonamiento o inferencia, que nos permiten obtener nuevo conocimiento a partir del que ya<br />
poseemos. Existen distintos métodos para ello. Los métodos formales de deducción o<br />
demostración permiten hacer derivaciones con las que podemos extraer, de forma sistemática y<br />
efectiva, todas las conclusiones que se derivan de un conjunto de premisas. Las derivaciones se<br />
pueden realizar usando diversos tipos de metodología, que estarán en función de las fórmulas<br />
lógicas usadas y del conjunto de reglas de inferencia así, tenemos la deducción natural, la<br />
deducción axiomática y la deducción automática. En esta práctica veremos la deducción natural<br />
usando la aplicación ADN (Asistente para la Deducción Natural).<br />
Objetivos:<br />
Repasar estrategias y reglas de inferencia para hacer derivaciones.<br />
Repasar el método de deducción natural.<br />
Hacer: (3 ptos.), presentar al profesor en esta sesión<br />
Introducción a la aplicación ADN.<br />
Realizar con el ADN las deducciones ADN-1 y ADN-2.<br />
Opcional: (1 pto.)<br />
Realizar, en papel, la deducción ADN-3.<br />
EL ASISTENTE DE DEDUCCIÓN NATURAL ADN<br />
Introducción a la aplicación<br />
El Asistente para Deducción Natural (ADN) es una herramienta didáctica que asiste al<br />
alumno que se inicia en la técnica de la deducción natural a elaborar sus propias deducciones. Se<br />
realizó en el departamento de Ciencia de la Computación e Inteligencia Artificial y está dirigido,<br />
fundamentalmente, a los alumnos de las asignaturas de Lógica Computacional (Ingenierías<br />
Informáticas) y de Lógica de primer orden (Licenciatura en Matemáticas).<br />
ADN comprueba si una fórmula es sintácticamente correcta (fbf) y si se ha obtenido de<br />
forma adecuada (reglas básicas). Además, posee las siguientes herramientas de apoyo: visor de<br />
árboles sintácticos de las fórmulas, informe detallado de los errores, visor de reglas básicas,<br />
aconsejador y ayuda en línea. Puede ser ejecutado con cualquier navegador, ya que se trata de un<br />
applet escrito en Java. Se encuentra disponible en Internet en el sitio Web:<br />
http://www.<strong>dccia</strong>.ua.es/logica/ADN<br />
En la Ilustración 8 se muestra la pantalla principal del ADN que nos indica lo siguiente:<br />
Indicador 1.- Editor de la fórmula objetivo. Edita la fórmula objetivo de la deducción.<br />
Indicador 2.- Cuerpo de la deducción donde se visualizan los pasos de la deducción. Para<br />
realizarla aparecen tres partes, dispuestas en columnas y que son:<br />
Numeración de las líneas de deducción para poder hacer referencia a cada fórmula.<br />
Página 15
ENUNCIADO DE PRÁCTICAS –LC <strong>Curso</strong> <strong>2003</strong>/<strong>2004</strong><br />
Fórmulas lógicas que se van obteniendo a medida que se realiza la deducción. Las<br />
sangrías indican que entramos en un nuevo supuesto (hacia la derecha) o que la<br />
cancelamos (vuelta a la izquierda), configurando lo que llamaremos subpruebas.<br />
Justificación de la fórmula obtenida mediante la aplicación de una regla básica a una<br />
o más fórmulas anteriores.<br />
Indicador 3.- Editor de fórmulas donde se insertan nuevas fórmulas dentro de la deducción y dice<br />
de qué fórmulas han derivado las mismas.<br />
Indicador 4.- Área de opciones del programa. En esta zona aparecen los botones que acceden a las<br />
diferentes funciones del asistente: Árbol, Aconsejar, Ayuda, Reglas, ...<br />
Indicador 5.- Ventana de información al usuario. En ella aparecerá un mensaje que nos indicará si<br />
la fórmula objetivo introducida es o no correcta o cualquier otro mensaje relacionado con la<br />
deducción.<br />
ADN<br />
Página 16<br />
Ilustración 8: Ventana principal del ADN.<br />
Creación de árboles sintácticos<br />
ADN utiliza el alfabeto clásico de la Lógica de primer orden y la definición usual de fórmula<br />
bien formada (fbf). Por ejemplo, la sentencia "si el sujeto a tiene la propiedad P, entonces al menos<br />
uno tiene la propiedad P” quedaría representada mediante la siguiente fbf: P(a) → ∃y P(y). Si<br />
representamos esta fórmula mediante un árbol etiquetado podemos ver la estructura sintáctica de la<br />
misma.<br />
En la Ilustración 9 se muestra el árbol sintáctico de la fórmula bien formada anterior,<br />
proporcionado por el programa ADN. En general el árbol sintáctico de una fórmula lógica nos<br />
permite distinguir claramente cuál es el operador principal y las prioridades entre ellos. Esto es muy<br />
importante para su posterior tratamiento puesto que nos informará de las reglas de deducción que<br />
podemos aplicar en cada momento.
Ilustración 9 : Árbol sintáctico.<br />
PRÁCTICAS DE LÓGICA DE PRIMER ORDEN (03/04)<br />
ADN<br />
Pasos de la deducción natural<br />
Vamos a trabajar con la Deducción Natural, sistema formal, que a partir de unas premisas y<br />
con el único apoyo de unas reglas básicas, obtiene determinadas conclusiones. Así, si asumimos las<br />
premisas y cada paso elemental que damos lo justificamos con una regla básica, iremos obteniendo<br />
nuevas fórmulas lógicas que podemos asumir como conclusiones derivadas de las premisas. Todas<br />
las fórmulas lógicas que vamos introduciendo son visualizadas en la parte central de la ventana de<br />
ADN, que llamaremos pizarra. Una deducción la podemos considerar como un algoritmo que<br />
partiendo de unos valores de entrada (premisas) obtiene unas determinadas salidas (conclusiones)<br />
utilizando un conjunto dado de instrucciones (reglas).<br />
a) Reglas básicas<br />
ADN usa las reglas básicas del cálculo de Gentzen [Gentzen1934] que propone dos reglas<br />
básicas (una de introducción y otra de eliminación) para cada símbolo lógico (conectivas y<br />
cuantificadores). Si la regla básica introduce en su conclusión una conectiva o cuantificador<br />
que no aparece en sus premisas será una regla de introducción; si elimina de su conclusión<br />
una conectiva o cuantificador que aparece en sus premisas será una regla de eliminación. Se<br />
intuye que si disponemos de procedimientos para añadir o quitar los distintos símbolos<br />
lógicos podremos transformar, por pura manipulación sintáctica, las premisas en la<br />
conclusión. Así, aplicando un punto de vista de ingeniería, se trataría de desmontar las<br />
fórmulas lógicas que tenemos como premisas hasta obtener sus componentes básicas<br />
(fórmulas atómicas) y volver a montarlas en la configuración adecuada (fórmula lógica que<br />
queremos obtener como conclusión). Las reglas serían los instrumentos que nos permitirían<br />
montar y desmontar dichas fórmulas lógicas. En la ventana de reglas básicas visualizamos<br />
las reglas de introducción y eliminación correspondiente al cuantificador existencial<br />
(Ilustración 10).<br />
Ilustración 10: Ventana de Reglas Básicas.<br />
Página 17
ENUNCIADO DE PRÁCTICAS –LC <strong>Curso</strong> <strong>2003</strong>/<strong>2004</strong><br />
Tendremos una deducción correcta cuando consigamos una secuencia finita de fórmulas<br />
donde cada una de las fórmulas ha sido obtenida mediante la aplicación de alguna regla de<br />
inferencia. En ADN, cada línea de nuestra deducción (y por tanto la fórmula lógica escrita en ella)<br />
estará "justificada" por la aplicación de una regla básica a alguna o algunas líneas anteriores. Dicha<br />
justificación aparece en la columna de la derecha. Por ejemplo, la justificación de la línea 11 de la<br />
Ilustración 14, EE 1, 2-10 significa que esa fórmula la hemos obtenido porque tenemos una fórmula<br />
cuantificada existencialmente en la línea 1, suponemos en la línea 2 que un individuo genérico (b)<br />
del dominio cumple dicha fórmula y llegamos en la línea 10 a una conclusión que no depende de la<br />
elección, por lo que podemos concluir la fórmula de dicha línea.<br />
b) Subdeducciones<br />
Otra de las herramientas usadas en la deducción natural es el de las subpruebas<br />
(subdeducciones o supuestos provisionales) que nos permiten hacer “pequeñas” deducciones en la<br />
deducción general, para obtener nuevas fórmulas. En cualquier paso de nuestra deducción podemos<br />
introducir un supuesto provisional que debe ser cancelado en alguna línea posterior. Desde el<br />
supuesto hasta la cancelación, tendremos una subdeducción. Así, en nuestras deducciones<br />
tendremos fórmulas a distintos niveles que visualizaremos gráficamente mediante una sangría a la<br />
derecha. Para poder finalizar una demostración deberemos haber cancelado todos los supuestos que<br />
hayamos abierto y por ello, la cancelación de supuestos provisionales se convierte en una pieza clave<br />
de las deducciones naturales. Cuando un supuesto es cancelado, sangramos a la izquierda y<br />
sombreamos en gris las fórmulas interiores de la subdeducción. Dichas fórmulas<br />
interiores serán inaccesibles a partir de este momento. La utilización de subdeducciones nos<br />
permite "modularizar" nuestras deducciones planteándonos subobjetivos más sencillos que el<br />
objetivo final, y que en su conjunto nos lleven a la conclusión que buscamos.<br />
ADN<br />
El asistente ADN<br />
El asistente ADN dispone de una herramienta muy útil a la hora de realizar una deducción.<br />
Esta herramienta es el Aconsejador. El aconsejador analiza las fórmulas de la deducción e intenta<br />
guiarnos hacia el objetivo o decirnos qué reglas podemos aplicar. No nos llevará siempre a la<br />
solución, ya que la deducción natural en Lógica de primer orden no es un problema decidible,<br />
simplemente es un apoyo. En cualquier momento podemos poner en marcha el aconsejador y se<br />
puede dejar visible durante toda la deducción, con lo que se irá actualizando conforme<br />
añadamos o eliminemos fórmulas. En la Ilustración 11 se puede ver la ventana del aconsejador.<br />
Página 18<br />
Ilustración 11: Ventana del Aconsejador.
PRÁCTICAS DE LÓGICA DE PRIMER ORDEN (03/04)<br />
En la parte superior de la ventana se muestra una sugerencia de lo que podemos hacer y<br />
justo debajo, da una pista gráfica con las fórmulas que tenemos en la deducción. Podemos navegar<br />
entre todos los consejos generados mediante los botones de Anterior y Siguiente. En la barra de<br />
estado del aconsejador podemos ver cuántos consejos se han generado (a la derecha) y cuál estamos<br />
visualizando actualmente (a la izquierda). El ADN muestra consejos generados de arriba-abajo<br />
(basados en las premisas y fórmulas previas) así como consejos generados de abajo-arriba (basados<br />
en la conclusión).<br />
ADN. DEDUCCIONES PROPUESTAS<br />
ADN-1) ∀x P(x) ∨ ∀x Q(x) ⇒ ∀x (P(x) ∨ Q(x)).<br />
ADN-2) ¬P ∨ ¬Q, R → P, S → Q ⇒ ¬R ∨ ¬S.<br />
Opcional- ADN-3<br />
Demostrar, en papel, que el argumento formado por las siguientes sentencias es correcto:<br />
Premisa SCC1: Todos los alumnos que llevan gafas son calvos.<br />
Premisa SCC2: No existe ningún profesor con gafas.<br />
Premisa SCC4: Existe un profesor que es más atractivo o está más cachas que cualquier alumno.<br />
Premisa SCC6: Un sujeto es más atractivo que otro si y sólo si, este lleva gafas y el otro no.<br />
Premisa SCC7: Un sujeto está más cachas que otro si y sólo si, éste es calvo y el otro tiene pelo.<br />
Conclusión: No existe ningún alumno con gafas.<br />
Bibliografía<br />
• Bratko, I. (1990). PROLOG Programming for Artificial Inteligence. 2ª edn,<br />
Addison-Wesley.<br />
• Callear, D. (1994). Prolog Programming for Students. Continuum.<br />
• Castel, M. J. y Llorens, F. (1999). Lógica de Primer Orden. 2ª edn, Alicante.<br />
• Clocksin, W. F. y Mellish, C. S. (1987). Programación en Prolog. Gustavo Gili.<br />
• Clocksin, W. F. (1997). Clause and Effect. Prolog Programming for the Working<br />
Programmer. Springer-Verlag.<br />
• Giannesini, F., Kanoui, H., Pasero, R., y van Caneghem, M. (1989). Prolog. Addison-Wesley<br />
Iberoamericana.<br />
• Kim, S. H. (1991). Knowledge Systems Through Prolog. Oxford University Press.<br />
• Wielemaker, J. (1998). SWI-Prolog 3.1. Reference Manual. Dept. of Social Science<br />
Informatics (SWI), University of Amsterdam.<br />
Página 19