Resolución general en lógica de primer orden

Anuncio
Repaso de la clase pasada
Unificación
Resolución general
Resolución general en lógica de primer orden
Eduardo Bonelli
Departamento de Computación
FCEyN
UBA
4 de octubre de 2005
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Teorema de Skolem-Herbrand-Gödel
Cláusulas ground y resolución ground
Procedimiento para testear validez
La clase pasada
Repasamos lógica de primer orden
Introdujimos un procedimiento para probar la validez de una
sentencia que se basa en el siguiente teorema
Teorema de Skolem-Herbrand-Gödel
Sea L un lenguaje de primer orden y A una sentencia. Si B es la
forma de Skolem de A, entonces: A es insatisfactible sii alguna
instancia compuesta de B es insatisfactible.
Procedimiento para testear validez de una sentencia A:
1
2
3
tomamos su negación ¬A
obtenemos la forma de Skolem B de ¬A
checkeamos, para cada instancia compuesta de B, si es
insatisfactible
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Teorema de Skolem-Herbrand-Gödel
Cláusulas ground y resolución ground
Procedimiento para testear validez
Resolución ground
Procedimiento para testear validez de una sentencia A:
1
2
3
tomamos su negación ¬A
obtenemos la forma de Skolem B de ¬A
checkeamos, para cada instancia compuesta de B, si es
insatisfactible
Para el paso 3 usamos el método de resolución ground
El método de resolución ground consiste en aplicar la regla de
resolución de la lógica proposicional a cláusulas ground
Recordemos la definición de cláusula ground (para ello
primero debemos recordar la definición de forma cláusal)
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Teorema de Skolem-Herbrand-Gödel
Cláusulas ground y resolución ground
Procedimiento para testear validez
Cláusulas
Forma clausal
Conjunción de sentencias prenexas de la forma ∀x1 . . . ∀xm C donde
1
C es una disyunción de literales y
2
los conjuntos {x1 , . . . , xm } de variables ligadas son disjuntos
para todo par distinto de cláusulas.
Cada ∀x1 . . . ∀xm C se llama cláusula
La forma clausal
∀x11 . . . ∀x1m1 C1 ∧ . . . ∧ ∀xk1 . . . ∀xkmk Ck
se escribe {C10 , . . . , Ck0 } donde Ci0 resulta de reemplazar la
disyunción de literales Ci por el conjunto de literales asociado
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Teorema de Skolem-Herbrand-Gödel
Cláusulas ground y resolución ground
Procedimiento para testear validez
Cláusulas ground
Cláusulas ground
Es una cláusula que no tiene cuantificadores ni variables
Volvamos al procedimiento:
Procedimiento para testear validez de una sentencia A:
1
2
3
tomamos su negación ¬A
obtenemos la forma de Skolem B de ¬A
checkeamos, para cada instancia compuesta de B, si es
insatisfactible
Dijimos que para el paso 3 usamos el método de resolución
ground
Vamos a modificar el procedimiento para reflejar esto...
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Teorema de Skolem-Herbrand-Gödel
Cláusulas ground y resolución ground
Procedimiento para testear validez
Validez a través de resolución ground
Procedimiento para testear la validez de A
1
tomamos su negación ¬A
2
obtenemos la forma de Skolem B de ¬A
3
pasamos B a forma clausual B 0
4
checkeamos cada instancia compuesta de B 0 (cada una de las
cuales es una cláusula ground) para ver si es insatisfactible
usando resolución ground
Este procedimiento es correcto y completo
No es un algoritmo: si B 0 es satisfactible puede que el
procedimiento no se detenga
Es de esperarse en función al Teorema de Church
(indecidibilidad de validez en lógica de primer orden)
El cuello de botella: generación de las instancias compuestas
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Teorema de Skolem-Herbrand-Gödel
Cláusulas ground y resolución ground
Procedimiento para testear validez
Validez a través de resolución ground
Procedimiento para testear la validez de A
1
tomamos su negación ¬A
2
obtenemos la forma de Skolem B de ¬A
3
pasamos B a forma clausual B 0
4
checkeamos cada instancia compuesta de B 0 (cada una de las
cuales es una cláusula ground) para ver si es insatisfactible
usando resolución ground
Este procedimiento es correcto y completo
No es un algoritmo: si B 0 es satisfactible puede que el
procedimiento no se detenga
Es de esperarse en función al Teorema de Church
(indecidibilidad de validez en lógica de primer orden)
El cuello de botella: generación de las instancias compuestas
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Teorema de Skolem-Herbrand-Gödel
Cláusulas ground y resolución ground
Procedimiento para testear validez
Validez a través de resolución ground
Procedimiento para testear la validez de A
1
tomamos su negación ¬A
2
obtenemos la forma de Skolem B de ¬A
3
pasamos B a forma clausual B 0
4
checkeamos cada instancia compuesta de B 0 (cada una de las
cuales es una cláusula ground) para ver si es insatisfactible
usando resolución ground
Este procedimiento es correcto y completo
No es un algoritmo: si B 0 es satisfactible puede que el
procedimiento no se detenga
Es de esperarse en función al Teorema de Church
(indecidibilidad de validez en lógica de primer orden)
El cuello de botella: generación de las instancias compuestas
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Teorema de Skolem-Herbrand-Gödel
Cláusulas ground y resolución ground
Procedimiento para testear validez
Validez a través de resolución ground
Procedimiento para testear la validez de A
1
tomamos su negación ¬A
2
obtenemos la forma de Skolem B de ¬A
3
pasamos B a forma clausual B 0
4
checkeamos cada instancia compuesta de B 0 (cada una de las
cuales es una cláusula ground) para ver si es insatisfactible
usando resolución ground
Este procedimiento es correcto y completo
No es un algoritmo: si B 0 es satisfactible puede que el
procedimiento no se detenga
Es de esperarse en función al Teorema de Church
(indecidibilidad de validez en lógica de primer orden)
El cuello de botella: generación de las instancias compuestas
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Teorema de Skolem-Herbrand-Gödel
Cláusulas ground y resolución ground
Procedimiento para testear validez
Clase de hoy
Versión del procedimiento anterior en el que, grosso modo, las
cláusulas ground se generan en simultáneo con la aplicación
de la regla de resolución
En el método de resolución ground, primero hay que
disponer de las cláusulas ground antes de dispararlo
El método de resolución general se dispara directamente
sobre la forma clausal (que no necesariamente son ground)
Veamos cómo quedarı́a el procedimiento que apela al método
de resolución general...
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Teorema de Skolem-Herbrand-Gödel
Cláusulas ground y resolución ground
Procedimiento para testear validez
Clase de hoy
Procedimiento anterior para testear la validez de A
1
tomamos su negación ¬A
2
obtenemos la forma de Skolem B de ¬A
3
pasamos B a forma clausual B 0
4
checkeamos cada instancia compuesta de B 0 (que ahora es
una cláusula ground) para ver si es insatisfactible usando
resolución ground
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Teorema de Skolem-Herbrand-Gödel
Cláusulas ground y resolución ground
Procedimiento para testear validez
Clase de hoy
Procedimiento nuevo para testear la validez de A
1
tomamos su negación ¬A
2
obtenemos la forma de Skolem B de ¬A
3
pasamos B a forma clausual B 0
4
5
checkeamos cada instancia compuesta de B 0 (que ahora es
una cláusula ground) para ver si es insatisfactible usando
resolución ground
checkeamos B 0 para ver si es insatisfactible usando resolución
general
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Motivación
Sustitución
Algoritmo de unificación
Motivación
Dadas las cláusulas
C1 = {¬P(z1 , a), ¬P(z1 , x), ¬P(x, z1 )}
C2 = {P(z2 , f (z2 )), P(z2 , a)}
Si sustituı́mos a por z1 , a por x y a por z2 , podemos generar dos
cláusulas ground
G1 = {¬P(a, a)}
G2 = {P(a, f (a)), P(a, a)}
cuyo resolvente es
{P(a, f (a))}
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Motivación
Sustitución
Algoritmo de unificación
Motivación
Dadas las cláusulas
C1 = {¬P(z1 , a), ¬P(z1 , x), ¬P(x, z1 )}
C2 = {P(z2 , f (z2 )), P(z2 , a)}
La sustitución antedicha resulta de intentar “igualar” P(z1 , a)
con P(z1 , a).
El algoritmo que se encarga de intentar igualar fórmulas
atómicas se llama unificación
El resultado de ejecutar el algoritmo de unificación sobre un
conjunto de fórmulas atómicas {A1 , . . . , An } puede ser
una sustitución σ tal que σ(A1 ) = . . . = σ(An )
falla, si no existe tal σ
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Motivación
Sustitución
Algoritmo de unificación
Sustitución
Sustitución
Sea V un conjunto de variables y L un lenguaje de primer orden.
Una sustitución σ es una función de L en el conjunto de
L-términos tal que {x | σ(x) 6= x} es finito.
El conjunto {x | σ(x) 6= x} se llama soporte de σ
El soporte representa las variables que σ “afecta”
Usamos la notación {t1 /x1 , . . . , tn /xn } para la sustitución con
soporte {x1 , . . . , xn } definida de la manera obvia
La sustitución cuyo soporte es ∅ es la sustitución identidad
(Id)
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Motivación
Sustitución
Algoritmo de unificación
Aplicación de sustitución a átomos y términos
Toda sustitución σ se extiende (de manera única) a una función
que sustituye dentro de términos, átomos y cláusulas, que satisface:
σ(c)
σ(x)
σ(f (t1 , . . . , tn ))
= c
= σ(x)
= f (σ(t1 ), . . . , σ(tn )
σ(P(t1 , . . . , tn )) = P(σ(t1 ), . . . , σ(tn ))
σ({L1 , . . . , Ln }) = {σ(L1 ), . . . , σ(Ln )}
NB: por abuso de notación usamos σ en lugar de σ
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Motivación
Sustitución
Algoritmo de unificación
Composición de sustituciones
Composición de sustituciones
Si ρ y σ son sustituciones, entonces su composición, denotada
ρ ◦ σ, es la sustitución que se comporta como sigue:
(ρ ◦ σ)(t) = ρ(σ(t))
Ejemplo
Sea σ = {j(x)/u, 0/y } y ρ = {h(z)/x, 0/y }, entonces
ρ ◦ σ = {j(h(z))/u, h(z)/x, 0/y }
Decimos que σ = τ si tienen el mismo soporte y σ(x) = τ (x)
para todo x en el soporte de σ
σ ◦ Id = Id ◦ σ = σ
σ ◦ (ρ ◦ τ ) = (σ ◦ ρ) ◦ τ
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Motivación
Sustitución
Algoritmo de unificación
Preorden sobre sustituciones
Preorden sobre sustituciones
Una sustitución σ es más general que ρ si existe τ tal que
ρ = τ ◦ σ.
La idea es que σ es más general que ρ porque ρ se obtiene
instanciando σ.
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Motivación
Sustitución
Algoritmo de unificación
Unificador
Unificador
Una sustitución σ es un unificador un conjunto de términos
{t1 , . . . , tn } si σ(t1 ) = . . . = σ(tn )
La sust. {3/x, g (3)/y } unifica {g (g (x)), g (y )}
{f (u)/x, g (f (u))/y } también!
{g (x)/y } también!
{f (x), g (y )} no son unificables
{f (x), x} no son unificables
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Motivación
Sustitución
Algoritmo de unificación
Unificador más general
Unificador más general (MGU)
Una sustitución σ es un MGU de un conjunto de términos
{t1 , . . . , tn } si
1
σ es un unificador de {t1 , . . . , tn }
2
σ es más general que cualquier otro unificador de {t1 , . . . , tn }
Ejemplos
La sust. {3/x, g (3)/y } unifica {g (g (x)), g (y )} pero no es un
MGU pues es instancia de el unificador {g (x)/y }
{g (x)/y } es un MGU
Si {t1 , . . . , tn } es unificable, existe un MGU y además es único
salvo renombre de variables
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Motivación
Sustitución
Algoritmo de unificación
Algoritmo de unificación
Algoritmo de unificación
Entrada: Par ordenado de términos ht1 , t2 i
Salida:
1
2
MGU σ de ht1 , t2 i, si ht1 , t2 i es unificable
falla, en caso contrario
Si vemos a los sı́mbolos de predicado como sı́mbolos de
función basta tomar términos como entrada
Para unificar {t1 , . . . , tn } con n > 2,
1
2
3
obtener MGU σ de (t1 , t2 )
luego computar recursivamente el MGU τ de
{σ(t2 ), . . . , σ(tn )}
El MGU de {t1 , . . . , tn } es τ ◦ σ
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Motivación
Sustitución
Algoritmo de unificación
Algoritmo de Martelli-Montanari
Vamos a presentar un algoritmo no-determinı́stico
Consiste en reglas de simplificación que simplifican conjuntos
de pares de términos a unificar (goals)
G0 7→ G1 7→ . . . 7→ Gn
Las secuencias que terminan en el goal vacı́o son exitosas;
aquellas que terminan en falla son fallidas
Algunas pasos de simplificación llevan un sustitución que
representa una solución parcial al problema
G0 7→ G1 7→σ1 G2 7→ . . . 7→σk Gn
Si la secuencia es exitosa el MGU es σk ◦ . . . ◦ σ1
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Motivación
Sustitución
Algoritmo de unificación
Reglas del algoritmo de Martelli-Montanari
1
Descomposicion
{hf (s1 , . . . , sn ), f (t1 , . . . , tn )i}∪G 7→ {hs1 , t1 i, . . . , hsn , tn i}∪G
2
Eliminación de par trivial
{hx, xi} ∪ G 7→ G
3
Swap: si t no es una variable
{ht, xi} ∪ G 7→ {hx, ti} ∪ G
4
Eliminación de variable: si x ∈
/ FV (t)
{hx, ti} ∪ G 7→t/x G [t/x]
5
Falla: si f 6= g
{hf (s1 , . . . , sn ), g (t1 , . . . , tm )i} ∪ G 7→ falla
6
Occur check: si x 6= t y x ∈ FV (t)
{hx, ti} ∪ G 7→ falla
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Motivación
Sustitución
Algoritmo de unificación
Ejemplos
Ejemplo de secuencia exitosa
7→1
7→3
7→4g (x)/z
7→1
7→4f (y ,y )/x
7→4g (f (y ,y ))/u
{hf (g (x), h(x, u)), f (z, h(f (y , y ), z))i}
{hg (x), zi, hh(x, u), h(f (y , y ), z)i}
{hz, g (x)i, hh(x, u), h(f (y , y ), z)i}
{hh(x, u), h(f (y , y ), g (x))i}
{hx, f (y , y )i, hu, g (x)i}
{hu, g (f (y , y ))i}
∅
El MGU es {g (f (y , y ))/u} ◦ {f (y , y )/x} ◦ {g (x)/z} =
{g (f (y , y ))/z, f (y , y )/x, g (f (y , y ))/u}
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Motivación
Sustitución
Algoritmo de unificación
Ejemplos
Ejemplo de secuencia fallida
7 1
→
7→4y /x
7→6
{hf (x, y , x), f (y , g (x), x)i}
{hx, y i, hy , g (x)i, hx, xi}
{hy , g (y )i, hy , y i}
falla
El MGU es {g (f (y , y ))/u} ◦ {f (y , y )/x} ◦ {g (x)/z} =
{g (f (y , y ))/z, f (y , y )/x, g (f (y , y ))/u}
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Motivación
Sustitución
Algoritmo de unificación
Propiedades del algoritmo
Teorema
El algoritmo de Martelli-Montanari siempre termina
Sea G un conjunto de pares G
si G tiene un unificador, el algoritmo termina exitosamente y
retorna un MGU
si G no tiene unificador, el algoritmo termina con falla
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Método de resolución general
Método de resolución general
Dado un conjunto de cláusulas S, se aplica repetidamente la
regla de resolución general
Cada aplicación de la regla de resolución da lugar a un paso
de resolución general
El objetivo es obtener una refutación (conjunto de cláusulas
que contengan a la cláusula vacı́a) a partir de S a través de
pasos de resolución (en cuyo caso decimos que “S tiene una
refutación por resolución general”)
Cada paso de resolución general preserva insatisfactibilidad +
las refutaciones son trivialmente insatisfactibles = refutación
por resolución general de S implica que S es insatisfactible
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Método de resolución general
Regla de resolución (general)
Regla de resolución (general)
{B1 , . . . , Bk , A1 , . . . , Am }
{¬D1 , . . . , ¬Dl , C1 , . . . , Cn }
σ({A1 , . . . , Am , C1 , . . . , Cn })
donde σ es el MGU de {B1 , . . . , Bk , D1 , . . . , Dl }.
Asumimos que las cláusulas {B1 , . . . , Bk , A1 , . . . , Am } y
{¬D1 , . . . , ¬Dl , C1 , . . . , Cn } no tienen variables en común; en
caso contrario se renombran las variables
Observar que σ(B1 ) = . . . = σ(Bk ) = σ(D1 ) = . . . = σ(Dl )
La cláusula σ({A1 , . . . , Am , C1 , . . . , Cn }) se llama resolvente
(de {B1 , . . . , Bk , A1 , . . . , Am } y {¬D1 , . . . , ¬Dl , C1 , . . . , Cn })
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Método de resolución general
C1 = {¬P(z1 , a), ¬P(z1 , x), ¬P(x, z1 )}
C2 = {P(z2 , f (z2 )), P(z2 , a)}
C3 = {P(f (z3 ), z3 ), P(z3 , a)}
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Método de resolución general
Presentación alternativa
Binary resolution+factoring
Eduardo Bonelli
Resolución general en lógica de primer orden
Repaso de la clase pasada
Unificación
Resolución general
Método de resolución general
Correctitud y completitud de resolución general
Teorema (Correctitud)
Si un conjunto de cláusulas S tiene una refutación por resolución
general, entonces S es insatisfactible
Teorema (Completitud)
Si un conjunto finito de cláusulas S es insatisfactible, tiene una
refutación por resolución general
Eduardo Bonelli
Resolución general en lógica de primer orden
Descargar