10.05.2013 Views

Curso 2003-2004 - dccia

Curso 2003-2004 - dccia

Curso 2003-2004 - dccia

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!