10.05.2013 Views

Licenciatura en Matemáticas Bloque I. Formalización del ...

Licenciatura en Matemáticas Bloque I. Formalización del ...

Licenciatura en Matemáticas Bloque I. Formalización del ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Páginas Web de la asignatura<br />

<strong>Lic<strong>en</strong>ciatura</strong> <strong>en</strong> <strong>Matemáticas</strong><br />

CURSO 2002-2003<br />

Prácticas<br />

Dpto. de CIENCIA DE LA COMPUTACIÓN<br />

E INTELIGENCIA ARTIFICIAL<br />

Objetivos: Conocer la información que hay <strong>en</strong> las páginas Web de la<br />

asignatura.<br />

Recogida de material necesario para prácticas (programa<br />

MyC, programa ADN, interprete SWI-Prolog, ejemplos,<br />

editor, <strong>en</strong>unciado prácticas, ...)<br />

Al inicio de la primera sesión de prácticas se recorrerán las páginas Web de la asignatura que están<br />

disponibles vía Internet, de forma que el alumno sepa donde <strong>en</strong>contrar la información que necesite <strong>en</strong> cada<br />

mom<strong>en</strong>to. El interprete SWI-Prolog también lo podemos obt<strong>en</strong>er más fácilm<strong>en</strong>te desde dicha página Web <strong>en</strong><br />

la sigui<strong>en</strong>te dirección:<br />

http://www.dccia.ua.es/dccia/inf/asignaturas/LPO-LM<br />

<strong>Bloque</strong> I.<br />

<strong>Formalización</strong> <strong>del</strong> conocimi<strong>en</strong>to:<br />

el L<strong>en</strong>guaje de la Lógica de Primer Ord<strong>en</strong><br />

1. Introducción<br />

EL ENTORNO<br />

Si algo caracteriza este final de siglo ¡y de mil<strong>en</strong>io! ha sido sin duda la introducción <strong>en</strong> nuestras vidas<br />

de los ord<strong>en</strong>adores. T<strong>en</strong>emos ord<strong>en</strong>adores que nos ayudan a hacer “casi todo”. En esta línea argum<strong>en</strong>tal,<br />

hemos desarrollado una herrami<strong>en</strong>ta que favorezca el apr<strong>en</strong>dizaje de la lógica, de forma que “practicando”<br />

lógica sea como apr<strong>en</strong>damos lógica.<br />

En los últimos años ha habido un creci<strong>en</strong>te interés por la lógica desde el campo de la informática, ya<br />

que esta aporta un método formal para la gestión <strong>del</strong> conocimi<strong>en</strong>to (tanto <strong>en</strong> el aspecto de repres<strong>en</strong>tación<br />

como de razonami<strong>en</strong>to). Como contrapartida, los informáticos han desarrollado distintos programas que<br />

ayudan a los estudiantes a adquirir estas técnicas formales. Los ord<strong>en</strong>adores nos proporcionan una excel<strong>en</strong>te<br />

herrami<strong>en</strong>ta para <strong>en</strong>t<strong>en</strong>der, de forma práctica, algunas de las nociones fundam<strong>en</strong>tales de la lógica así como la<br />

forma de repres<strong>en</strong>tar y razonar. El programa Moros y Cristianos (MyC) está basado <strong>en</strong> el programa Tarski’s<br />

World, <strong>en</strong>torno desarrollado <strong>en</strong> la universidad de Stanford que sirve de soporte para una nueva aproximación<br />

Página 1


ENUNCIADO DE PRÁCTICAS<br />

pedagógica a la <strong>en</strong>señanza de la lógica, permiti<strong>en</strong>do construir mundos tridim<strong>en</strong>sionales de bloques y<br />

describirlos <strong>en</strong> el l<strong>en</strong>guaje simbólico de la lógica de primer ord<strong>en</strong>.<br />

MyC permite introducir fórmulas lógica y evaluarlas sintácticam<strong>en</strong>te determinando si son fbf<br />

(fórmulas bi<strong>en</strong> formadas). Al mismo tiempo se pued<strong>en</strong> crear mundos (interpretaciones) que nos permitirán<br />

evaluar semánticam<strong>en</strong>te dichas fbf. La v<strong>en</strong>taja estriba <strong>en</strong> que estos mundos ya nos son abstractos, sino que<br />

son tangibles y reales, y estarán definidos por el alumno que podrá añadir, quitar y modificar sus<br />

compon<strong>en</strong>tes. Estos individuos de nuestros mundos podrán ser moros o cristianos, que a su vez pued<strong>en</strong> t<strong>en</strong>er<br />

distintas características, como por ejemplo llevar armadura, t<strong>en</strong>er espada y montar a caballo.<br />

Página 2<br />

2. Instalación y Requerimi<strong>en</strong>tos<br />

Moros y Cristianos (MyC) ha sido desarrollado <strong>en</strong> el departam<strong>en</strong>to de Ci<strong>en</strong>cia de la Computación e<br />

Intelig<strong>en</strong>cia Artificial de la Universidad de Alicante, bajo la dirección de los profesores Faraón Llor<strong>en</strong>s Largo<br />

y Mª Jesús Castel de Haro, y programado por Eug<strong>en</strong>io Arjones Cano y Alfredo Soro Busto. Se trata de un<br />

programa didáctico de apoyo a la doc<strong>en</strong>cia, dirigido fundam<strong>en</strong>talm<strong>en</strong>te a los alumnos de las asignaturas<br />

Lógica de Primer Ord<strong>en</strong> de las distintas titulaciones <strong>en</strong> las que se imparte (Ing<strong>en</strong>iero Técnico <strong>en</strong> Informática<br />

de Gestión, Ing<strong>en</strong>iero Técnico <strong>en</strong> Informática de Sistemas, Ing<strong>en</strong>iero <strong>en</strong> Informática y Lic<strong>en</strong>ciado <strong>en</strong><br />

<strong>Matemáticas</strong>). El programa está ori<strong>en</strong>tado al análisis de fórmulas lógicas, tanto <strong>en</strong> el aspecto sintáctico como<br />

<strong>en</strong> el semántico, <strong>en</strong> un int<strong>en</strong>to de consolidar los conceptos teóricos y as<strong>en</strong>tarlos mediante un <strong>en</strong>torno<br />

amigable.<br />

Ilustración 1: V<strong>en</strong>tana "Acerca de ..."<br />

Los requerimi<strong>en</strong>tos técnicos mínimos para que el programa pueda funcionar son:<br />

Windows 95<br />

CPU 486 a 66 MHz o superior<br />

8 Mb de memoria RAM<br />

5 Mb de espacio libre <strong>en</strong> el Disco Duro<br />

Tarjeta de sonido compatible (opcional)<br />

El programa se <strong>en</strong>cu<strong>en</strong>tra disponible <strong>en</strong> el sitio web de la asignatura<br />

http://www.dccia.ua.es/dccia/inf/asignaturas/LPO-LM<br />

y se puede utilizar librem<strong>en</strong>te con fines educativos. Para cualquier suger<strong>en</strong>cia sobre el mismo os podéis dirigir<br />

a la dirección de correo electrónico<br />

logica@dccia.ua.es


3. Manejo <strong>del</strong> Programa<br />

LÓGICA DE PRIMER ORDEN<br />

El programa permite la introducción de fórmulas lógicas y su análisis sintáctico para determinar si<br />

son fórmulas bi<strong>en</strong> formadas (fbf). Estas fórmulas pued<strong>en</strong> ser evaluadas semánticam<strong>en</strong>te <strong>en</strong> mundos formados<br />

por individuos que pued<strong>en</strong> ser moros o cristianos, y que a su vez pued<strong>en</strong> t<strong>en</strong>er algunas propiedades (llevar<br />

armadura, t<strong>en</strong>er espada y montar a caballo). Esto permite al alumno que se inicia <strong>en</strong> el apr<strong>en</strong>dizaje de la<br />

lógica <strong>en</strong>t<strong>en</strong>der de forma práctica los conceptos lógicos, conceptos que por sí solos son de naturaleza<br />

emin<strong>en</strong>tem<strong>en</strong>te abstracta y por ello difíciles de <strong>en</strong>t<strong>en</strong>der.<br />

V<strong>en</strong>tana de<br />

mundo<br />

Barra de Título<br />

1. Descripción<br />

Barra de M<strong>en</strong>ú Barra de Botones<br />

V<strong>en</strong>tana de<br />

s<strong>en</strong>t<strong>en</strong>cias Chuletón.<br />

V<strong>en</strong>tana con la<br />

sintaxis<br />

Ilustración 2: Pantalla principal <strong>del</strong> programa<br />

Barra de Estado<br />

EL LENGUAJE<br />

En un primer mom<strong>en</strong>to vamos a trabajar con el aspecto sintáctico de la lógica. El l<strong>en</strong>guaje que<br />

vamos a utilizar para repres<strong>en</strong>tar nuestras s<strong>en</strong>t<strong>en</strong>cias (nuestro conocimi<strong>en</strong>to y visión <strong>del</strong> mundo <strong>en</strong> el que<br />

trabajaremos) será el l<strong>en</strong>guaje de la lógica de primer ord<strong>en</strong>. Adaptaremos y restringiremos el alfabeto a las<br />

características de los posibles mundos que podemos repres<strong>en</strong>tar (formados por moros y cristianos con sus<br />

respectivas propiedades particulares). El alfabeto a utilizar quedará, por tanto, formado por:<br />

• Símbolos de Términos: repres<strong>en</strong>tan a los objetos de nuestro mundo, que tomarán valores <strong>en</strong> el<br />

Universo <strong>del</strong> Discurso. Estos términos pued<strong>en</strong> ser<br />

Página 3


ENUNCIADO DE PRÁCTICAS<br />

Página 4<br />

Constantes : son objetos concretos <strong>del</strong> universo <strong>del</strong> discurso. Utilizaremos las letras:<br />

a, a0, a1, ..., a9, b, b0, b1, ..., b9, c, c0, c1, ..., c9<br />

Variables : son objetos cualesquiera <strong>del</strong> universo <strong>del</strong> discurso. Utilizaremos las letras:<br />

x, x0, x1, ..., x9, y, y0, y1, ..., y9, z, z0, z1, .., z9<br />

• Símbolos de Predicados: repres<strong>en</strong>tan las relaciones o propiedades que se pued<strong>en</strong> dar <strong>en</strong> nuestro<br />

mundo y que se aplican sobre los términos. En concreto t<strong>en</strong>emos:<br />

EsCristiano(x) x es cristiano<br />

EsMoro(x) x es moro<br />

LlevaArmadura(x) x lleva una armadura<br />

MontaCaballo(x) x va montado a caballo<br />

Ti<strong>en</strong>eEspada(x) x va armado con una espada<br />

MasFuerte(x,y) x es más fuerte que y<br />

MasRapido(x,y) x es más rápido que y<br />

EstaEntre(x,y,z) y está situado <strong>en</strong>tre x y z<br />

• Conectivas: son símbolos lógicos que conectan fórmulas, formando formulas más complejas.<br />

Disponemos de las sigui<strong>en</strong>tes conectivas lógicas:<br />

Negación ¬ (Alt+n)<br />

Conjunción ∧ (Alt+y)<br />

Disyunción ∨ (Alt+o)<br />

Implicación → (Alt+i)<br />

• Cuantificadores: son símbolos lógicos que nos permit<strong>en</strong> expresar la cantidad de objetos que<br />

satisfac<strong>en</strong> cierta condición. Los cuantificadores lógicos de que disponemos son:<br />

Universal ∀ (Alt+t)<br />

Exist<strong>en</strong>cial ∃ (Alt+e)<br />

Combinando adecuadam<strong>en</strong>te los símbolos de nuestro alfabeto podemos formar las palabras de<br />

nuestro l<strong>en</strong>guaje. A las palabras sintácticam<strong>en</strong>te correctas las llamaremos fórmulas atómicas. Así, definimos:<br />

• Fórmula Atómica: son fórmulas lógicas formadas por un símbolo de predicado seguido de n<br />

argum<strong>en</strong>tos ocupados por los correspondi<strong>en</strong>tes términos. Por ejemplo, son fórmulas atómicas:<br />

EsCristiano(x) “x es cristiano”<br />

EsMoro(a) “el individuo a es un moro”<br />

LlevaArmadura(b) “b lleva una armadura”<br />

MontaCaballo(y) “y va montado a caballo”<br />

Ti<strong>en</strong>eEspada(c) “c va armado con una espada”<br />

MasFuerte(a,b) “a es más fuerte que b”<br />

MasRapido(x,a) “x es más rápido que a”<br />

EstaEntre(x,a,z) “a está situado <strong>en</strong>tre x y z”<br />

Combinando las palabras de forma adecuada podemos construir las frases de nuestro l<strong>en</strong>guaje. A las<br />

frases sintácticam<strong>en</strong>te correctas las llamaremos fórmulas bi<strong>en</strong> formadas (fbf). Las reglas para la construcción<br />

de fbf son:<br />

• Fórmula Bi<strong>en</strong> Formada (fbf): son fórmulas lógicas construidas según las sigui<strong>en</strong>tes reglas:<br />

1. Toda fórmula atómica es fbf<br />

2. Si F1 y F2 son fbf <strong>en</strong>tonces<br />

(F1) es una fbf<br />

¬F1 es una fbf<br />

F1 ∧ F2 es una fbf


F1 ∨ F2 es una fbf<br />

F1 → F2 es una fbf<br />

3. Si F es una fbf con la variable x libre <strong>en</strong>tonces<br />

∀x F es una fbf<br />

∃x F es una fbf<br />

4. Únicam<strong>en</strong>te son fbf las construidas con los pasos 1 a 3<br />

LÓGICA DE PRIMER ORDEN<br />

Para evaluar sintácticam<strong>en</strong>te las fórmulas (determinar si son fbf) disponemos de la opción de<br />

“Verificar” fórmulas o simplem<strong>en</strong>te pulsando el botón que hay al lado de la s<strong>en</strong>t<strong>en</strong>cia.<br />

2. Ejercicios<br />

Veamos algunos ejercicios que podemos resolver ayudados por el programa MyC.<br />

1. Evaluación Sintáctica de fórmulas sin cuantificación<br />

Escribe las fórmulas bi<strong>en</strong> formadas correspondi<strong>en</strong>tes a las sigui<strong>en</strong>tes s<strong>en</strong>t<strong>en</strong>cias:<br />

• El individuo a es moro o es cristiano<br />

• a es un moro y b es un cristiano<br />

• a es un moro a caballo con armadura pero que no lleva espada<br />

• El cristiano b es más fuerte o más rápido que el moro a<br />

• Si b es cristiano <strong>en</strong>tonces lleva armadura y espada<br />

• a es moro y además si b es cristiano <strong>en</strong>tonces es más fuerte a que b.<br />

Evalúalas sintácticam<strong>en</strong>te para comprobar que realm<strong>en</strong>te están bi<strong>en</strong> escritas y las guardas <strong>en</strong> el<br />

fichero “practica1.s<strong>en</strong>”.<br />

2. Evaluación Sintáctica de fórmulas con cuantificación<br />

Escribe las fórmulas bi<strong>en</strong> formadas correspondi<strong>en</strong>tes a las sigui<strong>en</strong>tes s<strong>en</strong>t<strong>en</strong>cias:<br />

• Todos son moros o todos son cristianos<br />

• Todos son moros o cristianos<br />

• Al m<strong>en</strong>os existe un moro y un cristiano<br />

• Todos los cristianos sin armadura llevan espada<br />

• Para cada cristiano hay un moro que es más fuerte o rápido que él<br />

• Algún moro es más fuerte que todos los cristianos<br />

Evalúalas sintácticam<strong>en</strong>te para comprobar que realm<strong>en</strong>te están bi<strong>en</strong> escritas y las guardas <strong>en</strong> el<br />

fichero “practica2.s<strong>en</strong>”.<br />

3. Traducción de fórmulas a l<strong>en</strong>guaje natural<br />

Escribe las sigui<strong>en</strong>tes fórmulas bi<strong>en</strong> formadas <strong>en</strong> la v<strong>en</strong>tana de s<strong>en</strong>t<strong>en</strong>cias y las guardas <strong>en</strong> el fichero<br />

“practica3.s<strong>en</strong>”. Escribe una frase <strong>en</strong> l<strong>en</strong>guaje natural (castellano) para cada una de ellas :<br />

∃x (EsMoro(x) ∧ ∀y ( EsCristiano(y) →MasFuerte(x,y)))<br />

∃x ∀y (EsMoro(x) ∧ ( EsCristiano(y) →MasFuerte(x,y)))<br />

∃x ∀y ((EsMoro(x) ∧ EsCristiano(y)) →MasFuerte(x,y))<br />

Página 5


ENUNCIADO DE PRÁCTICAS<br />

Página 6<br />

1. Descripción<br />

LOS MUNDOS<br />

Los mundos nos permitirán trabajar con el aspecto semántico de la lógica. Para poder evaluar<br />

semánticam<strong>en</strong>te las fórmulas bi<strong>en</strong> formadas que hemos escrito antes (estudiar el significado y el valor de<br />

verdad de dichas fbf), necesitamos un mundo donde interpretarlas. Para ello, <strong>en</strong> lugar de trabajar <strong>en</strong> abstracto,<br />

con cualquier mundo p<strong>en</strong>sable (cualquier dominio o universo <strong>del</strong> discurso), adoptaremos un <strong>en</strong>foque<br />

minimalista de forma que “cerraremos” el mundo donde evaluamos nuestras s<strong>en</strong>t<strong>en</strong>cias. Por tanto asumimos<br />

que los únicos individuos que exist<strong>en</strong> y las únicas propiedades que se cumpl<strong>en</strong> son las que aparec<strong>en</strong><br />

explícitam<strong>en</strong>te repres<strong>en</strong>tadas <strong>en</strong> el mundo.<br />

Nuestro mundo se limita a un tablero de 8 x 8 posiciones (64 casillas) donde podemos situar a<br />

nuestros individuos. Cada posición v<strong>en</strong>drá determinada por la fila (de la A a la H) y la columna (<strong>del</strong> 1 al 8).<br />

Ilustración 3: V<strong>en</strong>tana de mundo: Tablero<br />

Estos individuos que podremos incluir <strong>en</strong> nuestro mundo podrán ser exclusivam<strong>en</strong>te moros o<br />

cristianos y podrán t<strong>en</strong>er alguna de las características permitidas (espada, armadura y caballo). La<br />

repres<strong>en</strong>tación gráfica para los distintos tipos de individuos de que disponemos la podemos ver <strong>en</strong> la sigui<strong>en</strong>te<br />

figura.<br />

Ilustración 4: Tipos de individuos


LÓGICA DE PRIMER ORDEN<br />

En el tablero podremos insertar un individuo mediante la opción <strong>del</strong> m<strong>en</strong>ú “Insertar pieza”. A dicho<br />

objeto le t<strong>en</strong>emos que dar obligatoriam<strong>en</strong>te un nombre que lo id<strong>en</strong>tifique de manera inequívoca (términos<br />

constantes definidos <strong>en</strong> el l<strong>en</strong>guaje) :<br />

a, a0, a1, ..., a9, b, b0, b1, ..., b9, c, c0, c1, ..., c9<br />

Ilustración 5: Insertar una nueva pieza<br />

Ilustración 6: Tablero con pieza<br />

También podemos insertar una nueva pieza haci<strong>en</strong>do click con el botón derecho <strong>del</strong> ratón sobre la<br />

casilla deseada, con lo que nos evitamos t<strong>en</strong>er que introducir las coord<strong>en</strong>adas de la posición <strong>en</strong> el tablero.<br />

Ilustración 7: Insertar pieza desde tablero<br />

Página 7


ENUNCIADO DE PRÁCTICAS<br />

Para modificar las características de cualquier pieza basta con pulsar el botón derecho <strong>del</strong> ratón sobre<br />

la misma, con lo que abrirá la v<strong>en</strong>tana de insertar nueva pieza con las características que ti<strong>en</strong>e <strong>en</strong> este<br />

mom<strong>en</strong>to. Modificando esta información actualizaremos a los valores nuevos que deseemos.<br />

Podemos cambiar las piezas de posición si pulsamos el botón izquierdo <strong>del</strong> ratón sobre la pieza y, sin<br />

soltarlo, la desplazamos hasta la nueva casilla. Para eliminar de nuestro mundo un determinado individuo<br />

disponemos de la opción <strong>del</strong> m<strong>en</strong>ú “Quitar pieza” que nos pedirá la posición de la pieza que queremos<br />

eliminar.<br />

Página 8<br />

2. Ejercicios<br />

Ilustración 8: Eliminar pieza<br />

Veamos algunos ejercicios que nos permitirán evaluar semánticam<strong>en</strong>te las fórmulas.<br />

4. Inducción de reglas<br />

Prueba con distintos mundos y determina cual es la regla que permite saber cuando un individuo es<br />

más fuerte que otro. Haz lo mismo para el predicado más rápido.<br />

5. Evaluación Semántica de fórmulas sin cuantificación<br />

Abre un mundo nuevo y busca un mo<strong>del</strong>o (interpretación que hace verdadera la fórmula) y un<br />

contramo<strong>del</strong>o (interpretación que hace falsa la fórmula) para cada una de las s<strong>en</strong>t<strong>en</strong>cias <strong>del</strong> ejercicio 1 <strong>del</strong><br />

apartado anterior ("practica1.s<strong>en</strong>"). Para ello inserta y/o elimina los individuos que creas necesarios.<br />

¿Puedes <strong>en</strong>contrar un mundo donde todas sean ciertas al mismo tiempo? Si la respuesta anterior es<br />

negativa, ¿qué s<strong>en</strong>t<strong>en</strong>cias son las que <strong>en</strong>tran <strong>en</strong> contradicción?<br />

Cambia alguna s<strong>en</strong>t<strong>en</strong>cia para hacer que <strong>en</strong> dicho mundo todas las s<strong>en</strong>t<strong>en</strong>cias sean verdaderas al<br />

mismo tiempo (que sea mo<strong>del</strong>o <strong>del</strong> conjunto completo de s<strong>en</strong>t<strong>en</strong>cias) y lo guardas <strong>en</strong> el fichero<br />

“practica1.mun”.<br />

La s<strong>en</strong>t<strong>en</strong>cia 5 “Si b es cristiano <strong>en</strong>tonces lleva armadura y espada” es cierta ya que <strong>en</strong> nuestro<br />

mundo hemos incluido un cristiano llamado b que lleva armadura y espada (para que se cumplan las<br />

s<strong>en</strong>t<strong>en</strong>cias 2 y 5); por otro lado nuestro mundo también incluye un individuo a que es moro y no ti<strong>en</strong>e espada<br />

(para que sean ciertas las s<strong>en</strong>t<strong>en</strong>cias 2 y 3). En este mismo mundo ¿qué valor t<strong>en</strong>dría la s<strong>en</strong>t<strong>en</strong>cia “Si a es<br />

cristiano <strong>en</strong>tonces lleva armadura y espada”? (razona la respuesta)


6. Evaluación Semántica de fórmulas con cuantificación<br />

LÓGICA DE PRIMER ORDEN<br />

Abre un mundo nuevo y busca un mo<strong>del</strong>o (interpretación que hace verdadera la fórmula) y un<br />

contramo<strong>del</strong>o (interpretación que hace falsa la fórmula) para cada una de las s<strong>en</strong>t<strong>en</strong>cias <strong>del</strong> ejercicio 2 <strong>del</strong><br />

apartado anterior ("pratica2.s<strong>en</strong>"). Para ello inserta y/o elimina los individuos que creas necesarios.<br />

¿Puedes <strong>en</strong>contrar un mundo donde todas sean ciertas al mismo tiempo? Si la respuesta anterior es<br />

negativa, ¿qué s<strong>en</strong>t<strong>en</strong>cias son las que <strong>en</strong>tran <strong>en</strong> contradicción?<br />

Cambia alguna s<strong>en</strong>t<strong>en</strong>cia para hacer que <strong>en</strong> dicho mundo todas las s<strong>en</strong>t<strong>en</strong>cias sean verdaderas al<br />

mismo tiempo (que sea mo<strong>del</strong>o <strong>del</strong> conjunto completo de s<strong>en</strong>t<strong>en</strong>cias) y guardalo <strong>en</strong> el fichero<br />

“practica2.mun”.<br />

7. Clasificación semántica de fórmulas<br />

a) ¿Puedes <strong>en</strong>contrar un contramo<strong>del</strong>o de la primera s<strong>en</strong>t<strong>en</strong>cia <strong>del</strong> ejercicio 1 "El individuo a es moro o<br />

cristiano"? ¿Por qué? ¿Cómo calificarías a dicha fórmula?<br />

Escribe una fórmula sin cuantificación que sea CONTRADICCIÓN, una que sea TAUTOLOGÍA y una que<br />

sea INDETERMINACIÓN <strong>en</strong> los mundos posibles que se pued<strong>en</strong> crear con este programa.<br />

b) ¿Puedes <strong>en</strong>contrar un contramo<strong>del</strong>o de la segunda s<strong>en</strong>t<strong>en</strong>cia <strong>del</strong> ejercicio 2 "Todos son moros o<br />

cristianos"? ¿Por qué? ¿Cómo calificarías a dicha fórmula?<br />

Escribe una fórmula cuantificada que sea CONTRADICCIÓN, una que sea TAUTOLOGÍA y una que sea<br />

INDETERMINACIÓN <strong>en</strong> los mundos posibles que se pued<strong>en</strong> crear con este programa.<br />

8. Análisis semántico de fórmulas<br />

Abre el fichero “practica3.s<strong>en</strong>” (s<strong>en</strong>t<strong>en</strong>cias introducidas <strong>en</strong> el ejercicio 3 <strong>del</strong> apartado anterior).<br />

Analiza las tres fórmulas, estudiando la semejanza o difer<strong>en</strong>cia <strong>en</strong>tre ellas. Para ello te puede ayudar crear<br />

mundos donde evaluarlas. Crea un mundo donde no haya moros, ¿qué ocurre?<br />

∃x (EsMoro(x) ∧ ∀y ( EsCristiano(y) →MasFuerte(x,y)))<br />

∃x ∀y (EsMoro(x) ∧ ( EsCristiano(y) →MasFuerte(x,y)))<br />

∃x ∀y ((EsMoro(x) ∧ EsCristiano(y)) →MasFuerte(x,y))<br />

LA PRÁCTICA<br />

Además de para la evaluación sintáctica y semántica de fórmulas lógicas, este programa nos puede<br />

ayudar a <strong>en</strong>t<strong>en</strong>der y practicar con otros conceptos lógicos: equival<strong>en</strong>cia de fórmulas, fórmulas<br />

complem<strong>en</strong>tarias, concepto semántico de deducción correcta, método <strong>del</strong> contraejemplo, ... En este apartado<br />

vamos a realizar algunos ejercicios que nos permitan repasar algunas de estas nociones.<br />

Página 9


ENUNCIADO DE PRÁCTICAS<br />

Página 10<br />

1. Ejercicios de equival<strong>en</strong>cia de fórmulas<br />

9. Fórmulas sin cuantificación<br />

a) Escribe las fórmulas bi<strong>en</strong> formadas correspondi<strong>en</strong>tes a las sigui<strong>en</strong>tes s<strong>en</strong>t<strong>en</strong>cias y las guardas <strong>en</strong> el fichero<br />

“practica4a.s<strong>en</strong>”. Evalúalas sintácticam<strong>en</strong>te para comprobar que realm<strong>en</strong>te están bi<strong>en</strong> escritas.<br />

• Si b es cristiano <strong>en</strong>tonces lleva espada<br />

• Solo si b es cristiano llevará espada<br />

• O b no es cristiano o lleva espada<br />

• O b es cristiano o no lleva espada<br />

• b es cristiano con espada<br />

• No es cierto que b sea un cristiano que no lleve espada<br />

Abre un mundo nuevo ("practica4a.mun") e inserta los individuos que creas necesarios. Comprueba<br />

qué s<strong>en</strong>t<strong>en</strong>cias son equival<strong>en</strong>tes. Haz modificaciones <strong>en</strong> el mundo para ver el efecto sobre el valor de verdad<br />

de dichas s<strong>en</strong>t<strong>en</strong>cias.<br />

b) Escribe las fórmulas bi<strong>en</strong> formadas correspondi<strong>en</strong>tes a las sigui<strong>en</strong>tes s<strong>en</strong>t<strong>en</strong>cias y las guardas <strong>en</strong> el fichero<br />

“practica4b.s<strong>en</strong>”. Evalúalas sintácticam<strong>en</strong>te para comprobar que realm<strong>en</strong>te están bi<strong>en</strong> escritas.<br />

• No es cierto que a sea un moro que monte a caballo<br />

• Ni a es un moro ni monta a caballo<br />

• a es un moro que monta a caballo<br />

• O a no es moro o no monta a caballo<br />

• No es cierto que a sea un moro o que monte a caballo<br />

• O a es moro o monta a caballo<br />

Abre un mundo nuevo ("practica4b.mun") e inserta los individuos que creas necesarios. Comprueba<br />

qué s<strong>en</strong>t<strong>en</strong>cias son equival<strong>en</strong>tes. Haz modificaciones <strong>en</strong> el mundo para ver el efecto sobre el valor de verdad<br />

de dichas s<strong>en</strong>t<strong>en</strong>cias.<br />

10. Fórmulas con cuantificación<br />

Escribe las fórmulas bi<strong>en</strong> formadas correspondi<strong>en</strong>tes a las sigui<strong>en</strong>tes s<strong>en</strong>t<strong>en</strong>cias y las guardas <strong>en</strong> el fichero<br />

“practica4c.s<strong>en</strong>”. Evalúalas sintácticam<strong>en</strong>te para comprobar que realm<strong>en</strong>te están bi<strong>en</strong> escritas.<br />

• Todos los individuos son no moros<br />

• No existe ningún individuo que sea moro<br />

• Algún individuo no es moro<br />

• No todos los individuos son moros<br />

• No existe ningún individuo que no sea moro<br />

• No todos los individuos son no moros<br />

Abre un mundo nuevo ("practica4c.mun") e inserta los individuos que creas necesarios. Comprueba<br />

qué s<strong>en</strong>t<strong>en</strong>cias son equival<strong>en</strong>tes. Haz modificaciones <strong>en</strong> el mundo para ver el efecto sobre el valor de verdad<br />

de dichas s<strong>en</strong>t<strong>en</strong>cias.


<strong>Bloque</strong> II.<br />

Sistemas de Demostración:<br />

Asist<strong>en</strong>te para la Deducción Natural (ADN)<br />

1. ADN (Asist<strong>en</strong>te para Deducción Natural)<br />

LÓGICA DE PRIMER ORDEN<br />

El Asist<strong>en</strong>te para Deducción Natural es una herrami<strong>en</strong>ta didáctica que asiste al alumno que se inicia <strong>en</strong> la<br />

técnica de Deducción Natural a elaborar sus propias deducciones. Comprueba si la fórmula es sintácticam<strong>en</strong>te<br />

correcta (fbf) y si se ha obt<strong>en</strong>ido de forma adecuada (reglas básicas). Además, posee las sigui<strong>en</strong>tes<br />

herrami<strong>en</strong>tas de apoyo: visor de árboles sintácticos de las fórmulas, informe detallado de los errores, visor de<br />

reglas básicas, aconsejador y ayuda <strong>en</strong> línea. ADN puede ser ejecutado con cualquier navegador, ya que se<br />

trata de un applet escrito <strong>en</strong> Java. Se <strong>en</strong>cu<strong>en</strong>tra disponible <strong>en</strong> internet <strong>en</strong> el sitio web:<br />

http://www.dccia.ua.es/logica/ADN<br />

Ilustración 9: V<strong>en</strong>tana principal <strong>del</strong> ADN<br />

En la Ilustración 9 se muestra la pantalla principal <strong>del</strong> ADN y las partes <strong>en</strong> las que se divide la misma:<br />

Editor de la fórmula objetivo: nos permite editar la fórmula que será el objetivo de la deducción.<br />

Cuerpo de la deducción (pizarra): <strong>en</strong> esta zona se irán visualizando los pasos de la deducción. Se pued<strong>en</strong><br />

observar tres partes (dispuestas <strong>en</strong> columnas):<br />

Numeración de las líneas, para poder hacer refer<strong>en</strong>cia a ellas.<br />

Fórmulas lógicas que vamos obt<strong>en</strong>i<strong>en</strong>do. Las sangrías indican que <strong>en</strong>tramos <strong>en</strong> un nuevo supuesto (hacia la<br />

derecha) o que lo cancelamos (vuelta a la izquierda), configurando lo que llamaremos subpruebas.<br />

Justificación de la fórmula obt<strong>en</strong>ida mediante la aplicación de una regla básica a una o más fórmulas<br />

anteriores.<br />

Página 11


ENUNCIADO DE PRÁCTICAS<br />

Editor de fórmulas: se utiliza para insertar nuevas fórmulas d<strong>en</strong>tro de la deducción y decir de qué fórmulas<br />

han derivado las mismas.<br />

Área de opciones <strong>del</strong> programa: aquí t<strong>en</strong>emos los botones que acced<strong>en</strong> a las difer<strong>en</strong>tes funciones <strong>del</strong> asist<strong>en</strong>te:<br />

Árbol, Aconsejar, Ayuda, Reglas, ...<br />

V<strong>en</strong>tana de información: <strong>en</strong> este área se muestra información al usuario.<br />

2. EL LENGUAJE<br />

La lógica pret<strong>en</strong>de formalizar las expresiones <strong>del</strong> conocimi<strong>en</strong>to humano. Y dicho conocimi<strong>en</strong>to lo adquirimos<br />

y transmitimos por medio <strong>del</strong> l<strong>en</strong>guaje. Pero el l<strong>en</strong>guaje natural que utilizamos es ambiguo y <strong>en</strong>gorroso, y por<br />

ello, para trabajar formalm<strong>en</strong>te con el conocimi<strong>en</strong>to, necesitamos un l<strong>en</strong>guaje artificial. En el l<strong>en</strong>guaje que<br />

utilizamos <strong>en</strong> la Lógica de Primer Ord<strong>en</strong> descomponemos las frases <strong>en</strong> objetos y relaciones/propiedades,<br />

dando lugar a los conceptos de términos y predicados. ADN utiliza el alfabeto clásico de la Lógica de Primer<br />

Ord<strong>en</strong> y la definición usual de fórmula bi<strong>en</strong> formada (fbf).<br />

Veamos un ejemplo. Sea la s<strong>en</strong>t<strong>en</strong>cia "hay una mujer que gusta a todos los hombres", que utilizando el<br />

l<strong>en</strong>guaje de la lógica de primer ord<strong>en</strong> se correspondería con la sigui<strong>en</strong>te fórmula bi<strong>en</strong> formada (fbf):<br />

∃y { mujer(y) ∧ ∀x [hombre(x) → leGustaA(x,y)] }<br />

Si utilizamos para los predicados las letras P (ser mujer), Q (ser hombre) y R (le gusta) quedaría:<br />

∃y { P(y) ∧ ∀x [Q(x) → R(x,y)] }<br />

Repres<strong>en</strong>tar la fórmula <strong>en</strong> forma de árbol etiquetado nos puede ayudar a ver claram<strong>en</strong>te la estructura<br />

sintáctica de la misma. El árbol sintáctico de la fórmula bi<strong>en</strong> formada P(a) → ∃y P(y), proporcionado por el<br />

programa ADN, lo podemos ver <strong>en</strong> la Ilustración 10. El árbol sintáctico de una fórmula lógica nos permite<br />

distinguir claram<strong>en</strong>te cuál es el operador principal y las prioridades <strong>en</strong>tre ellos. Esto nos ayudará <strong>en</strong> la<br />

posterior manipulación sintáctica cuando t<strong>en</strong>gamos que aplicar las reglas de la deducción.<br />

Página 12<br />

Ilustración 10 : Árbol sintáctico<br />

3. PASOS DE LA DEDUCCIÓN NATURAL<br />

Uno de los aspectos fundam<strong>en</strong>tales de la lógica es que, además de un l<strong>en</strong>guaje de repres<strong>en</strong>tación y<br />

formalización de conocimi<strong>en</strong>to, nos proporciona unas técnicas de razonami<strong>en</strong>to o infer<strong>en</strong>cia, que nos<br />

permit<strong>en</strong> obt<strong>en</strong>er nuevo conocimi<strong>en</strong>to a partir <strong>del</strong> que ya poseemos. Exist<strong>en</strong> distintos métodos para ello.


LÓGICA DE PRIMER ORDEN<br />

Nosotros vamos a trabajar con la Deducción Natural, sistema formal que a partir de unas premisas y con el<br />

único apoyo de unas reglas básicas, obti<strong>en</strong>e determinadas conclusiones. Así, si asumimos las premisas y cada<br />

paso elem<strong>en</strong>tal que damos lo justificamos con una regla básica, iremos obt<strong>en</strong>i<strong>en</strong>do nuevas fórmulas lógicas<br />

que podemos asumir como conclusiones derivadas de las premisas. Todas las fórmulas lógicas que vamos<br />

introduci<strong>en</strong>do son visualizadas <strong>en</strong> la parte c<strong>en</strong>tral de la v<strong>en</strong>tana de ADN, que llamaremos pizarra. Una<br />

deducción la podemos considerar como un algoritmo que parti<strong>en</strong>do de unos valores de <strong>en</strong>trada (premisas)<br />

obti<strong>en</strong>e unas determinadas salidas (conclusiones) utilizando un conjunto dado de instrucciones (reglas).<br />

a) Reglas básicas<br />

Para determinar las reglas básicas de la Deducción Natural nos basaremos <strong>en</strong> el cálculo de G<strong>en</strong>tz<strong>en</strong><br />

[G<strong>en</strong>tz<strong>en</strong>1934] que propone dos reglas (una de introducción y otra de eliminación) para cada símbolo lógico<br />

(conectivas y cuantificadores). Si la regla básica introduce <strong>en</strong> su conclusión una conectiva o cuantificador que<br />

no aparece <strong>en</strong> sus premisas será una regla de introducción; si elimina de su conclusión una conectiva o<br />

cuantificador que aparece <strong>en</strong> sus premisas será una regla de eliminación. Se intuye que si disponemos de<br />

procedimi<strong>en</strong>tos para añadir o quitar los distintos símbolos lógicos, podremos transformar por pura<br />

manipulación sintáctica las premisas <strong>en</strong> la conclusión. Así, aplicando un punto de vista de ing<strong>en</strong>iería, se<br />

trataría de desmontar las fórmulas lógicas que t<strong>en</strong>emos como premisas hasta obt<strong>en</strong>er sus compon<strong>en</strong>tes básicas<br />

(fórmulas atómicas) y volver a montarlas <strong>en</strong> la configuración adecuada (fórmula lógica que queremos obt<strong>en</strong>er<br />

como conclusión). Las reglas serían los instrum<strong>en</strong>tos que nos permitirían montar y desmontar dichas fórmulas<br />

lógicas. En la v<strong>en</strong>tana de reglas básicas visualizamos las reglas de introducción y eliminación correspondi<strong>en</strong>te<br />

al operador lógico que esté seleccionado <strong>en</strong> la lista superior (Ilustración 11).<br />

Ilustración 11: V<strong>en</strong>tana de Reglas Básicas<br />

T<strong>en</strong>dremos un deducción correcta cuando consigamos una secu<strong>en</strong>cia finita de fórmulas, donde cada una de las<br />

fórmulas ha sido obt<strong>en</strong>ida mediante la aplicación de alguna regla de infer<strong>en</strong>cia. En ADN, cada línea de<br />

nuestra deducción (y por tanto la fórmula lógica escrita <strong>en</strong> ella) estará "justificada" por la aplicación de una<br />

regla básica a alguna o algunas líneas anteriores. Dicha justificación aparece <strong>en</strong> la columna de la derecha. Por<br />

ejemplo, la justificación de la línea 11 de la Ilustración 9, EE 1,2-10 significa que esa fórmula la hemos<br />

obt<strong>en</strong>ido porque t<strong>en</strong>emos una fórmula cuantificada exist<strong>en</strong>cialm<strong>en</strong>te <strong>en</strong> la línea 1, suponemos <strong>en</strong> la línea 2<br />

que un individuo g<strong>en</strong>érico <strong>del</strong> dominio (b) cumple dicha fórmula y llegamos <strong>en</strong> la línea 10 a una conclusión<br />

que no dep<strong>en</strong>de de la elección, por lo que podemos concluir la fórmula de dicha línea.<br />

b) Subdeducciones<br />

Otro de los aspectos cruciales de la deducción natural es el de las subpruebas (subdeducciones o<br />

subderivaciones). En cualquier paso de nuestra deducción podemos introducir un supuesto provisional, que<br />

debe ser cancelado <strong>en</strong> alguna línea posterior. Desde el supuesto hasta la cancelación t<strong>en</strong>dremos una<br />

subdeducción. Así, <strong>en</strong> nuestras deducciones t<strong>en</strong>dremos fórmulas a distintos niveles, que visualizaremos<br />

gráficam<strong>en</strong>te mediante una sangría a la derecha. Los supuestos provisionales son una herrami<strong>en</strong>ta muy<br />

Página 13


ENUNCIADO DE PRÁCTICAS<br />

pot<strong>en</strong>te ya que nos permit<strong>en</strong> suponer lo que nosotros queramos. Pero debemos pagar un alto precio por ello:<br />

para poder finalizar una demostración deberemos haber cancelado todos los supuestos que hayamos hecho.<br />

Por tanto, la cancelación de supuestos provisionales se convierte <strong>en</strong> una pieza clave de las deducciones<br />

naturales. Cuando un supuesto es cancelado, sangramos a la izquierda y sombreamos <strong>en</strong> gris las fórmulas<br />

interiores de la subdeducción. Dichas fórmulas interiores serán inaccesibles a partir de este mom<strong>en</strong>to. La<br />

utilización de subdeducciones nos permite "modularizar" nuestras deducciones, planteándonos subobjetivos<br />

más s<strong>en</strong>cillos que el objetivo final, y que <strong>en</strong> su conjunto nos llev<strong>en</strong> a la conclusión que buscamos.<br />

4. EL asist<strong>en</strong>te<br />

El ADN dispone de una herrami<strong>en</strong>ta muy útil a la hora de realizar una deducción. Está herrami<strong>en</strong>ta es el<br />

Aconsejador. El aconsejador analiza las fórmulas de la deducción e int<strong>en</strong>ta guiarnos hacia el objetivo o<br />

decirnos qué reglas podemos aplicar. No nos llevará siempre a la solución, ya que la deducción natural <strong>en</strong><br />

lógica de primer ord<strong>en</strong> no es un problema decidible, simplem<strong>en</strong>te es un apoyo. En cualquier mom<strong>en</strong>to<br />

podemos poner <strong>en</strong> marcha el aconsejador, y se puede dejar visible durante toda la deducción, con lo que se irá<br />

actualizando conforme añadamos o eliminemos fórmulas. En la Ilustración 12 se puede ver la v<strong>en</strong>tana <strong>del</strong><br />

aconsejador.<br />

Ilustración 12: V<strong>en</strong>tana <strong>del</strong> Aconsejador<br />

En la parte superior de la v<strong>en</strong>tana se muestra una suger<strong>en</strong>cia de lo que podemos hacer y justo debajo da una<br />

pista gráfica con las fórmulas que t<strong>en</strong>emos <strong>en</strong> la deducción. Podemos navegar <strong>en</strong>tre todos los consejos<br />

g<strong>en</strong>erados mediante los botones de Anterior y Sigui<strong>en</strong>te. En la barra de estado <strong>del</strong> aconsejador podemos ver<br />

cuantos consejos se han g<strong>en</strong>erado (a la derecha) y cuál estamos visualizando actualm<strong>en</strong>te (a la izquierda). El<br />

ADN muestra consejos g<strong>en</strong>erados de arriba-abajo (basados <strong>en</strong> las premisas y fórmulas previas) así como<br />

consejos g<strong>en</strong>erados de abajo-arriba (basados <strong>en</strong> la conclusión).<br />

5. Un ejemplo<br />

En la Ilustración 13 podemos ver un ejemplo de deducción natural realizado mediante el ADN:<br />

∀x P(x) ∨ ∀x Q(x) ⇒ ∀x (P(x) ∨ Q(x))<br />

Página 14


6. Ejercicios<br />

Ilustración 13: Ejemplo<br />

1. Deducción Natural sin cuantificación<br />

Ejercicio 1:<br />

Ejercicio 2:<br />

¬P ∨ ¬Q, R → P, S → Q ⇒ ¬R ∨ ¬S<br />

P → Q ⇒ ¬(P ∧ ¬Q)<br />

2. Deducción Natural con cuantificación<br />

LÓGICA DE PRIMER ORDEN<br />

Ejercicio 3:<br />

∃x {P(x) ∧ ∀y [Q(y) → R(x,y)]}, ∀x ∀y [P(x) ∧ S(y) → ¬R(x,y)] ⇒ ∀x [Q(x) → ¬S(x)]<br />

Ejercicio 4:<br />

∀x ∀y ∃z [P(x,y) ∨ Q(z)], ∃x ∃y {¬R(x,y) ∨ [S(x) ∧ T(y)]}, ∀x [S(x) → ∃x ∃y ¬P(x,y)], ¬∃x Q(x) ⇒<br />

⇒ ∃x ∃y ¬R(x,y)<br />

Ejercicio 5:<br />

¬ [ ¬ ∃x ¬P(x) ∧ ¬ ∀x P(x)]<br />

Página 15


ENUNCIADO DE PRÁCTICAS<br />

Página 16<br />

<strong>Bloque</strong> III.<br />

Automatización <strong>del</strong> Razonami<strong>en</strong>to:<br />

el L<strong>en</strong>guaje de Programación Lógica Prolog<br />

Este segundo bloque de la parte práctica de la asignatura se realizará utilizando el l<strong>en</strong>guaje de<br />

programación lógica Prolog, <strong>en</strong> concreto SWI-Prolog, para Windows 1 . SWI-Prolog es un interprete Prolog<br />

de dominio público para ord<strong>en</strong>adores PC desarrollado <strong>en</strong> el Dept. of Social Sci<strong>en</strong>ce Informatics (SWI) de la<br />

Universidad de Amsterdam. Tanto el software, el manual de refer<strong>en</strong>cia (<strong>en</strong> formato PostScript), como distinta<br />

información sobre el interprete la podemos <strong>en</strong>contrar <strong>en</strong> la sigui<strong>en</strong>te dirección:<br />

http://www.swi.psy.uva.nl/projects/SWI-Prolog<br />

Es pot<strong>en</strong>te y flexible (permite integración con C), y ti<strong>en</strong>e las v<strong>en</strong>tajas de que, de mom<strong>en</strong>to, se<br />

manti<strong>en</strong>e actualizado y se ejecuta sobre un <strong>en</strong>torno gráfico más agradable para el usuario. Para ejecutarlo, una<br />

vez iniciado Windows, basta con hacer doble click sobre el icono correspondi<strong>en</strong>te (plwin.exe).<br />

Ilustración 14: V<strong>en</strong>tana de SWI-Prolog<br />

1. Manejo <strong>del</strong> Entorno de Trabajo<br />

Este primer apartado corresponde a un nivel introductorio, y por tanto su objetivo es que el alumno<br />

se familiarice y adquiera cierta soltura para des<strong>en</strong>volverse <strong>en</strong> el <strong>en</strong>torno de trabajo de SWI-Prolog (<strong>en</strong>trada y<br />

salida <strong>del</strong> sistema, consulta de programas, edición y modificación de programas, ...), así como con la forma de<br />

funcionami<strong>en</strong>to y los predicados predefinidos <strong>del</strong> l<strong>en</strong>guaje Prolog (cualquier prolog estándar, <strong>en</strong> g<strong>en</strong>eral).<br />

Durante las primeras sesiones de prácticas, el profesor o profesora correspondi<strong>en</strong>te impartirá el<br />

seminario de Prolog, mediante clases dirigidas, explicando los distintos conceptos necesarios para trabajar <strong>en</strong><br />

Prolog, el <strong>en</strong>torno de trabajo de SWI-Prolog [Wielemaker96], los predicados predefinidos, ... Se trabajarán los<br />

1 Este docum<strong>en</strong>to se ha escrito trabajando <strong>en</strong> la versión 4.0.9. Esta versión es la que se <strong>en</strong>cu<strong>en</strong>tra instalada <strong>en</strong><br />

los ord<strong>en</strong>adores de los laboratorios de prácticas y se puede <strong>en</strong>contrar <strong>en</strong> el sitio web de la asignatura


LÓGICA DE PRIMER ORDEN<br />

ejemplos <strong>del</strong> Anexo A Prolog <strong>del</strong> libro [Castel96] y que se <strong>en</strong>cu<strong>en</strong>tran <strong>en</strong> los ficheros ej01.pl a ej09.pl<br />

<strong>del</strong> directorio ejemplos.<br />

Entorno SWI-Prolog<br />

El interprete SWI-Prolog posee un sistema de ayuda <strong>en</strong> línea que se puede consultar mediante los<br />

predicados:<br />

?- help.<br />

?- help(Termino).<br />

?- help(Seccion).<br />

?- apropos(Cad<strong>en</strong>a).<br />

Al estar desarrollado sobre plataforma Unix, reconoce algunas órd<strong>en</strong>es <strong>del</strong> sistema operativo que nos pued<strong>en</strong> ser<br />

de utilidad:<br />

cd cambiar el directorio de trabajo<br />

pwd muestra el directorio de trabajo<br />

ls muestra el cont<strong>en</strong>ido <strong>del</strong> directorio de trabajo<br />

...<br />

?- halt.<br />

Para terminar la sesión y salir <strong>del</strong> interprete SWI-Prolog utilizaremos el predicado:<br />

Edición de programas<br />

Objetivos: Arranque de SWI-Prolog.<br />

Obt<strong>en</strong>ción de ayuda: help<br />

Órd<strong>en</strong>es <strong>del</strong> S.O.: pwd, ls, cd, ...<br />

Salir de SWI-Prolog: halt<br />

Más información la podemos <strong>en</strong>contrar <strong>en</strong> línea con:<br />

?- help(2-6). Online Help<br />

?- help(3-40). User Toplevel Manipulation<br />

Objetivos: Edición de programas: pfe , bloc de notas o PCE Emacs<br />

Consulta de ficheros: consult<br />

Com<strong>en</strong>tarios <strong>en</strong> Prolog: /* ... */ o %<br />

Concepto de términos constantes, variables y predicados.<br />

Guardar fichero <strong>en</strong> disco de trabajo, unidad A:.<br />

Página 17


ENUNCIADO DE PRÁCTICAS<br />

En la Ilustración 15 podemos ver un esquema de la forma de trabajo <strong>en</strong> Prolog. Mediante un editor<br />

de texto escribiremos nuestra Base de Conocimi<strong>en</strong>tos compuesta por distintos hechos y reglas que reflejan<br />

nuestro conocimi<strong>en</strong>to acerca <strong>del</strong> problema a formalizar. Para poder utilizarlo deberemos guardarlo <strong>en</strong> disco<br />

(disco duro o disquete) 2 .<br />

?- edit(Fichero).<br />

Posteriorm<strong>en</strong>te deberemos abrir la v<strong>en</strong>tana de SWI-Prolog y consultar el fichero deseado. Un<br />

programa prolog se puede consultar mediante el predicado consult o <strong>en</strong>cerrado <strong>en</strong>tre 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 />

Si el nombre <strong>del</strong> fichero ti<strong>en</strong>e algún carácter distinto de letras o dígitos (espacios, dos puntos, barra,<br />

...) debe ir <strong>en</strong>trecomillado con comillas simples, para que prolog lo reconozca como un átomo. Por defecto, la<br />

ext<strong>en</strong>sión .pl no es necesario escribirla.<br />

Una vez consultada la base de conocimi<strong>en</strong>tos correspondi<strong>en</strong>te, estaremos <strong>en</strong> condiciones de hacer las<br />

preguntas que queramos que resolver. Este ciclo se repetirá continuam<strong>en</strong>te (editar-guardar-consultarpreguntar)<br />

hasta que demos por finalizado nuestro trabajo.<br />

Página 18<br />

Consultar<br />

Preguntas<br />

<br />

Ilustración 15: Esquema de trabajo <strong>en</strong> Prolog<br />

Base de Conocimi<strong>en</strong>tos:<br />

• Hechos<br />

• Reglas<br />

Guardar<br />

2 Guarda tus programas prolog <strong>en</strong> un disquete (unidad a:). Si utilizas un directorio temporal de trabajo <strong>en</strong> el<br />

disco duro, al finalizar cada sesión guarda tus ficheros <strong>en</strong> el disquete y bórralos <strong>del</strong> disco duro.


LÓGICA DE PRIMER ORDEN<br />

Todos los programas deberán empezar con los datos de los autores, <strong>en</strong>tre com<strong>en</strong>tarios. Para escribir<br />

un programa Prolog se puede utilizar cualquier editor de texto., como por ejemplo el bloc de notas de<br />

Windows. Cuando escribamos programas de muchas líneas y t<strong>en</strong>gamos que corregir errores, como el<br />

interprete nos da el número de la línea donde este aparece, es conv<strong>en</strong>i<strong>en</strong>te que utilicemos un editor que t<strong>en</strong>ga<br />

numeración de líneas, como por ejemplo pfe ("Programmer's File Editor"). En la Ilustración 16 podemos ver<br />

la v<strong>en</strong>tana de este editor de dominio público. Podemos <strong>en</strong>contrar más información sobre él <strong>en</strong> la dirección<br />

electrónica:<br />

http://www.lancs.ac.uk/people/cpaap/pfe/<br />

Ilustración 16: Editores Bloc de notas y pfe<br />

A partir de la versión 4, SWI-Prolog incorpora el editor PCE Emacs, que reconoce la sintaxis de<br />

colores para Prolog y con una barra de m<strong>en</strong>ú personalizada para el Prolog, <strong>en</strong>tre otras cosas. Para ello<br />

llamaremos al editor con el predicado:<br />

?- emacs(Fichero).<br />

Ilustración 17: Editor PCE Emacs<br />

Página 19


ENUNCIADO DE PRÁCTICAS<br />

Página 20<br />

También dispone de un navegador Prolog, que se llama desde el m<strong>en</strong>ú Browse -> Prolog Navigator :<br />

Ilustración 18: Navegador Prolog<br />

Más información la podemos <strong>en</strong>contrar <strong>en</strong> línea con:<br />

?- help(3-3). Consulting Prolog Source files<br />

2. Base de Conocimi<strong>en</strong>tos: gestión universitaria<br />

Este segundo apartado corresponde a un segundo nivel <strong>en</strong> el cual el alumno/a realiza pequeños<br />

ejercicios que se le van planteando <strong>en</strong> clase y que al final conformarán una Base de Conocimi<strong>en</strong>tos que<br />

recopila información sobre un dominio (problema) dado. Para este curso se ha elegido la repres<strong>en</strong>tación de la<br />

información correspondi<strong>en</strong>te a la gestión universitaria : asignaturas, profesores, alumnos, notas, ...


Declaración de hechos<br />

LÓGICA DE PRIMER ORDEN<br />

Escribir <strong>en</strong> Prolog una Base de Conocimi<strong>en</strong>tos (“practica.pl”) que permita repres<strong>en</strong>tar la información<br />

refer<strong>en</strong>te a la gestión universitaria : asignaturas, profesores, alumnos, notas, ... Como primer paso, debéis<br />

formalizar y repres<strong>en</strong>tar la información de las sigui<strong>en</strong>tes tablas (y otra que se os ocurra) <strong>en</strong> forma de hechos<br />

de Prolog.<br />

Código Asignatura Curso Créditos teoría Créditos prácticas<br />

LPO Lógica de Primer Ord<strong>en</strong> 1º 3 1'5<br />

PRO Probabilidad 1º 4'5 4'5<br />

IN2 Informática II 2º 3 1'5<br />

ALO Ampliación de Lógica Lib. Conf 3 1'5<br />

FIA Fundam<strong>en</strong>tos de Intelig<strong>en</strong>cia Artificial Optativa 3 1'5<br />

Alumno Nº Expedi<strong>en</strong>te LPO PRO IN2 ALO FIA<br />

Pepe 1 7'5 6 8 9 8'5<br />

Ana 2 3 5'5 6 NM 7<br />

María 3 9 8'5 7'5 8 NP<br />

Jordi 4 4 3 6 NM 6<br />

Clara 5 8 7 7'7 10 9<br />

• Declararemos Hechos que sigan los sigui<strong>en</strong>tes esquemas de relación:<br />

asignatura(Cod,Nom,Curso,CrT,CrP)


ENUNCIADO DE PRÁCTICAS<br />

Para repres<strong>en</strong>tar las relaciones exist<strong>en</strong>tes <strong>en</strong>tre distintos objetos podemos utilizar las reglas. Así, por<br />

ejemplo, dos personas serán hermanos si ti<strong>en</strong><strong>en</strong> los mismo padres. Define una serie de reglas que reflej<strong>en</strong><br />

distintas relaciones <strong>en</strong>tre las informaciones anteriores.<br />

• Definiremos Reglas para obt<strong>en</strong>er los sigui<strong>en</strong>tes esquemas de relación:<br />

asignatura(C,N)

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

Saved successfully!

Ooh no, something went wrong!