1. Resolución en lógica proposicional

Anuncio
1.
Resolución en lógica proposicional
1.1.
Introducción
1.1.1.
Pseudo-motivación
¿Si tengo una fórmula de proposicional, puedo probar con fuerza bruta todas
las valuaciones a ver si es satisfactible?
Si
¿Se conocen métodos mas eficientes?
No
¿Por qué aprender resolución en lógica proposicional?
Da un método efectivo que no requiere probar todas las posibilidades
siempre, aunque en peor caso asi sea.
Ayuda a desarrollar/entender resolución para primer órden.
Sirve para resolver ejercicios de la práctica y de los parciales.
1.1.2.
Recapitulando
Para ver si A es tautologı́a:
1. Calculamos la forma normal conjuntiva de ¬A.
2. Aplicamos el método de resolución.
3. Si hallamos una refutación:
¬A es insatisfactible,
Y, por lo tanto, A es una tautologı́a.
4. Si no hallamos ninguna refutación:
¬A es satisfactible,
Y, por lo tanto, A no es una tautologı́a.
*Esta pantalla no es un robo, es una cita, hay una gran diferencia.
1.2.
Forma normal conjuntiva
1.2.1.
Forma normal conjuntiva (FNC)
Toda fórmula de lógica proposicional puede escribirse en forma normal conjuntiva.
Un literal es una variable (x) o la negación de una variable (¬x).
Una fórmula está en FNC si es una conjunción de disyunciones de literales:
(L11 ∨ L12 ∨ ... ∨ L1k1 ) ∧ (L21 ∨ ... ∨ L2k2 ) ∧ ... ∧ (Ln1 ∨ ... ∨ Lnkn )
1
1.2.2.
Pasar una fórmula a FNC
Ejemplo: X ⇒ (¬(Y ∨ ¬X) ∧ ¬X)
1. Eliminar los operadores ⇒, utilizando la equivalencia:
P ⇒ Q ≡ ¬P ∨ Q.
2. “Meter para adentro” los ¬ hasta que queden al lado de un literal, utilizando las equivalencias:
¬¬P ≡ P
¬(P ∧ Q) ≡ ¬P ∨ ¬Q
¬(P ∨ Q) ≡ ¬P ∧ ¬Q
3. Distribuir las disyunciones (∨) que tengan conjunciones (∧) dentro.
1.2.3.
Notación de conjuntos
Ejemplo:
(¬X ∨ ¬Y ) ∧ (¬X ∨ X) ∧ (¬X ∨ ¬Y )
Como conjuntos:
{{¬X, Y }, {¬X, X}, {¬X, Y }}
{{¬X, Y }, {¬X, X}}
1.3.
1.3.1.
Regla de resolución
Regla de resolución
{A1 , ..., Am , Q}
{B1 , ..., Bn , ¬Q}
{A1 , ..., Am , B1 , ..., Bn }
{A1 , ..., Am , B1 , ..., Bn } es el resolvente de {A1 , ..., Am , Q} y
{B1 , ..., Bn , ¬Q}.
1.3.2.
Resolviendo el ejemplo
{A1 , ..., Am , Q}
{B1 , ..., Bn , ¬Q}
{A1 , ..., Am , B1 , ..., Bn }
2
{{¬X, Y }, {¬X, X}}
Aplicando la regla con: n = m = 1 A1 = Y B1 = ¬X Q = X.
Resolvente: {Y, ¬X}.
Como el resolvente ya está en el conjunto, no se agrega nada.
Es la única pareja de cláusulas con las que se puede usar la regla y es la única
forma de utilizarla, ergo, no hay forma de avanzar hasta la cláusula vacı́a.
1.3.3.
¿Qué demostramos con esto?
{{¬X, Y }, {¬X, X}}
Si no hallamos ninguna refutación: ¬A es satisfactible, y, por lo
tanto, A no es una tautologı́a.
¡¡¡Como demostramos que X ⇒ (¬(Y ∨ ¬X) ∧ ¬X) es satisfactible, el que
no es tautologı́a es ¬(X ⇒ (¬(Y ∨ ¬X) ∧ ¬X))!!!
1.4.
Ejemplo completo
1.4.1.
Ejercicio 2, segundo parcial, 1er cuatrimestre de 2006
Demostrar que ¬r se deduce del siguiente conjunto de fórmulas proposicionales utilizando el método de resolución para la lógica proposicional.
r ⇒ (p ∨ q ∨ s)
q ⇒ ¬r
s⇒p
p ⇒ ¬r
1.4.2.
Interpretación del enunciado
Demostrar que:
((r ⇒ (p ∨ q ∨ s)) ∧ (q ⇒ ¬r) ∧ (s ⇒ p) ∧ (p ⇒ ¬r)) ⇒ ¬r
es tautologı́a.
1.4.3.
Solución del ejercicio
Paso 1: Pasar la negación de la fórmula a FNC.
¬(((r ⇒ (p ∨ q ∨ s)) ∧ (q ⇒ ¬r) ∧ (s ⇒ p) ∧ (p ⇒ ¬r)) ⇒ ¬r)
¬(¬((¬r ∨ (p ∨ q ∨ s)) ∧ (¬q ∨ ¬r) ∧ (¬s ∨ p) ∧ (¬p ∨ ¬r)) ∨ ¬r)
¬¬((¬r ∨ p ∨ q ∨ s) ∧ (¬q ∨ ¬r) ∧ (¬s ∨ p) ∧ (¬p ∨ ¬r)) ∧ ¬¬r
(¬r ∨ p ∨ q ∨ s) ∧ (¬q ∨ ¬r) ∧ (¬s ∨ p) ∧ (¬p ∨ ¬r) ∧ r
3
1.4.4.
Solución del ejercicio
Paso 1b: Notación de conjuntos.
(¬r ∨ p ∨ q ∨ s) ∧ (¬q ∨ ¬r) ∧ (¬s ∨ p) ∧ (¬p ∨ ¬r) ∧ r
{{¬r, p, q, s}, {¬q, ¬r}, {¬s, p}, {¬p, ¬r}, {r}}
1.4.5.
Solución del ejercicio
Paso 2: Aplicar sucesivamente regla de resolución.
1. {¬r, p, q, s}
2. {¬q, ¬r}
3. {¬s, p}
4. {¬p, ¬r}
5. {r}
6. De (1) y (2) (Q = q): {¬r, p, s}
7. De (3) y (6) (Q = s): {¬r, p}
8. De (4) y (7) (Q = p): {¬r}
9. De (5) y (8) (Q = r): {}
2.
2.1.
2.1.1.
Resolución en lógica de primer orden
Introducción
Motivación
Teorema de Church: No existe un algoritmo que permita decidir si una fórmula de lógica de primer orden es lógicamente válida o no.
Premio consuelo: El procedimiento de resolución general.
Sirve para testear si una fórmula de primer orden es válida, pero si no lo es
se puede colgar.
Problema: Si lo tenemos corriendo hace 20 años, puede ser que la fórmula no
sea válida, pero también es posible que lo sea y el algoritmo aún no encontró la
demostración.
4
2.1.2.
Método para testear la validez de A
Para ver si una fórmula A es lógicamente válida debemos:
1. Obtener ¬A
2. Testear si ¬A es insatisfactible
a) Calcular la forma clausal B de ¬A.
b) Testear B usando la regla de resolución.
2.2.
2.2.1.
Forma clausal
Pasar una fórmula a forma clausal
Ejemplo: G(H, H) ∧ ∀x(F (x) ⇒ ¬((∀y¬G(x, y)) ∧ G(H, x)) )
Pasaremos por las siguientes etapas:
1. Forma normal negada (NNF)
2. Forma normal prenexa
3. Forma normal de Skolem
2.2.2.
Forma normal negada (NNF)
Toda fórmula de primer orden tiene una fórmula equivalente que está en
NNF.
La forma normal negada no tiene operadores de implicación (⇒) y el operador de negación (¬) solo aparece aplicado a fórmulas atómicas.
Para pasar una fórmula cualquiera a NNF usaremos las mismas identidades
que vimos en proposicional para pasar a FNC, agregando otras que sirvan para
manejar la interacción de la negación con los operadores ∃ y ∀.
2.2.3.
Pasar una fórmula a NNF
Ejemplo: G(H, H) ∧ ∀x(F (x) ⇒ ¬((∀y¬G(x, y)) ∧ G(H, x)) )
1. Eliminar los operadores ⇒, utilizando la equivalencia:
P ⇒ Q ≡ ¬P ∨ Q.
2. “Meter para adentro” los ¬ hasta que queden al lado de una fórmula
atómica, utilizando las equivalencias:
¬¬P ≡ P
¬(P ∧ Q) ≡ ¬P ∨ ¬Q
¬(P ∨ Q) ≡ ¬P ∧ ¬Q
¬∃x(P ) ≡ ∀x(¬P )
¬∀x(P ) ≡ ∃x(¬P )
5
2.2.4.
Forma normal prenexa
Toda fórmula en proposicional es lógicamente válida a una fórmula en forma
normal prenexa.
Si la fórmula está en NNF, lo único que se debe hacer es renombrar las variables ligadas para que tengan nombres disjuntos y luego “mover” los operadores.
¡Cuidado! Se debe preservar el orden original de los operadores.
Visto el árbol de parsing de la expresión lógica como orden parcial, el orden
de los operadores “movidos” debe respetar ese orden parcial: No es lo mismo
∀x∃yP (x, y) que ∃y∀xP (x, y).
2.2.5.
Pasar a forma normal prenexa en el ejemplo
Luego de pasar a NNF:
G(H, H) ∧ ∀x(¬F (x) ∨ ∃yG(x, y) ∨ ¬G(H, x) )
En forma normal prenexa:
∀x∃y(G(H, H) ∧ (¬F (x) ∨ G(x, y) ∨ ¬G(H, x)) )
2.2.6.
Forma normal de Skolem
No toda fórmula de primer orden se puede escribir como una fórmula equivalente en forma normal de Skolem.
Toda fórmula de primer orden tiene una fórmula correspondiente en forma
normal de Skolem tal que ambas son satisfactibles o ninguna de las dos lo es.
Una fórmula está en forma normal de Skolem si está en forma normal prenexa
y no tiene cuantificadores existenciales.
Llamamos Skolemización al proceso de tomar una fórmula en forma normal
prenexa y conseguirnos otra en forma normal de Skolem que tiene la propiedad
de preservar satisfactibilidad como fue mencionada mas arriba.
2.2.7.
Pasar a forma normal de Skolem (Skolemización)
Por cada cuantificador existencial ∃x:
1. Encontrar el conjunto C de variables ligadas a un cuantificador universal
(∀) que afectan el existencial en cuestión (en forma prenexa, esto es “los
∀ que aparecen más atrás”).
2. Introducir un nuevo sı́mbolo de función n-ario F al lenguaje, donde n =
#C (notar que n puede ser 0, en cuyo caso lo introducido es una constante).
3. Eliminar el cuantificador
6
4. Reemplazar toda aparición de x en la fórmula por F (y1 , ...yn ) donde
{y1 , ..., yn } = C. Los yi se pueden numerar en cualquier orden pero en
todos los reemplazos el mismo.
2.2.8.
Skolemizar el ejemplo
En forma normal prenexa:
∀x∃y(G(H, H) ∧ (¬F (x) ∨ G(x, y) ∨ ¬G(H, x) ))
Para skolemizar solo se debe tratar el existencial ∃y.
1. C = {x}
2. n = 1 por lo cual se introduce una función unaria U al lenguaje.
3. ∀x(G(H, H) ∧ (¬F (x) ∨ G(x, y) ∨ ¬G(H, x)) )
4. ∀x(G(H, H) ∧ (¬F (x) ∨ G(x, U (x)) ∨ ¬G(H, x)) )
2.2.9.
Forma clausal (¡al fin!)
Una vez que se tiene la fórmula en forma normal de Skolem:
∀x(G(H, H) ∧ (¬F (x) ∨ G(x, U (x)) ∨ ¬G(H, x)) )
Se eliminan los ∀ y se pasa a FNC como si fuera proposicional (en este caso
ya está en FNC):
G(H, H) ∧ (¬F (x) ∨ G(x, U (x)) ∨ ¬G(H, x))
y luego se escribe como conjuntos:
{{G(H, H)}, {¬F (x), G(x, U (x)), ¬G(H, x)}}
2.3.
2.3.1.
Regla de resolución
Regla de resolución
{A1 , ..., Am , P1 , ..., Pk }
{B1 , ..., Bn , ¬Q1 , ..., ¬Ql }
σ({A1 , ..., Am , B1 , ..., Bn })
donde σ es el MGU de {P1 , ..., Pk , Q1 , ..., Ql }.
Si las cláusulas {A1 , ..., Am , P1 , ..., Pk } y {B1 , ..., Bn , ¬Q1 , ..., ¬Ql } tienen variables en común debe efectuarse un renombre previamente.
σ({A1 , ..., Am , B1 , ..., Bn }) es el resolvente de
{A1 , ..., Am , P1 , ..., Pk } y {B1 , ..., Bn , ¬Q1 , ..., ¬Ql }.
7
2.3.2.
Resolviendo el ejemplo
{{G(H, H)}, {¬F (x), G(x, U (x)), ¬G(H, x)}}
Solo se puede utilizar la regla poniendo P1 = G(H, H) y Q1 = G(H, x)
ya que ¬G(H, x) es el único átomo negativo que unifica con un átomo de otra
cláusula.
Esto hace que σ = {x ← H} y el resolvente es σ({F (x), G(x, U (x))}) =
F (H), G(H, U (H)).
{{G(H, H)}, {¬F (x), G(x, U (x)), ¬G(H, x)}, {¬F (H), G(H, U (H))}}
2.3.3.
Resolviendo el ejemplo
{{G(H, H)}, {¬F (x), G(x, U (x)), ¬G(H, x)}, {¬F (H), G(H, U (H))}}
Con las dos ultimas cláusulas: Q1 = G(H, x) y P1 = G(H, U (H)), σ = {x ←
U (H)}.
Resolvente: {¬F (U (H)), ¬F (H), G(U (H), U (U (H)))}
{{G(H, H)}, {¬F (x), G(x, U (x)), ¬G(H, x)}, {¬F (H), G(H, U (H))},
{¬F (U (H)), ¬F (H), G(U (H), U (U (H)))}}
¿Qué pasa si continuamos?
2.4.
2.4.1.
Ejemplo completo (cortito)
Pseudo-identidad
Intentemos demostrar: ∀x∃y(P (x) ⇒ P (y)).
Negación de la fórmula:
¬(∀x∃y(P (x) ⇒ P (y))).
Forma normal negada:
∃x∀y(P (x) ∧ ¬P (y)).
Forma normal prenexa:
∃x∀y(P (x) ∧ ¬P (y)).
Forma normal de Skolem:
∀y(P (U ) ∧ ¬P (y)).
FNC, notación de conjuntos:
{{P (U )}, {¬P (y)}}.
8
Descargar