Professional Documents
Culture Documents
AD no. 9.
Conferencia no. 4.
Sumario:
Generalidades de la Programación Descriptiva.
Introducción al Prolog.
Características del SWI Prolog.
Tipos de datos.
Operadores.
Recursividad
Bibliografía
Prolog Programming for Artificial Inteligence(Bratko)
Lógica Informática. Parte II(José Cuena)
Introducción
Explicación de las características del tema.
Precedencias.
Desarrollo
Ejemplo
Se tiene una lista de relaciones de progenitor-hijo. Verificar si José es el padre de Luis.
PROLOG
1
Su nombre se forma de las palabras inglesas PROgraming in LOGic(programación en lógica).
Fue desarrollado en 1975 por Colmerauer en la Universidad de Marsella. Es un lenguaje de
programación declarativa. Un programa en PROLOG consiste en un conjunto de axiomas de
lógica de primer orden, junto con un teorema que debe ser probado. PROLOG tiene
implementado los mecanismos de inferencia de la lógica de primer orden., lo que le permite
llegar a probar si el teorema es cierto o falso; si el teorema a probar incluye variables, PROLOG
devuelve una lista de valores para cada variable, con los cuales es el teorema es cierto. Se ha
usado como principal lenguaje de IA en Europa.
Kowalski Planteó que este sistema puede considerarse como un demostrador automático por
resolución lineal de cláusulas de Horn.
Recordar Demostración Automática de teoremas. Forma Normal Skolem
Cláusulas de Horn: No más de un literal afirmado.
Las diferencias sintácticas entre las representaciones lógicas y las representaciones PROLOG
son las siguientes:
En PROLOG todas las variables están implícitamente cuantificadas universalmente.
En PROLOG, las implicaciones p --> q se escriben al revés q :- p, ya que el intérprete
siempre trabaja hacia atrás sobre un objetivo, como se verá más adelante.
Deben profundizar en esto, y para ello deberán leer el texto Lógica Informática, Parte II cap.13,
a partir de las pág. 441
Como puede apreciarse un programa Prolog es una secuencia de cláusulas: Hecho, Pregunta,
Regla.
Hechos:
Expresan relaciones entre objetos. Supongamos que queremos expresar el hecho Tomas es
progenitor de Raul. Este hecho, consta de dos objetos, "tomas" y "raul", y de una relación
llamada "progenitor". La forma de representarlo en PROLOG es:
prog(tomas,raul).
2
Sintaxis :Id-predicado (término,....,término).
Los nombres de objetos y relaciones deben comenzar con una letra minúscula.
Primero se escribe la relación, y luego los objetos separados por comas y encerrados entre
paréntesis.
Al final de un hecho debe ir un punto (el caracter ".").
El orden de los objetos dentro de la relación es arbitrario, pero debemos ser coherentes a lo
largo de la base de hechos.
Ejemplo:
prog(tomas,raul).
prog(andres,luis).
prog(maria,raul).
prog(luis,rosa).
prog(tomas,ana).
prog(luis,noel).
prog(maria,ana).
prog(rita,noel).
prog(ana,rosa).
prog(noel,jose).
Esto puede ser considerado un programa Prolog. De hecho su primer programa Prolog.
1. Inicio/Programas/Prolog
3
2. File/New
4
4. Aparece el Editor del Bloc de notas y un mensaje de que su archivo no aparece, si desea
crear uno nuevo, responda Si a la pregunta.
5. Teclee su programa
5
El programa ha sido guardado y está listo para recibir preguntas. ¿Qué es una pregunta?
¿Cómo realizarla?
Pregunta:
Secuencia de metas.
lenguaje interactivo:
Ejemplos:
1.-
?- prog(tomas,ana).
Yes
6
2.-
?- prog(raul,rita).
no
3.-¿Quién es el progenitor de Luis?
?- prog(X,luis)
X=VARIABLE : símbolo en mayúscula
?- prog (X,luis).
X= andres
7
4.- ¿Quiénes son los hijos de tomas?
?- prog (tomas,X).
X= raul ; resatisface nueva solución
X= ana;
No
8
Por tanto la respuesta a una pregunta puede ser:
yes ( se satisface ).
variable= valor ( se satisface ).
no (falla)
Hasta ahora hemos visto preguntas que Prolog responde de manera bastante directa buscando
hechos en la base de datos, que le permiten determinar según el predicado progenitor (prog(X,Y)
– definido para esta actividad), si el predicado se satisface o falla, pero cómo respondería Prolog
ante la pregunta ¿Quién es el abuelo de Rosa?.
En primer lugar, ya esto no aparece directamente en la base de datos, sino que tienen que
elaborar la pregunta, cómo quedaría?
?- prog(Y,rosa), prog(X,Y).
Y ¿cómo opera Prolog para responder esta pregunta? Justamente usando un mecanismo
de control, el backtraking, que es uno de sus medios principales para resolver
problemas.
Conclusiones:
Generalizar los aspectos vistos en función del ambiente de SWI – Prolog y los aspectos
fundamentales de un programa Prolog estudiados: hechos y preguntas.
9
Motivación en función de preguntas con más de un objetivo a cumplir, y las reglas.
OEI:
Realizar la guía de CP no 6 (Lab. 1). Familiarizarse con el ambiente de SWI Prolog. Probar los
ejercicios de la guía en el ambiente de programación.
10