Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Prolog
Prolog
Prolog
Prolog
Ejemplo:
progenitor(juan,luis).
Juan es el progenitor de Luis
Semntica declarativa
Los programas en Prolog se pueden
entender como teoras lgicas:
P :- Q, R
Si Q y R son ciertos, P es cierto
La cabeza de I es idntica a G
Todos los objetivos en el cuerpo de I son ciertos
Hechos
Juan
progenitor(juan,maria).
Luis
Maria
progenitor(luis,carlos)
progenitor(luis,laura).
Carlos Laura
Variables
Reglas (I)
Reglas (II)
Reglas (IV)
hermano(X,Y) :progenitor(Z,X),
progenitor(Z,Y).
?- hermano(luis,H).
H = luis ;
H = maria ;
antepasado(X,Y) :- progenitor(X,Y).
antepasado(X,Y) :- progenitor(X,Z), progenitor(Z,Y).
antepasado(X,Y) :- progenitor(X,Z), progenitor(Z,K),
progenitor(K,Y).
etc.
Funcionamiento de prolog
Si es un hecho, termina.
Si es una regla, intenta comprobar (de manera
recursiva) si se cumple el cuerpo de la misma.
En el caso de que no se cumpla, hace backtracking, y
continua buscando la siguiente regla que unifique con la
consulta.
Funcionamiento de prolog
(II)
Los contenidos de la base de datos son:
progenitor(juan,luis).
progenitor(juan,maria).
progenitor(luis,carlos)
progenitor(luis,laura).
antepasado(X,Y) :- progenitor(X,Y).
antepasado(X,Y) :- progenitor(X,Z),
antepasado(Z,Y).
Funcionamiento de prolog
(III)
?- progenitor(juan,X)
Prolog busca el primer hecho o regla con
nombre progenitor, y cuyo primer
argumento sea el tomo juan.
El primer resultado (en la BD) es
progenitor(juan,luis).
por lo que el intrprete devuelve
X = luis
Funcionamiento de prolog
(IV)
El segundo resultado (en la BD) es
progenitor(juan,maria).
por lo que el intrprete devuelve
X = maria
No habra ms resultados en la base de datos.
Funcionamiento interno de
prolog
(V)
Ante la consulta
antepasado(juan,X)
Nmeros
Listas (I)
Listas (II)
Otra lista
La lista vaca [].
Separacin de la cabeza y
la cola
?- L = [a,b,c], R = [cabeza|L]
L = [a,b,c]
R = [cabeza,a,b,c]
?- L=[a,b,c], R=[el1,el2|L], U=[a|[]]
L = [a,b,c]
R = [el1,el2,a,b,c]
U = [a]