Lógica de la Cláusula Horn

Anuncio
Programación Lógica
Ing. Iván Adrianzén Olano
Fundamentos de Visual Prolog
 Visual Prolog es orientado a objeto
 Para el curso de Sistemas Expertos usaremos el Prolog
de la forma clásica usando el PIE (Prolog
Interpretation Engine: Motor de Interpretación de
Prolog).
 Es el intérprete clásico de Prolog.
 Lo encontrará en la carpeta Ejemplos que se crea al
instalarlo.
Lógica de la Cláusula Horn
 Visual Prolog se basa en la lógica de la cláusula Horn.
 Es un sistema formal usado para razonar sobre objetos
y las relaciones que tienen éstos. Un ejemplo en
lenguaje natural se expresa como: John es el padre de
Bill.
 Se tienen 2 objetos (John y Bill) y una relación, el saber
que uno es el padre del otro.
 Formalizando esta oración:
padre(“Bill”,”John”).
Lógica de la Cláusula Horn
 Podemos decir que padre es un predicado (una
relación) que tiene 2 argumentos.
 El orden de los argumentos es determinado por el
diseñador de la formalización.
 Debe ser consistente.
 Ejms:
vive_en(“Pedro”,”Lima”).
esta_casado_con(“Carlos”,”Claudia”).
Lógica de la Cláusula Horn
 No hay límite para el número de argumentos.
Ejm:
% tiene 1 argumento.
es_soltero(“Ricardo”).
% tiene 3 argumentos.
especialista_en(“Jeannet”,”Matemáticas”,”Lógica”).
 Estas especificaciones se denominan: hechos
 Un hecho consiste de un predicado, uno o más
argumentos entre paréntesis separados por comas y
terminados en un punto.
Lógica de la Cláusula Horn
 Un hecho describe una relación estática entre los
objetos (argumentos).
 Las relaciones generales entre objetos (o grupos de
objetos) se llaman reglas. Ejm:
Persona3 es abuelo de Persona1, si Persona2 es padre de
Persona1 y Persona3 es padre de Persona2.
Formalizando: Regla abuelo.
abuelo(Persona1, Persona3):padre(Persona1, Persona2),
padre(Persona2, Persona3).
Lógica de la Cláusula Horn
En esta regla usamos:
 Los operadores lógicos SI (“:-”) también Y (“,”).
 Cada regla termina en un punto (.).
 La primera parte se denomina conclusión (antes del
símbolo “:-”).
 Lo que sigue se denomina premisas formado por uno o
más hechos separados por comas y termina en punto (.).
 Note que “abuelo” comienza con minúscula.
 Los argumentos deben empezar con mayúscula.
 A estos argumentos denominamos variables.
Lógica de la Cláusula Horn
 Si en lógica escribimos: SI p Y q ENTONCES r.
 En Prolog es: r:- p, q.
 Cuando las premisas son verdaderas la conclusión
también lo es.
 La forma general es:
Conclusión:- premisa1, premisa2,…premisaN.
Lógica de la Cláusula Horn
 Resulta difícil establecer al final quién es el abuelo.
 Vamos a usar nombres de variables en vez de Persona1,
Persona2 y Persona3.
 Usted es libre de elegir los nombres de variables.
 Reformulando la regla abuelo:
abuelo(Nieto, Abuelo):padre(Nieto, Padre),
padre(Padre, Abuelo).
Lógica de la Cláusula Horn
 En la regla usamos variables en vez de nombres de
objetos.
 En Prolog los hechos y las reglas se llaman cláusulas.
 Con hechos y reglas estamos listos para formular
teorías.
 En general una teoría es una colección de hechos y
reglas; es decir es un sistema de cláusulas.
Lógica de la Cláusula Horn
Una pequeña teoría:
padre(“Bill”,”John”).
padre(“Pam”,”Bill”).
padre(“Sue”,”Jim”).
abuelo(Nieto, Abuelo):padre(Nieto, Padre),
padre(Padre, Abuelo).
Con esta teoría se puede contestar a las siguientes
preguntas:
Lógica de la Cláusula Horn
 ¿Jim es padre de Sue?
Esta pregunta puede ser contestada observando los hechos.
El tercer hecho reconoce que Jim es el padre de Sue, así que la
respuesta es “Si”(True).
 ¿John es padre de Sue?
No hay un hecho que indique que John es el padre de Sue, así
que la respuesta es “No“.
Note sin embargo que hay un hecho que dice que Jim es el padre
de Sue. Esto implica que John no puede ser el padre de Sue.
La inteligencia de los seres humanos notaría esto, pero no es la
manera en que razonó Prolog.
En Prolog la respuesta es "no" porque no hay un hecho que
indica que debe ser "sí".
Lógica de la Cláusula Horn
 ¿Quién es el padre de Pam?
Esta pregunta puede ser contestada observando el
segundo hecho. Dice que Bill es el padre de Pam.
 ¿John es el padre de Ana?
No hay hechos sobre Ana, no podemos contestar a esta
pregunta. En Prolog asumimos que la respuesta es
“No", pues no podemos indicar que la respuesta es “Sí".
Lógica de la Cláusula Horn
 ¿John es el abuelo de Pam?
Para contestar esta pregunta tenemos que usar la regla
y los hechos.
La regla nos dice que necesitamos encontrar dos
hechos.
El primero debe decir que alguien es el padre de Pam
y el segundo hecho debe indicar que John es el padre
del mismo.
Repasando los hechos se observa que los hechos están
diciendo precisamente que tomamos a Bill para algo.
En efecto sí, John es el abuelo de Pam.
Lógica de la Cláusula Horn
Las Preguntas y/o Metas
 En Prolog puede hacer estas preguntas al motor de inferencia. Tales
preguntas se llaman metas.
 Las metas se pueden formalizar de la siguiente manera:
 La pregunta ¿Jim es el padre de Sue?:
?-padre(“Sue", "Jim").
 La pregunta ¿John es el padre de Sue?:
?-padre("Sue", "John").
 La pregunta ¿Cuál es el nombre del padre de Pam?:
?-padre("Pam", X).
 La pregunta ¿John es el padre de Ana?:
?-padre("Ana", "John").
 La pregunta ¿John es el abuelo de Pam? :
?-abuelo("Pam", "John").
Lógica de la Cláusula Horn
 A todos, los hechos, reglas y metas se llama las cláusulas Horn,
por lo tanto el nombre de lógica de la cláusula Horn.
 Algunas metas como la primera, segunda y última se responden
con un simple SI o NO, porque está preguntando si un hecho es
verdadero.
 Para otras metas como la tercera buscamos una solución como X
= "Bill". Algunas metas pueden incluso tener muchas soluciones.
Por ejemplo:
?- padre(X, Y).
 Tiene tres soluciones (hay tres hechos que dan una solución):
X = "Bill", Y = "John".
X = "Pam", Y = "Bill".
X = "Sue", Y = "Jim".
PIE: Motor de Inferencia de Prolog
Ventana del programa
Ventana de diálogo
PIE: Motor de Inferencia de Prolog
 Antes de poder usar el programa, debe instalar y construir




el PIE ejemplo. Si aún no ha instalado los ejemplos, por
favor hágalo ahora.
Seleccione "instalar los ejemplos" en el menú de inicio de
Windows (ejemplos de Start/Visual Prolog/Install).
Inicie Visual Prolog
Busque el proyecto PIE en la carpeta Ejemplos que está
instalada. Abra el proyecto PIE en el IDE y ejecute el
programa. Puede ejecutar PIE como un proyecto normal.
No tiene que cambiar nada, así que utilice solamente el IDE
para ejecutar el programa.
PIE: Motor de Inferencia de Prolog
 Para crear un programa, seleccione File/New de la barra de




menú. PIE abre una segunda ventana, la ventana del programa
que usaremos para agregar el programa. Ahora hay dos ventanas
abiertas, la ventana del programa y la ventana de diálogo.
En la ventana del programa escribe los hechos y las reglas de su
teoría.
La ventana de diálogo se usa para el diálogo con el motor de
inferencia. Aquí escriba las metas para el programa, que son las
preguntas que se contestarán. También los mensajes de PIE
aparecen en esta ventana.
Es importante tener cuidado de cuál ventana tiene el control
(ventana activa). Para dar control a una ventana haga clic en su
barra de título.
Agregue en la ventana del programa las cláusulas padre y abuelo
(que son los hechos y las reglas) que evaluamos anteriormente.
Ventana del Programa
Hechos
Regla
Si todo va bien se mostrará una ventana como
ésta
PIE: Motor de Inferencia de Prolog
 Para que el motor de inferencia utilice éstas cláusulas y
ésta regla debemos cargarlo previamente. Mientras la
ventana del programa está activa seleccione el menú
Engine/Reconsult o también puede pulsar la tecla F9.
 El procedimiento en general es:
 Crear o cargar un archivo en la ventana del programa con
File/New o File/Consult
 Guarde esos archivos cuando sea necesario con File/Save
 Reconsúltelo con el motor con Engine/Reconsult
 Agregue una meta en la ventana de diálogo y presione
<enter>
PIE: Motor de Inferencia de Prolog
 Una vez que "haya consultado" la teoría, puede utilizarla




para responder a metas.
En una línea en blanco en la ventana de diálogo digite una
meta (sin ?- adelante).
Vamos a hacer la pregunta quién es abuelo de quién. En
Prolog esto se convierte en una meta con 2 variables.
Queremos que el motor de inferencia encuentre los valores
(nombres) para las variables.
abuelo(X, Y).
Note que abuelo está en minúscula y las variables en
mayúscula "X" y "Y“, no olvide terminarlo en punto.
Ejecutando las metas
 Escribimos la meta como se observa en la figura:
Meta
 Para consultarlo sitúe el cursor al final del párrafo y
presione enter
Resultado
Reglas para establecer las metas
 Puede utilizar cualquier predicado en el programa para formular una




meta. En este caso puede utilizar "padre" o "abuelo".
Con un predicado debe dar los argumentos apropiados. Eso significa el
número correcto y el tipo correcto. En este caso el tipo es siempre
cadena de caracteres, es difícil que se equivoque aquí.
Un argumento puede incorporar el nombre de un objeto específico o
puede usar una variable. Los nombres de objetos específicos son "Sue",
"Jim", "Bill", etc. Todas en cadena de caracteres.
Cuando incorpora una meta, el motor de inferencia contestará sí o no
dependiendo de las reglas y de los hechos en su programa.
Cuando incorpora una meta con variables el motor de inferencia
intentará buscar los valores para las variables de modo que la meta
iguale un hecho. Cuando tiene éxito, mostrará los valores para las
variables. La salida se entenderá mejor cuando use los nombres de
variables que tengan sentido.
Reglas para establecer las metas
 Puede usar nombres de objetos y variables en la misma
meta. Por ejemplo padre("Sue", Padre). En este caso el
motor de inferencia intenta otra vez encontrar un valor
para la variable que empareje la meta con uno de los
hechos.
 Una meta puede consistir en más de un predicado. En
ese caso tiene que utilizar los operadores lógicos ","
para y o ";" para o. Un ejemplo es la meta
padre("Sue", "Jim"),padre("Bill", "Juan").
Ejercicios
 Hagas las consultas respectivas de la regla del abuelo
tratadas anteriormente al motor de inferencia del
prolog.
 Establezca metas propias a la teoría redactada.
Descargar