Paradigmas de
Lenguajes de
Programación
Clase PrácticaResolución I
Primer cuatrimestre de 2008
Resolución en proposicional
Dadas unas premisas P1… Pn y una conclusión C
1) Calculamos la Forma Normal Conjuntiva (FNC) de cada premisa y de la negación de la conclusión
2) Aplicamos repetidamente la Regla de Resolución a la unión de todas las cláusulas obtenidas en el paso anterior
3) Si llegamos a la cláusula vacía:
P1 ∧ … ∧ Pn ∧ ¬ C es insatisfactible
Por lo tanto, P1 ∧ … ∧ Pn → C es tautología
Si no llegamos a la cláusula vacía:
P1 ∧ … ∧ Pn ∧ ¬ C es satisfactible
Forma Normal Conjuntiva (FNC)
Una fórmula está en FNC si es una conjunción de
disyunciones de literales.
(p ∨ q ∨ ¬ r) ∧ ( r ∨ q) ∧
t
cláusula
Forma Normal Conjuntiva (FNC)
Notación conjuntista
(p ∨ q ∨ ¬ r)
∧
(r ∨ q)
∧
t
{
{p,q,¬r}
,
{r,q}
, {t} }
Ejemplo FNC
(p∧
q)∨
(p∧
r) (p∨
p)∧
(p∨
r)∧
(q∨
p)∧
(q∨
r) (ya es FNC) p∧
(p∨
r)∧
(q∨
p)∧
(q∨
r) p∧
(q∨
r) {
{p}, {q,r}}
(notación conjuntista)Aplicación de la regla de resolución
Regla de resolución { A1, … ,An, B1, … ,Bm} { A1, … ,An,Q } { B1, … ,Bm,¬Q } resolvente Aplicación En cada paso, se aplica la regla de resolución a dos cláusulas del
conjunto. El resolvente de las mismas se agrega al conjunto (si no estaba previamente) y si es posible, se hace una nueva aplicación.
Ejercicio resolución en proposicional
¿Se deduce (p ∧ q) de (¬p → q) ∧ (p → q) ∧ (¬p → ¬q)?
1)
Pasar a FNC las premisas y la negación de la conclusión¬(p ∧ q) ¬p
∨¬q {¬p, ¬q}
¬p → q p
∨q {p, q}
p → q ¬p
∨q {¬p, q}
¬p → ¬q p
∨¬q {p, ¬q}
Ejercicio (cont.)
2) Aplicar la regla de resolución y ver de llegar a la cláusula vacía 1. {¬p, ¬q} 2. {p, q} 3. {¬p, q} 4. {p, ¬q} 5. (de 1. y 4.) {¬q} 6. (de 2. y 3.) {q} 7. (de 5. y 6.) 3) Luego de (¬p → q) ∧ (p → q) ∧ (¬p → ¬q) se puede deducir (p ∧ q).
Resolución general en primer orden
Dado un conjunto de premisas P1… Pn y una conclusión C
Calcular la Forma Normal de Skolem de cada cláusula y la de la
negación de la conclusión
Calcular la Forma Clausal de cada resultado del paso 2
Hacer que las cláusulas resultado del paso 2 tengan variables
disjuntas
Testear utilizando la Regla de Resolución General sobre la unión
de las cláusulas resultado del paso 3
Si llegamos a la cláusula vacía:
P1 ∧ … ∧ Pn ∧ ¬ C es insatisfactible
Por lo tanto, P1 ∧ … ∧ Pn → C es tautología
Si no llegamos a la cláusula vacía:
P1 ∧ … ∧ Pn ∧ ¬ C es satisfactible
Forma Normal de Skolem
Elimina los cuantificadores existenciales
Para calcular la Forma Normal de Skolem de una
fórmula se deben realizar los siguientes pasos
Calcular la Forma Normal Negada. Para realizar esto se debe
expresar la fórmula sólo en función de cuantificadores, conjunción, disyunción y negación (esta última sólo sobre fórmulas atómicas).
Reemplazar cada variable ligada por un cuantificador
existencial por:
a. Una nueva constante, si esa variable no está en el alcance de
ningún cuantificador universal
b. Un término de tipo función, cuyo símbolo de función es nuevo y
sus parámetros corresponden a las variables cuantificadas universalmente cuyo alcance incluya a la variable ligada al cuantificador existencial
Forma Normal de Skolem: Ejemplo
Pasaje a Forma Normal Negada
∀ x.( ( P(x) ∧ Q(x) ) → ∀ y. ( Q(y) → ∃ z. R(z) ) ) ∧ ∃ t. Q(t)
∀ x.( ( P(x) ∧ Q(x) ) → ∀ y. (¬ Q(y) ∨ ∃ z. R(z) ) ) ∧ ∃ t. Q(t)
Forma Normal de Skolem: Ejemplo
Cálculo de la Forma Normal de Skolem
∀ x.(¬ P(x) ∨ ¬ Q(x) ∨ ∀ y. (¬ Q(y) ∨ ∃ z. R(z) ) ) ∧ ∃ t. Q(t)
y
x
Forma Prenexa
Una fórmula está en Forma Prenexa si no tiene
cuantificadores o si es de la forma C1x1.C2x2. … Cnxn.B
Cada Ci es un cuantificador existencial o universal B es una fórmula sin cuantificadores
∀ x.(¬ P(x) ∨ ¬ Q(x) ∨ ∀ y. (¬ Q(y) ∨ R(f(x,y)) ) ) ∧ Q(c)
∀ x. ∀ y. (¬ P(x) ∨ ¬ Q(x) ∨ ¬ Q(y) ∨ R(f(x,y)) ) ∧ Q(c)
Forma Clausal
Llamamos literales a fórmulas atómicas (literal positivo)
o a fórmulas atómicas negadas (literal negativo).
Una cláusula es una disyunción de literales en Forma
Prenexa.
Una sentencia está en Forma Clausal si es una
conjunción de cláusulas. Cada cláusula debe poseer variables ligadas distintas a las de otras cláusulas.
Pasaje a Forma Clausal
1. Convertir la fórmula a Forma Prenexa
2. Luego convertir el resultado a Forma Normal Conjuntiva 3. Distribuir los cuantificadores sobre cada conjunción
∀ x. ( A ∧ B) ↔ ∀ x. A ∧ ∀ x. B
4. Asegurarse que los cuantificadores sean disjuntos
Forma Clausal: Ejemplo
La Forma Prenexa de nuestro ejemplo ya está en
Forma Normal Conjuntiva.
Distribuimos los cuantificadores en la conjunción.
∀ x. ∀ y. ( (¬ P(x) ∨ ¬ Q(x) ∨ ¬ Q(y) ∨ R(f(x,y)) ) ∧ Q(c) )
∀ x. ∀ y. ( (¬ P(x) ∨ ¬ Q(x) ∨ ¬ Q(y) ∨ R(f(x,y)) )) ∧
Forma Clausal: Notación conjuntiva
Notamos cada cláusula como un conjunto. La notación
conjuntiva de la fórmula completa será el conjunto formado por los mismos.
{ {¬ P(x), ¬ Q(x), ¬ Q(y), R(f(x,y))} , {Q(c)}}
La notación no explicita los cuantificadores universales. Dado que la sentencia estaba en Forma Normal de Skolem entonces necesariamente las variables que aparecen tienen que estar cuantificadas universalmente.
∀ x. ∀ y. ( (¬ P(x) ∨ ¬ Q(x) ∨ ¬ Q(y) ∨ R(f(x,y)) )) ∧
Regla de resolución general
Regla de resolución σ{ A1, … ,An, C1, … ,Cr} { A1, … ,An,B1, … ,Bm } { C1, … ,Cr,¬D1, … , ¬Ds } resolvente σ es el MGU de {B1, … ,Bm,D1, … , Ds} Aplicación En cada paso, se aplica la regla de resolución a dos cláusulas del
conjunto. El resolvente de las mismas se agrega al conjunto (si no estaba previamente) y si es posible, se hace una nueva aplicación.
Primer Orden: Ejercicio
Premisas
P1: Todos los sabuesos aúllan de noche
P2: Todos los que tienen gatos no tienen ratones P3: Javier tiene un gato o un perro que no aúlla
Conclusión
C: Javier no tiene ratones
Primero, expresemos estas sentencias en primer orden utilizando:
Predicados: Sabueso(x), Aúlla(x), Tiene(x,y), Gato(x), Ratón(x) La constante Javi para representar a Javier