Lógica para Las Ciencias Informáticas: Resolución en P
Lógica para Las Ciencias Informáticas: Resolución en P
Lógica para Las Ciencias Informáticas: Resolución en P
2013
Licenciatura en Sistemas
Resolventes
1
Lógica para las Ciencias Informáticas
2013
Resolventes
Definición de Resolvente
Def: Una resolvente de dos cláusulas arbitrarias C1 y C2 es
una tercera cláusula C3 obtenida de acuerdo al
siguiente procedimiento:
1. Si w1, w2,..., wm son las variables en C2 y la variable de
mayor índice que aparece en C1 C2 de acuerdo al
orden lexicográfico es xk, sea la siguiente
substitución:
[(xk+1,w1), (xk+2,w2), ..., (xk+m,wm) ]
Esta substitución es un renombre de variables de
manera tal que luego de aplicarla a C2 ninguna de las
variables que aparecen en C2 aparece en C1.
Este proceso se describe como separación estándar de
variables.
4
2
Lógica para las Ciencias Informáticas
2013
Resolventes (Ejemplo)
Sean C1 = { p(x1), p(f(x2)), p(f(a)), q(x2) } y
C2 = {p(x1), p(x2), r(x3) } tenemos:
= [(xk+1,x1), (xk+2,x2), (xk+3,x3) ] dado que la variable de mayor índice en
C1 C2 es x3, con k = 3 obtenemos
= [(x4,x1), (x5,x2), (x6,x3) ] y C2 = {p(x4), p(x5), r(x6) }
L ={ p(x1), p(f(x2)), p(f(a)) } C1 y M ={p(x4), p(x5) } C2
L M = {p(x1), p(f(x2)), p(f(a)), p(x4), p(x5) }
es unificable por:
= [(f(a), x1), (f(a), x4), (f(a), x5), (a, x2)]
y aplicando la definición
(C1 – { p(x1), p(f(x2)), p(f(a)) }) (C2 – {p(x1), p(x2) }) =
{ q(x2) } { r(x3) } = { q(x2) } { r(x6) } =
{ q(a) } { r(x6) } = { q(a), r(x6) } que es una resolvente.
6
3
Lógica para las Ciencias Informáticas
2013
Resolventes
Obs: Cualquier par de cláusulas tiene a lo sumo un número
finito de resolventes dado que existe solo un número
finito de pares L y M. Para cada uno de esos pares existe
a lo sumo una substitución más general que los unifica.
Una deducción por resolución se define como en el
Cálculo Proposicional reemplazando el término
resolvente fija por resolvente.
0(S) = S
n+1(S) = (n (S))
7
Resolución (Ejemplos)
Por ejemplo:
q(x) r(y)
Con substitución
4
Lógica para las Ciencias Informáticas
2013
Resolución (Ejemplos)
Por ejemplo:
q(a) r(y)
Resolución (Ejemplos)
Por ejemplo:
q(f(a)) r(y)
10
5
Lógica para las Ciencias Informáticas
2013
Refutación (Ejemplo)
1. p(x, e, x)
2. p(y, z, v) p(y, v, w) p(e, z, w)
3. p(a, f(u, v), e)
4. p(e, f(f(b, c), a), a)
11
Refutación (Ejemplo)
1. p(x,e,x) 2. p(y, z, v) p(y,v,w) p(e,z,w)
3. p(a,f(u,v),e)
4. p(e, f(f(b,c),a), a)
7. [ 4, 6 con f(b,c)/u, a/ v ]
12
6
Lógica para las Ciencias Informáticas
2013
Ejemplo (Programa)
1. q(b, y).
2. q(x, e).
3. r(a, f(u, v)).
4. p(x, z, y) r(y, z), q(y, x).
?- p(e, f(b, c), a). (consulta)
Usando “” para unificación, el proceso es el siguiente:
Para responder a la consulta por p(e, f(b, c), a) el
intérprete busca una regla en el programa cuya
cabeza sea unificable con ella.
La primera condición es que involucren el mismo
predicado.
13
Ejemplo (Programa)
1. q(b, y).
2. q(x, e).
3. r(a, f(u, v)).
4. p(x, z, y) r(y, z), q(y, x).
?- p(e, f(b, c), a). (consulta)
Es decir, la regla 4 es la única y debemos verificar si
p(x, z, y) p(e, f(b, c), a) (el “” es unificación)
esto es, tienen el mismo predicado y además:
x e, z f(b, c), y a
La primera unificación es posible con e/x, la
segunda con f(b, c)/z y la tercera con a/y.
14
7
Lógica para las Ciencias Informáticas
2013
Ejemplo (Programa)
1. q(b, y).
2. q(x, e).
3. r(a, f(u, v)).
4. p(x, z, y) r(y, z), q(y, x).
?- p(e, f(b, c), a). (consulta)
Al realizar las substituciones, e/x, f(b, c)/z, a/y en 4
obtenemos la regla
p(e, f(b, c), a) r(a, f(b, c)), q(a, e).
Ejemplo (Programa)
1. q(b, y).
2. q(x, e).
3. r(a, f(u, v)).
4. p(x, z, y) r(y, z), q(y, x).
?- p(e, f(b, c), a). (consulta)
Para responder a la consulta r(a, f(b, c)) el intérprete
encuentra la regla 3 : r(a, f(u, v))
Para que la respuesta sea afirmativa debe ser posible
r(a, f(b, c)) r(a, f(u, v)),
es decir a a, f(b, c) f(u, v), además debe
poderse b u, c v, lo que es claramente posible.
Resta responder la consulta q(a, e). 16
8
Lógica para las Ciencias Informáticas
2013
Ejemplo (Programa)
1. q(b, y).
2. q(x, e).
3. r(a, f(u, v)).
4. p(x, z, y) r(y, z), q(y, x).
?- p(e, f(b, c), a). (consulta)
Para responder a la consulta q(a, e) el intérprete primero
localiza la regla 1, q(b, y) con el mismo predicado pero
como b a resulta que q(a, e) q(b, y) y el intérprete
trata de localizar otra regla.
Localiza la regla 2: q(x, e) y prueba si q(a, e) q(x, e)
Luego debemos verificar si x a, e e.
Esto es posible y la consulta inicial tiene éxito.
17
Resolución
DEF: Una derivación por resolución de una cláusula C a
partir de un conjunto de cláusulas S (denominadas cláusulas
input) es una secuencia de cláusulas C1, C2, ..., Cn tal que:
1. Cn es C
2. Para cada i, 1 i n, Ci es o bien
a. un elemento de S, o bien
b. una resolvente entre Cm y Ck, donde m, k i
La derivación es finita o infinita de acuerdo a la longitud de
la secuencia.
18
9
Lógica para las Ciencias Informáticas
2013
Resolución
Por ejemplo:
19
Resolución
20
10
Lógica para las Ciencias Informáticas
2013
Resolución
Obs: Resulta claro a partir de la definición de
que para cualquier S vale que S (S)
De allí resulta que la aplicación reiterada y
sucesiva del operador produce una secuencia
creciente, en el sentido de la inclusión de
conjuntos:
S = 0(S) 1(S) 2(S) ... n(S)
Teo: Dado un conjunto finito de cláusulas S,
existirá una refutación S si y solo si
(S) para algún n.
n
21
Universo de Herbrand
22
11
Lógica para las Ciencias Informáticas
2013
23
Base de Herbrand
24
12
Lógica para las Ciencias Informáticas
2013
25
26
13
Lógica para las Ciencias Informáticas
2013
Saturación
27
Saturación (ejemplos)
28
14
Lógica para las Ciencias Informáticas
2013
Saturación (ejemplos)
29
Expansión de Herbrand
30
15
Lógica para las Ciencias Informáticas
2013
Teorema de Herbrand
Teorema (Herbrand): Sea S un conjunto finito de
cláusulas, y HS su universo de Herbrand entonces S es
insatisfacible si y solo si algún subconjunto finito de
HS((S)) es inconsistente.
31
Procedimiento de Refutación
32
16
Lógica para las Ciencias Informáticas
2013
Procedimiento de Refutación
33
Procedimiento de Refutación
34
17
Lógica para las Ciencias Informáticas
2013
Procedimiento de Refutación
Observando la generación de las cláusulas resolventes
vemos que existe ineficiencia, sin embargo es posible
encontrar una refutación más directa.
1. p(a) 1. p(a)
2. p(x) q(x) 2. p(x) q(x)
3. p(x) r(f(x)) 3. p(x) r(f(x))
4. q(a) r(f(a)) 4. q(a) r(f(a))
------------------ ------------------
5. q(a) (de 1 y 2) 5. q(a) (de 1 y 2)
6. p(a) q(a) (de 3 y 4) 6. r(f(a)) (de 1 y 3)
------------------ ------------------
7. p(a) (de 5 y 6) 7. q(a) (de 4 y 6)
------------------ ------------------
8. (de 1 y 7) 8. (de 5 y 7) 35
Procedimiento de Refutación
36
18