1. Preliminares
Prolog es un lenguaje declarativo que implementa la programación lógica de
predicados.
Prolog provee infraestructura para el desarrollo de sistemas de producción.
Prolog admite sólo cláusulas de Horn escritas en la forma Q ⟸ P .
o Cláusula de Horn: es aquella que sólo admite un literal no negado:
Variables lógicas:
o Palabras o letras que comienzan con mayúscula: X Pmax
o Palabras o letras que comienzan con _: _X
o Variables lógicas anónimas: _
1
Términos: son términos las constantes, variables lógicas, functores y cláusulas.
Conectivos lógicos:
o Y: , (la coma)
o O: ; (el punto y coma)
Q:−P1 , P 2 , ∙∙ ∙ , P N .
3. Unificación: mecanismo por el cual las variables lógicas toman valor. Si dos variables
lógicas unifican pueden ligarse a un valor. Una variable no ligada está libre. Ejemplo:
a. X queda ligada a 1 porque unifican por la cabeza p(X) con p(1), el primer punto
de elección para p(X). Se elimina p(1).
b. El primer y único punto de elección para q(X) es 2. Pero X no está libre y está
ligada a 1, por lo tanto, q(1) falla y r(X) falla.
c. Backtracking: se vuelve para atrás deshaciendo la ligadura X = 1 para p(X).
X queda ligada ahora al segundo punto de elección X = 2, vamos hacia delante.
d. Se ejecuta q(X), pero X no está libre, luego se ejecuta q(2) que tiene éxito,
manteniendo la ligadura de X al valor 2. r(X) tiene éxito con X ligada al valor 2.
2
Toda variable lógica unifica con un término: w(t(2) y w(Y) unifican e Y queda ligada a t(2)
que es un término.
6. Bucle fail. Obtención de todas las soluciones. El predicado predefinido fail obliga a
buscar otra solución si la hay:
p(2).
p(3).
p(5).
q(3).
q(4).
q(5).
s(X):- p(X),q(X).
soluciones:- s(X), write(X), nl, fail, soluciones.