Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Curso 2021/2022
3 Unificación de predicados
4 Resolución.
Contenidos
3 Unificación de predicados
4 Resolución.
Forma Clausulada
L1 ∨ L2 ∨ · · · ∨ Ln
donde cada Li es una fórmula atómica sola o negada en la que todas las variables
están universalmente cuantificadas.
En otras palabras, una cláusula en L1 es una disyunción de predicados, positivos o
negados.
Teorema:
Toda fórmula de la lógica de predicados se puede escribir en forma clausulada.
(∀x, y , P(x, y )) ∧ (∃x, z / Q(x, z)) = (∀x, y , P(x, y )) ∧ (∃t, z / Q(t, z))
(∀x, y , P(x, y )) ∧ (∀x, z / Q(x, z)) = (∀x, y , P(x, y )) ∧ (∀t, z / Q(t, z))
7) Redenominación de las variables para que cada cláusula tenga las suyas
propias
(P(x, y ) ∨ Q 0 (x, a)) ∧ (P 0 (x, y ) ∨ R(a)) = (P(x, y ) ∨ Q 0 (x, a)) ∧ (P 0 (z, t) ∨ R(a))
1) Eliminación de condicionales
2) Eliminación de negaciones
6) Distributiva de ∨ respecto a ∧
7)Redenominación de variables:
Ası́ pues, la expresión dada se expresa como conjunción de tres cláusulas C1 ∧ C2 ∧ C3 con
Contenidos
3 Unificación de predicados
4 Resolución.
Sustitución
s = {t1 | x1 , t2 | x2 , . . . , tn | xn }
Operación de Sustitución
Sea L una fórmula atómica que contiene las variables x1 , x2 , . . . , xn (no necesaria-
mente todas, quizás ninguna) y s = {t1 | x1 , t2 | x2 , . . . , tn | xn } una sustitución.
Operación de Sustitución
Operación de Sustitución
Unificación de predicados
Contenidos
3 Unificación de predicados
4 Resolución.
Unificación de Predicados
Diremos que dos literales L1 y L2 son unificables si existe una sustitución s verifi-
cando que L1 s = L2 s
Observaciones:
Decimos que el unificador es mı́nimo si deja libre el mayor número de
variables posibles. Por ejemplo, dados L1 = P(x) y L2 = P(y ), tanto
s1 = {x | y }, s2 = {y | x} como s3 = {a | x, a | y } son unificadores:
s1 y s2 son mı́nimos y s3 no lo es.
La definición anterior se generaliza fácilmente a una cantidad finita de
literales L1 , L2 , . . . , Ln .
Para que dos o más literales sean unificables es condición necesaria que
todos tengan el mismo predicado y el mismo signo.
Unificación de predicados
(vii) L1 = P(f (x), x), L2 = P(f (b), a) NO, necesitarı́amos b|x y a|x
Contenidos
3 Unificación de predicados
4 Resolución.
Resolución.
Resolución en L0 (Recordatorio)
C1 = p ∨ q, C2 = p 0 ∨ r
obtenemos la resolvente
R =q∨r
A partir de las cláusulas de L0
C1 = p ∨ q1 ∨ · · · ∨ qm , C2 = p 0 ∨ r1 ∨ · · · ∨ rn ,
obtenemos la resolvente
R = q1 ∨ · · · ∨ qm ∨ r1 ∨ · · · ∨ rn
Resolución en L1
Sean
C1 = L1 ∨ L2 ∨ · · · ∨ Lm , C2 = M1 ∨ M2 ∨ · · · ∨ Mn
cláusulas (con variables independientes) de una expresión en forma clausulada.
Supongamos que los literales L1 , L2 , . . . , Lj , M10 , M20 , . . . , Mk0 son unificables me-
diante un unificador mı́nimo s, es decir,
R = (Lj+1 ∨ · · · ∨ Lm )s ∨ (Mk+1 ∨ · · · ∨ Mn )s
Resolución.
Resolución. Ejemplo
Ejemplo: Hallar todas las resolventes posibles a partir de las cláusulas
2 L1 y M20 son unificables mediante s2 = {u|x, b|z}, pues L1 s2 = P(a, u, f (b)) = M20 s2
Contenidos
3 Unificación de predicados
4 Resolución.
SLD-Resolución
A = ∃x1 , x2 , . . . , xs , / A1 ∧ A2 ∧ · · · ∧ An
La negación de A es el objetivo
SLD-Resolución
Observar que cada cláusula de P tiene un único literal positivo, mientras que el
objetivo G es una cláusula de literales negativos.
El proceso que se sigue para deducir la cláusula vacı́a de P + {G } es el siguiente:
Buscamos un literal del objetivo unificable con la cabeza de alguna cláusula
del programa, en cuyo caso aplicamos resolución a esas dos cláusulas para
obtener otra con todos los literales negados, que es por tanto otro objetivo.
Repetimos el punto anterior para el nuevo objetivo hasta deducir la cláusula
vacı́a, si es posible. En caso contrario, A no se deduce de P.
Si A se deduce de P, los unificadores mı́nimos aportan los valores de las
variables x1 , x2 , . . . , xs para los que se satisface.
SLD-Resolución. Ejemplo
p 0 (x)
G =←− p(x)
p(z) ∨ p 0 (y ) ∨ r 0 (z)
C1 = p(z) ←− p(y ), r (z)
P +G =
C2 = r (a) ←− r (a)
C3 = p(f (b)) ←− p(f (b))
SLD-Resolución
Ejemplo
p 0 (x)
G =←− p(x)
p(z) ∨ p 0 (y ) ∨ r 0 (z)
C1 = p(z) ←− p(y ), r (z)
P +G =
C2 = r (a) ←− r (a)
C3 = p(f (b)) ←− p(f (b))
s1 = {z|x} : G ∧ C1 ⇒ G1 = p 0 (y ) ∨ r 0 (z)
p 0 (y ) ∨ r 0 (z)
G1 =←− p(y ), r (z)
C2 = r (a) ←− r (a)
C3 = p(f (b)) ←− p(f (b))
s2 = {a|z} : G1 ∧ C2 ⇒ G2 = p 0 (y )
p 0 (y )
G2 =←− p(y )
C3 = p(f (b)) ←− p(f (b))
{f (b)|y } : G2 ∧ C3 ⇒ G3 =
SLD-Resolución
Ejemplo
p 0 (x)
G =←− p(x)
p(z) ∨ p 0 (y ) ∨ r 0 (z)
C1 = p(z) ←− p(y ), r (z)
P +G =
C2 = r (a) ←− r (a)
C3 = p(f (b)) ←− p(f (b))
{f (b)|x} : G ∧ C3 ⇒
de donde se sigue que A es consecuencia lógica del programa P para el valor x = f (b).
Corrección y Completitud
Bibliografı́a Tema 4
J.W. Lloyd.
Foundations of Logic Programming.
Ed. Springer-Verlag, 1987