Está en la página 1de 26

Programacin Lgica

Ing. Ivn Adrianzn Olano


Fundamentos de Visual Prolog
Visual Prolog es orientado a objeto
Para el curso de Sistemas Expertos usaremos el Prolog
de la forma clsica usando el PIE (Prolog
Interpretation Engine: Motor de Interpretacin de
Prolog).
Es el intrprete clsico de Prolog.
Lo encontrar en la carpeta Ejemplos que se crea al
instalarlo.
Lgica de la Clusula Horn
Visual Prolog se basa en la lgica de la clusula 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 relacin, el saber
que uno es el padre del otro.
Formalizando esta oracin:
padre(Bill,John).
Lgica de la Clusula Horn
Podemos decir que padre es un predicado (una
relacin) que tiene 2 argumentos.
El orden de los argumentos es determinado por el
diseador de la formalizacin.
Debe ser consistente.
Ejms:
vive_en(Pedro,Lima).
esta_casado_con(Carlos,Claudia).
Lgica de la Clusula Horn
No hay lmite para el nmero de argumentos.
Ejm:
% tiene 1 argumento.
es_soltero(Ricardo).
% tiene 3 argumentos.
especialista_en(Jeannet,Matemticas,Lgica).
Estas especificaciones se denominan: hechos
Un hecho consiste de un predicado, uno o ms
argumentos entre parntesis separados por comas y
terminados en un punto.
Lgica de la Clusula Horn
Un hecho describe una relacin esttica 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).
Lgica de la Clusula Horn
En esta regla usamos:
Los operadores lgicos SI (:-) tambin Y (,).
Cada regla termina en un punto (.).
La primera parte se denomina conclusin (antes del
smbolo :-).
Lo que sigue se denomina premisas formado por uno o
ms hechos separados por comas y termina en punto (.).
Note que abuelo comienza con minscula.
Los argumentos deben empezar con mayscula.
A estos argumentos denominamos variables.
Lgica de la Clusula Horn
Si en lgica escribimos: SI p Y q ENTONCES r.
En Prolog es: r:- p, q.
Cuando las premisas son verdaderas la conclusin
tambin lo es.
La forma general es:
Conclusin:- premisa1, premisa2,premisaN.
Lgica de la Clusula Horn
Resulta difcil establecer al final quin 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).
Lgica de la Clusula Horn
En la regla usamos variables en vez de nombres de
objetos.
En Prolog los hechos y las reglas se llaman clusulas.
Con hechos y reglas estamos listos para formular
teoras.
En general una teora es una coleccin de hechos y
reglas; es decir es un sistema de clusulas.
Lgica de la Clusula Horn
Una pequea teora:
padre(Bill,John).
padre(Pam,Bill).
padre(Sue,Jim).
abuelo(Nieto, Abuelo):-
padre(Nieto, Padre),
padre(Padre, Abuelo).
Con esta teora se puede contestar a las siguientes
preguntas:
Lgica de la Clusula Horn
Jimes padre de Sue?
Esta pregunta puede ser contestada observando los hechos.
El tercer hecho reconoce que Jimes 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 Jimes el padre
de Sue. Esto implica que John no puede ser el padre de Sue.
La inteligencia de los seres humanos notara 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".
Lgica de la Clusula Horn
Quin 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".
Lgica de la Clusula 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 estn
diciendo precisamente que tomamos a Bill para algo.
En efecto s, John es el abuelo de Pam.
Lgica de la Clusula 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 Jimes el padre de Sue?:
?-padre(Sue", "Jim").
La pregunta John es el padre de Sue?:
?-padre("Sue", "John").
La pregunta Cul 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").
Lgica de la Clusula Horn
A todos, los hechos, reglas y metas se llama las clusulas Horn,
por lo tanto el nombre de lgica de la clusula 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 solucin como X
= "Bill". Algunas metas pueden incluso tener muchas soluciones.
Por ejemplo:
?- padre(X, Y).
Tiene tres soluciones (hay tres hechos que dan una solucin):
X = "Bill", Y = "John".
X = "Pam", Y = "Bill".
X = "Sue", Y = "Jim".
PIE: Motor de Inferencia de Prolog
Ventana de dilogo
Ventana del programa
PIE: Motor de Inferencia de Prolog
Antes de poder usar el programa, debe instalar y construir
el PIE ejemplo. Si an no ha instalado los ejemplos, por
favor hgalo 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 dilogo.
En la ventana del programa escribe los hechos y las reglas de su
teora.
La ventana de dilogo se usa para el dilogo con el motor de
inferencia. Aqu escriba las metas para el programa, que son las
preguntas que se contestarn. Tambin los mensajes de PIE
aparecen en esta ventana.
Es importante tener cuidado de cul ventana tiene el control
(ventana activa). Para dar control a una ventana haga clic en su
barra de ttulo.
Agregue en la ventana del programa las clusulas padre y abuelo
(que son los hechos y las reglas) que evaluamos anteriormente.
Ventana del Programa
Si todo va bien se mostrar una ventana como
sta
Hechos
Regla
PIE: Motor de Inferencia de Prolog
Para que el motor de inferencia utilice stas clusulas y
sta regla debemos cargarlo previamente. Mientras la
ventana del programa est activa seleccione el men
Engine/Reconsult o tambin 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
Reconsltelo con el motor con Engine/Reconsult
Agregue una meta en la ventana de dilogo y presione
<enter>
PIE: Motor de Inferencia de Prolog
Una vez que "haya consultado" la teora, puede utilizarla
para responder a metas.
En una lnea en blanco en la ventana de dilogo digite una
meta (sin ?- adelante).
Vamos a hacer la pregunta quin es abuelo de quin. 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 minscula y las variables en
mayscula "X" y "Y, no olvide terminarlo en punto.
Ejecutando las metas
Escribimos la meta como se observa en la figura:
Para consultarlo site el cursor al final del prrafo y
presione enter
Meta
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
nmero correcto y el tipo correcto. En este caso el tipo es siempre
cadena de caracteres, es difcil que se equivoque aqu.
Un argumento puede incorporar el nombre de un objeto especfico o
puede usar una variable. Los nombres de objetos especficos 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 ms de un predicado. En
ese caso tiene que utilizar los operadores lgicos ","
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 teora redactada.

También podría gustarte