Professional Documents
Culture Documents
Entorno y herraminetas
SWI-Prolog
entorno de programacin Prolog
http://www.swi.psy.uva.nl/projects/SWI-Prolog/
SLD-Draw
representacin de rboles SLD
http://www.lcc.uma.es/~pacog/sldDraw
Bibliografa
The Art of Prolog (2ed)
Leon Sterling y Ehud Shapiro
MIT Press, 1994
Prolog Programming for Artificial Intelligence (3ed)
Ivan Bratko
Addison-Wesley, 2000
Clause and Effect
William F. Clocksin
Springer-Verlag, 1997
Programacin en Prolog (2ed)
William F. Clocksin y Chris S. Mellish
Gustavo Gili, 1993
Bibliografa en internet
Libros gratuitos disponibles en internet:
Prolog Programming: A First Course
Paul Brna
http://cbl.leeds.ac.uk/~paul/prologbook/
Logic, Programming and Prolog (2ed)
Ulf Nilsson y Jan Maluszynski
http://www.ida.liu.se/~ulfni/lpp/
Sistema para la
Programacin Lgica.
I.1 Trminos, relaciones y programas.
I.2 Interpretacin declarativa de un
programa.
I.3 Interpretacin operativa de un programa.
I.4 Resolucin SLD.
I.5 Unificacin de trminos e instanciacin
de variables.
Trminos, relaciones y
programas.
Trminos
En los programas lgicos se opera con objetos o
trminos funcionales:
constantes
-denotaciones de objetos simples;
estructuras
Estructuras simples(registros).
Estructuras recursivas.
(simples y compuestos)
Ejemplo de trminos
Constantes
cero, 1.3, antonio, casado, soltero,
nil, arbol_vacio
(los nombres de funtores comienzan con minscula)
Estructuras simples(registros):
ficha(antonio, casado) ,
substancia(azufre,16,32.1).
arco(a,b)
Estructuras recursivas:
suc(cero), suc(suc(cero)), ....
arbol(antonio,arbol_vacio,arbol_vacio),
arbol(antonio,arbol(juan,arbol_vacio,arbol_vacio),arbol_vacio)
Variables
X, Nombre, Ficha, Estado_civil
(los nombres de variables comienzan con mayscula)
Relaciones/Predicados
Representan correspondencias entre trminos
funcionales
Se utilizan para construir trminos predicativos o
frmulas atmicas susceptibles de satisfaccin o
valoracin lgica.
padre(antonio, jose)
elemento(3,[1,5,7])
Son los sujetos de los clculos en la programacin lgica.
No son objetos de clculo.
Definicin de relaciones
Mediante clusulas de Horn
estableciendo hechos
frmula-atmica ".
estableciendo reglas
frmula-atmica ":-" frmula-atmica {","frmula-atmica}"."
Ejemplo
padre(antonio, maria).
padre(antonio, luis).
% padre/2
madre(maria, jose).
% madre/2
persona(X).
% persona/1
progenitor(A,D) :- padre(A,D).
progenitor(A,D) :- madre(A,D).
% progenitor/2
antepasado(A,D) :- progenitor(A,D).
antepasado(A,D) :- progenitor(A,H),
antepasado(H,D).
% antepasado/2
Sintaxis de Prolog
clusula::= frmula-atmica "."
| frmula-atmica ":-" frmula-atmica {","frmula-atmica}"."
frmula-atmica ::= predicado "(" trmino {"," trmino} ")"
predicado ::=
letra-minscula {letra | dgito}
trmino ::=
constante | estructura | variable
constante ::=
letra-minscula {letra | dgito} |
nmero
estructura ::=
funtor "(" trmino {"," trmino} ")" | lista
funtor ::=
letra-minscula {letra | dgito}
lista ::=
"[]" |
"["cabecera "|" cola "]"
cabecera ::=
trmino
cola ::=
lista
variable ::=
letra-mayscula {letra | dgito}
| "_"{letra | dgito}
Programa
Definiciones de relaciones
(Base de conocimiento)
+
Cuestin
Cuestin/Objetivo
Conjuncin de frmulas atmicas establecidas entre objetos que
pueden ser fijos, variables o estar determinados parcialmente.
"?-"frmula-atmica {"," frmula-atmica}"."
Cuestiones
Cuestiones
Cuestiones para el clculo de valores de objetos
?- padre(antonio, X).
?- padre(X, maria).
?- progenitor(antonio, X), madre(X, jose).
(se aplica la generalizacin como regla de deduccin:
una cuestin existencial es siempre una consecuencia lgica
de la existencia de una instancia de dicha cuestin)
Interpretacin declarativa
Clusulas de Horn
Las clusulas de Horn son clusulas con, a lo ms, un literal positivo
X 1 ,..., X n ( A B1 ... Bk )
Interpretacin declarativa
Interpretacin declarativa
antepasado(A,D) :progenitor(A,H),antepasado(H,D).
se interpreta como
A, D, H ( progenitor ( A, H ) antepasado( H , D ) antepasado( A, D) )
arco(a,b).
arco(a,d).
arco(b,c).
camino(X,Y) :- arco(X,Y).
camino(X,Y) :- arco(X,Z), camino(Z,Y).
Interpretacin declarativa
Una cuestin
?- B1, B2, ... , Bk .
slo tiene literales negativos y se interpreta como
para cada combinacin de valores de las variables que aparecen,
alguna frmula Bi no es cierta
?- progenitor(antonio, X), madre(X, jose).
significa
o lo que es lo mismo
Interpretacin operativa de
un programa
Clusulas de Horn (interpretacin procedimental)
Una clusula de Horn A :-B1,B2, ...,Bk . se puede
interpretar tambin en la forma
para resolver A se debe resolver B1, B2 ,...y Bk ;
con lo que ser comparable a la definicin de un
procedimiento, donde
A hace el papel de la cabecera del procedimiento,
B1,B2,...y Bk sern el cuerpo, interpretado como una serie de llamadas a
procedimientos auxiliares Bi ,
Resolucin SLD
Selective Lineal for Definite clauses
Procedimiento de refutacin
?- B1,B2, ...,Bk .
Cada paso de resolucin, aplicado a una cuestin o resolvente ?- B1,B2, ...,Bk .
consiste en la siguiente secuencia de operaciones:
r1) seleccionar una frmula Bi del resolvente,
r2) seleccionar una clusula C del programa, dentro del procedimiento
correspondiente al predicado que aparece en Bi, cuya cabecera coincida con
Bi (en realidad sern literales opuestos),
r3) si se encuentra tal clusula, sustituir, en el resolvente, Bi por el cuerpo
de C; si no la resolucin termina sin xito.
ejc00.pl
10
Situaciones de
indeterminacin
Las reglas para la seleccin de frmulas dentro de
una cuestin se denominan reglas de clculo o de
seleccin y se demuestra que no afectan al
resultado de los clculos (nicamente afectan al
nmero de pasos).
Las reglas para la seleccin de clusulas de la base
de conocimiento se denominan reglas de
bsqueda y s tienen consecuencias sobre el
resultado de los clculos.
Espacio de bsqueda
asociado a un Programa
ejc01.pl
11
Unificacin de trminos
...
progenitor(A,D) :- padre(A,D).
...
?- progenitor(antonio,X).
Sustituimos antonio por A, y X por D y tomamos la regla
progenitor(antonio,X) :- padre(antonio,X).
La nueva resolvente es
padre(antonio,X).
Sustituciones e Instancias.
Una sustitucin de variables es un conjunto finito
= {V1/t1, ...,Vn/tn}
de ligaduras Vi /ti donde cada Vi es una variable distinta y cada ti un
trmino distinto de Vi.
Una instancia de una frmula E, por aplicacin de una sustitucin , es la
expresin E obtenida tras la sustitucin simultnea de todas las
variables que aparecen en por los trminos de sus correspondientes
ligaduras;
p.e.: si E = p(X, f(Y),a)
= {X/b, Y/X}
12
Sustituciones
Una redenominacin o cambio de nombre de las
variables de una frmula E es una sustitucin de
variables que aparecen en la expresin por otras
variables que no aparecen en la expresin o por
algunas de las que se van a cambiar;
p.e.: para E = p(X, f(Y),a),
= {X/Z, Y/X}
es una redenominacin de las variables de E.
Composicin de sustituciones
Sean dos sustituciones
= {V1/t1, ...,Vn/tn} y = {U1/s1, ..., Um /sm}
Se define como la sustitucin resultante de aplicar primero y despus .
Esta sustitucin es equivalente a la sustitucin obtenida a partir de
{V1/t1, ...,Vn/tn, U1/s1, ..., Um /sm}
eliminando
1) las ligaduras Ui /si tales que la variable Ui coincida con alguna
variable Vj; y
2) las ligaduras Vi /ti tales que Vi = ti .
p.e.: la composicin de = {X/f(Y), Y/Z} y = {X/a,Y/b, Z/Y}
ser
= {X/f(b), Z/Y}
13
Ejercicios
E=p(X, g(Y), Z)
= {X/f(Y)} = {Y/a, Z/b, X/c}
Calcular
(E )
E ( )
Unificadores
Un unificador de dos frmulas atmicas A y B es una
sustitucin tal que
A =B;
p.e.: ={Y/f(a), X/a, Z/a} es un unificador para las
frmulas
A =p(f(X),Z) y
B = p(Y,a),
pues
A = p(f(a), a) = B.
Otro es
={Y/f(g(b)), X/g(b), Z/a}
14
Unificador de mxima
generalidad
Un unificador de dos frmulas atmicas A y B se dice que es un
unificador de mxima generalidad (o un umg) cuando cualquier otro
siempre se puede expresar como composicin de ste con alguna
sustitucin (viene a ser el que establece el menor nmero de ligaduras)
p.e.: para
A = p(f(X),Z)
y
B = p(Y,a),
= {Y/f(X), Z/a}
es un unificador de mxima generalidad.
A = p(f(X), Z)
= {X/Y, Z/V}
son dos umgs tales que
= {X/Y}
y
y
B = p(f(Y),V),
= {Y/X, Z/V}
={Y/X}
Algoritmo de unificacin
0) SI
ambas frmulas comienzan por predicados distintos,
ENTONCES (no son unificables) PARAR
SI NO CONTINUAR;
1) k := 0; 0 = (sustitucin vaca);
2) SI
Ek = Fk
ENTONCES (k ser un umg)
PARAR
SI NO
determinar aqullos dos trminos que comienzan en el primer
carcter de Ek y Fk, respectivamente en el que difieren
ambas expresiones (primer par de discordancia);
3) SI
uno de los trminos es una variable X y el otro es un trmino t
donde no aparece X
ENTONCES construir k+1 componiendo k con {X/t};
k:=k+1;
IR A 2)
SI NO
(no son unificables)
PARAR
15
Ejercicios
Aplicar el algoritmo de unificacin a los pares
siguientes
a) p(f(a), g(X)),
p(Y,Y)
b) p(a, X, h(g(Z))), p(Z, h(Y),h(Y))
c) p(X,X),
p(Y, f(Y))
16
17
Prolog
Regla de seleccin:
De izquierda a derecha
Regla de bsqueda:
De arriba abajo
Ejemplos
p(X,Y):-q(X,Y).
p(X,Y):-q(a,X).
q(a,a).
q(X,a):- r(Y),s(X,Y).
q(X,Y):-r(X),p(X,Y).
s(b,b).
s(b,X):-r(X).
r(b).
r(a).
?-p(b,Z).
ejc09.pl
18
Ejemplos
p(X,v,v).
p(X,f(X,Y),Z):-p(X,Y,Z).
p(X,f(Y,Z),f(X,T)):-p(X,Z,T).
?-p(X,f(a,f(b,f(a,v))),L).
ejc10.pl
19