Resoluci贸n de Primer-Orden
Resolución de Primer-Orden ∀x, P(x) → Q(x) P(A) Q(A)
Letras mayúsculas: constantes Letras minúsculas: variables
Resolución de Primer-Orden ∀x, P(x) → Q(x) P(A) Q(A) ∀x, ¬P(x) v Q(x) P(A) Q(A)
Silogismo: Todos los hombres son mortales Sócrates es un hombre Sócrates es mortal
Equivalencia por definición de implicación
Letras mayúsculas: constantes Letras minúsculas: variables
Resolución de Primer-Orden ∀x, P(x) → Q(x) P(A) Q(A) ∀x, ¬P(x) v Q(x) P(A) Q(A) ¬P(A) v Q(A) P(A) Q(A)
Silogismo: Todos los hombres son mortales Sócrates es un hombre Sócrates es mortal
Equivalencia por definición de implicación
Sustituya A por x, sigue verdadero Entonces Resolución proposicional
Letras mayúsculas: constantes Letras minúsculas: variables
Resolución de Primer-Orden ∀x, P(x) → Q(x) P(A) Q(A) ∀x, ¬P(x) v Q(x) P(A) Q(A) ¬P(A) v Q(A) P(A) Q(A)
Silogismo: Todos los hombres son mortales Sócrates es un hombre Sócrates es mortal
Equivalencia por definición de implicación
Letras mayúsculas: constantes Letras minúsculas: variables
Dos nuevas cosas: •Convertir LPO a forma clausal •Resuelva con la sustitución de variables
Sustituya A por x, sigue verdadero Entonces Resolución proposicional
Forma Clausal
Como FNC en otra estructura Sin cuantificadores
∀x. ∃y. P(x)→R(x,y)
¬P(x) v R(x, F(x))
Convirtiendo a Forma de Clรกusula
Convirtiendo a Forma de Cl谩usula 1. 2. 3.
Elimine flechas Dirija en la negaci贸n Renombre las variables
Convirtiendo a Forma de Cláusula 1.
Elimine flechas α↔β ⇒ (α→β) ^ (β→α) α →β ⇒¬α v β
1. 2.
Conduzca las negación Renombre las variables
Convirtiendo a Forma de Cláusula 1.
Elimine flechas α↔β ⇒ (α→β) ^ (β→α) α →β ⇒¬α v β
1.
Conduzca las negación ¬(α v β) ⇒ ¬α ^ ¬ β ¬(α ^ β) ⇒ ¬α v ¬ β ¬¬α⇒α ¬∀x. α ⇒∃x. ¬α ¬∃x.α ⇒∀x.¬α
1.
Renombre las variables
Convirtiendo a Forma de Cláusula 1.
Elimine flechas α↔β ⇒ (α→β) ^ (β→α) α →β ⇒¬α v β
1.
Conduzca las negación ¬(α v β) ⇒ ¬α ^ ¬ β ¬(α ^ β) ⇒ ¬α v ¬ β ¬¬α⇒α ¬∀x. α ⇒∃x. ¬α ¬∃x.α ⇒∀x.¬α
1.
Renombre las variables ∀x. ∃y. (¬P(x) v ∃x. Q(x, y))⇒ ∀x1. ∃y2. (¬P(x1) v ∃x3. Q(x3, y2))
Skolemizaci贸n (Thoralf Skolem) 4. Skolemizaci贸n
Skolemización (Thoralf Skolem) 4. Skolemización •
Ponga un nuevo nombre a cada variable existencial ∀ ∀
∃x. P(x) ⇒P( Fred) ∃x, y. R(x, y) ⇒ R( Cosa1, Cosa2)
Skolemización (Thoralf Skolem) 4. Skolemización •
Ponga un nuevo nombre a cada variable existencial ∀ ∀ ∀
∃x. P(x) ⇒P( Fred) ∃x, y. R(x, y) ⇒ R( Cosa1, Cosa2) ∃x. P(x) ∧ Q(x) ⇒P(Fleep) ∧ Q(Fleep)
Skolemización (Thoralf Skolem) 4. Skolemización •
Ponga un nuevo nombre a cada variable existencial ∀ ∀ ∀ ∀
∃x. P(x) ⇒P( Fred) ∃x, y. R(x, y) ⇒ R( Cosa1, Cosa2) ∃x. P(x) ∧ Q(x) ⇒P(Fleep) ∧ Q(Fleep) ∃x. P(x) ∧ ∃x. Q(x) ⇒ P(Frog) ∧ Q(Grog)
Skolemización (Thoralf Skolem) 4. Skolemización •
Ponga un nuevo nombre a cada variable existencial ∀ ∀ ∀ ∀ ∀
•
∃x. P(x) ⇒P( Fred) ∃x, y. R(x, y) ⇒ R( Cosa1, Cosa2) ∃x. P(x) ∧ Q(x) ⇒P(Fleep) ∧ Q(Fleep) ∃x. P(x) ∧ ∃x. Q(x) ⇒ P(Frog) ∧ Q(Grog) ∃y. ∀x. Ama(s, y) ⇒∀x. Ama(x, Englebert)
Sustituya nuevas funciones en las variables universales en otros ámbitos.
Skolemización (Thoralf Skolem) 4. Skolemización •
Ponga un nuevo nombre a cada variable existencial ∀ ∀ ∀ ∀ ∀
•
∃x. P(x) ⇒P( Fred) ∃x, y. R(x, y) ⇒ R( Cosa1, Cosa2) ∃x. P(x) ∧ Q(x) ⇒P(Fleep) ∧ Q(Fleep) ∃x. P(x) ∧ ∃x. Q(x) ⇒ P(Frog) ∧ Q(Grog) ∃y. ∀x. Ama(s, y) ⇒∀x. Ama(x, Englebert)
Sustituya nuevas funciones en las variables universales en otros ámbitos. ∀
∀x. ∃y. Ama(x, y) ⇒∀x. Ama(x, Amado(x))
Skolemización (Thoralf Skolem) 4. Skolemización •
Ponga un nuevo nombre a cada variable existencial ∀ ∀ ∀ ∀ ∀
•
∃x. P(x) ⇒P( Fred) ∃x, y. R(x, y) ⇒ R( Cosa1, Cosa2) ∃x. P(x) ∧ Q(x) ⇒P(Fleep) ∧ Q(Fleep) ∃x. P(x) ∧ ∃x. Q(x) ⇒ P(Frog) ∧ Q(Grog) ∃y. ∀x. Ama(s, y) ⇒∀x. Ama(x, Englebert)
Sustituya nuevas funciones en las variables universales en otros ámbitos. ∀ ∀
∀x. ∃y. Ama(x, y) ⇒∀x. Ama(x, Amado(x)) ∀x. ∃y. ∀z, ∃w. P(x, y, z) ∧ R(y, z, w) ⇒ • P(x, F(x), z) ∧ R(F(x), z, G(x, z))
Conversión a forma de cláusula: últimos pasos 5. Eliminar cuantificadores universales ∀x. Ama(x, Amado(x)) ⇒ Ama(x, Amado(x)) 6. Distribuya los “o” sobre los “y”; retorne cláusulas P(z) v (Q( z, w) ∧ R(w, z)) ⇒ {{P(z), Q(z, w)}, {P(z), R(w, z)}}
Conversión a forma de cláusula: últimos pasos 5. Eliminar cuantificadores universales ∀x. Ama(x, Amado(x)) ⇒ Ama(x, Amado(x)) 6. Distribuya los “o” sobre los “y”; retorne cláusulas P(z) v (Q( z, w) ∧ R(w, z)) ⇒ {{P(z), Q(z, w)}, {P(z), R(w, z)}} 7. Renombre las variables en cada cláusula {{P(z), Q(z, w)}, {P(z), R(w, z)}} ⇒ {{P(z1), Q(z1, w1)}, {P(z2), R(w2, z2)}}
Ejemplo: Convirtiendo a forma de clテ。usula a. Juan tiene un perro 竏ベ. P(x) 竏ァ T(J, x)
Ejemplo: Convirtiendo a forma de clテ。usula a. Juan tiene un perro 竏ベ. P(x) 竏ァ T(J, x) P(Fido) 竏ァ T(J, Fido)
Ejemplo: Convirtiendo a forma de cláusula a. Juan tiene un perro ∃x. P(x) ∧ T(J, x) P(Fido) ∧ T(J, Fido)
b. Cualquiera que tiene un perro es un amador-de-perros
∀x. ( ∃y. D(y) ∧ D(x, y)) → L(x)
Ejemplo: Convirtiendo a forma de cláusula a. Juan tiene un perro ∃x. P(x) ∧ T(J, x) P(Fido) ∧ T(J, Fido)
b. Cualquiera que tiene un perro es un amador-de-perros
∀x. ( ∃y. P(y) ∧ T(x, y)) → L(x) ∀x. ( ¬∃y. ( P(y) ∧ T(x, y)) v L(x)
Ejemplo: Convirtiendo a forma de cláusula a. Juan tiene un perro ∃x. P(x) ∧ T(J, x) P(Fido) ∧ T(J, Fido)
b. Cualquiera que tiene un perro es un amador-de-perros
∀x. ( ∃y. P(y) ∧ T(x, y)) → L(x) ∀x. ( ¬∃y. ( P(y) ∧ T(x, y)) v L(x) ∀x. ∀y. ¬(P(y) ∧ T(x, y)) v L(x) ∀x. ∀y. ¬P(y) v T(x, y) v L(x)
Ejemplo: Convirtiendo a forma de cláusula a. Juan tiene un perro ∃x. P(x) ∧ T(J, x) P(Fido) ∧ T(J, Fido)
b. Cualquiera que tiene un perro es un amador-de-perros
∀x. ( ∃y. P(y) ∧ T(x, y)) → L(x) ∀x. ( ¬∃y. ( P(y) ∧ T(x, y)) v L(x) ∀x. ∀y. ¬(P(y) ∧ T(x, y)) v L(x) ∀x. ∀y. ¬P(y) v T(x, y) v L(x) ¬P(y) v ¬T(x, y) v L(x)
Ejemplo: Convirtiendo a forma de cláusula a. Juan tiene un perro ∃x. P(x) ∧ T(J, x) P(Fido) ∧ T(J, Fido)
c. Los Amadores-de-animales(L) no matan(k) a los animales b. Cualquiera que tiene un perro es un amador-de-perros
∀x. ( ∃y. P(y) ∧ T(x, y)) → L(x) ∀x. ( ¬∃y. ( P(y) ∧ T(x, y)) v L(x) ∀x. ∀y. ¬(P(y) ∧ T(x, y)) v L(x) ∀x. ∀y. ¬P(y) v T(x, y) v L(x) ¬P(y) v ¬T(x, y) v L(x)
∀ x. L(x)→ (∀ y. A(y) →¬K(x,y))
Ejemplo: Convirtiendo a forma de cláusula a. Juan tiene un perro ∃x. P(x) ∧ T(J, x) P(Fido) ∧ T(J, Fido)
c. Los Amadores-de-animales(L) no matan(k) a los animales b. Cualquiera que tiene un perro es un amador-de-perros
∀x. ( ∃y. P(y) ∧ T(x, y)) → L(x) ∀x. ( ¬∃y. ( P(y) ∧ T(x, y)) v L(x) ∀x. ∀y. ¬(P(y) ∧ T(x, y)) v L(x) ∀x. ∀y. ¬P(y) v T(x, y) v L(x) ¬P(y) v ¬T(x, y) v L(x)
∀ x. L(x)→ (∀ y. A(y) →¬K(x,y)) ∀ x. ¬L(x) v (∀ y. A(y) →¬K(x,y)) ∀ x. ¬L(x) v (∀ y. ¬ A(y) v ¬K(x,y))
Ejemplo: Convirtiendo a forma de cláusula a. Juan tiene un perro ∃x. P(x) ∧ T(J, x) P(Fido) ∧ T(J, Fido)
c. Los Amadores-de-animales(L) no matan(k) a los animales b. Cualquiera que tiene un perro es un amador-de-perros
∀x. ( ∃y. P(y) ∧ T(x, y)) → L(x) ∀x. ( ¬∃y. ( P(y) ∧ T(x, y)) v L(x) ∀x. ∀y. ¬(P(y) ∧ T(x, y)) v L(x) ∀x. ∀y. ¬P(y) v T(x, y) v L(x) ¬P(y) v ¬T(x, y) v L(x)
∀ x. L(x)→ (∀ y. A(y) →¬K(x,y)) ∀ x. ¬L(x) v (∀ y. A(y) →¬K(x,y)) ∀ x. ¬L(x) v (∀ y. ¬ A(y) v ¬K(x,y)) ¬L(x) v ¬A(y) v ¬K(x, y)
Más conversiones a forma de cláusula d. Jaime mato al atún o la curiosidad mato al atún
M(J, A) v M(C, A)
Más conversiones a forma de cláusula d. Jaime mato al atún o la curiosidad mato al atún
M(J, A) v M(C, A) e. El atún es un gato G(A)
Más conversiones a forma de cláusula d. Jaime mato al atún o la curiosidad mato al atún
M(J, A) v M(C, A) e. El atún es un gato G(A)
f. Todos los gatos son animales ¬G(x) v A(x)
Resolución de Primer-Orden ∀x, P(x) → Q(x) P(A) Q(A) ∀x, ¬P(x) v Q(x) P(A) Q(A) ¬P(A) v Q(A) P(A) Q(A)
Silogismo: Todos los hombres son mortales Sócrates es un hombre Sócrates es mortal
Equivalencia por definición de implicación
Letras mayúsculas: constantes Letras minúsculas: variables
Dos nuevas cosas: •Convertir LPO a forma clausal •Resuelva con la sustitución de variables
Sustituya A por x, sigue verdadero Entonces Resolución proposicional
Sustituciones
Sustituciones P(x, f(y), B) : una sentencia axiomรกtica
Sustituciones P(x, f(y), B) : una sentencia axiom谩tica Instancias de la sustituci贸n
Sustituci贸n {v1/t1, .., vn/tn}
Comentarios
Sustituciones P(x, f(y), B) : una sentencia axiom谩tica Instancias de la sustituci贸n
Sustituci贸n {v1/t1, .., vn/tn}
Comentarios
P(z, f(w), B)
{x/z, y/w}
Variante alfab茅tica
Sustituciones P(x, f(y), B) : una sentencia axiom谩tica Instancias de la sustituci贸n
Sustituci贸n {v1/t1, .., vn/tn}
Comentarios
P(z, f(w), B)
{x/z, y/w}
Variante alfab茅tica
P(x, f(A), B)
{y/a}
Sustituciones P(x, f(y), B) : una sentencia axiom谩tica Instancias de la sustituci贸n
Sustituci贸n {v1/t1, .., vn/tn}
Comentarios
P(z, f(w), B)
{x/z, y/w}
Variante alfab茅tica
P(x, f(A), B)
{y/a}
P(g(z), f(A), B)
{x/g(z), y/A}
Sustituciones P(x, f(y), B) : una sentencia axiom谩tica Instancias de la sustituci贸n
Sustituci贸n {v1/t1, .., vn/tn}
Comentarios
P(z, f(w), B)
{x/z, y/w}
Variante alfab茅tica
P(x, f(A), B)
{y/a}
P(g(z), f(A), B)
{x/g(z), y/A}
P(C, f(A), B)
{x/C, y/A}
Motivo de la instancia
Sustituciones P(x, f(y), B) : una sentencia axiomática Instancias de la sustitución
Sustitución {v1/t1, .., vn/tn}
Comentarios
P(z, f(w), B)
{x/z, y/w}
Variante alfabética
P(x, f(A), B)
{y/a}
P(g(z), f(A), B)
{x/g(z), y/A}
P(C, f(A), B)
{x/C, y/A}
Aplicando una sustitución: P(x, f(y), B) {y/A} = P(x, f(A), B) P(x, f(y), B) {y/A, x/y } = P(x, f(A), B)
Motivo de la instancia
Unificación
Las expresiones ω1 y ω2 son unificables ssi existe una sustitución x tal que ω1 s = ω2 s
Unificación
Las expresiones ω1 y ω2 son unificables ssi existe una sustitución x tal que ω1 s = ω2 s Sea ω1 = x y ω2 = y las siguientes son unificadores s
ω1 s
ω2 s
Unificación
Las expresiones ω1 y ω2 son unificables ssi existe una sustitución x tal que ω1 s = ω2 s Sea ω1 = x y ω2 = y las siguientes son unificadores s
ω1 s
ω2 s
{y/x}
x
x
Unificación
Las expresiones ω1 y ω2 son unificables ssi existe una sustitución x tal que ω1 s = ω2 s Sea ω1 = x y ω2 = y las siguientes son unificadores s
ω1 s
ω2 s
{y/x}
x
x
{x/y}
y
y
Unificación
Las expresiones ω1 y ω2 son unificables ssi existe una sustitución x tal que ω1 s = ω2 s Sea ω1 = x y ω2 = y las siguientes son unificadores s
ω1 s
ω2 s
{y/x}
x
x
{x/y}
y
y
{x/f(f(A)), y/f(f(A))}
f(f(A))
f(f(A))
Unificación
Las expresiones ω1 y ω2 son unificables ssi existe una sustitución x tal que ω1 s = ω2 s Sea ω1 = x y ω2 = y las siguientes son unificadores s
ω1 s
ω2 s
{y/x}
x
x
{x/y}
y
y
{x/f(f(A)), y/f(f(A))}
f(f(A))
f(f(A))
{x/A, y/A}
A
A
Unificador mรกs general
Unificador más general
g es un unificador más general de ω1 y ω2 ssi para
todo unificador s, existe s´ tal que ω1 s = (ω1 g) s´ y ω2 s= (ω2 g) s´
Unificador más general
g es un unificador más general de ω1 y ω2 ssi para
todo unificador s, existe s´ tal que ω1 s = (ω1 g) s´ y ω2 s= (ω2 g) s´ ω1
ω2
UMG
P(x)
P(A)
{x/A}
Unificador más general
g es un unificador más general de ω1 y ω2 ssi para
todo unificador s, existe s´ tal que ω1 s = (ω1 g) s´ y ω2 s= (ω2 g) s´ ω1
ω2
UMG
P(x)
P(A)
{x/A}
P(f(x), y, g(x))
P(f(x), x, g(x))
{y/x} o{x/y}
Unificador más general
g es un unificador más general de ω1 y ω2 ssi para
todo unificador s, existe s´ tal que ω1 s = (ω1 g) s´ y ω2 s= (ω2 g) s´ ω1
ω2
UMG
P(x)
P(A)
{x/A}
P(f(x), y, g(x))
P(f(x), x, g(x))
{y/x} o{x/y}
P(f(x), y, g(y))
P(f(x), z, g(x))
{y/x, z/y}
Unificador más general
g es un unificador más general de ω1 y ω2 ssi para
todo unificador s, existe s´ tal que ω1 s = (ω1 g) s´ y ω2 s= (ω2 g) s´ ω1
ω2
UMG
P(x)
P(A)
{x/A}
P(f(x), y, g(x))
P(f(x), x, g(x))
{y/x} o{x/y}
P(f(x), y, g(y))
P(f(x), z, g(x))
{y/x, z/y}
P(x, B,B)
P(A, y, z)
{x/A, y/B, z/B}
Unificador más general
g es un unificador más general de ω1 y ω2 ssi para
todo unificador s, existe s´ tal que ω1 s = (ω1 g) s´ y ω2 s= (ω2 g) s´ ω1
ω2
UMG
P(x)
P(A)
{x/A}
P(f(x), y, g(x))
P(f(x), x, g(x))
{y/x} o{x/y}
P(f(x), y, g(y))
P(f(x), z, g(x))
{y/x, z/y}
P(x, B,B)
P(A, y, z)
{x/A, y/B, z/B}
P(g(f(v)), g(u))
P(x, x)
{x/g(f(v)), u/f(v)}
Unificador más general
g es un unificador más general de ω1 y ω2 ssi para
todo unificador s, existe s´ tal que ω1 s = (ω1 g) s´ y ω2 s= (ω2 g) s´ ω1
ω2
UMG
P(x)
P(A)
{x/A}
P(f(x), y, g(x))
P(f(x), x, g(x))
{y/x} o{x/y}
P(f(x), y, g(y))
P(f(x), z, g(x))
{y/x, z/y}
P(x, B,B)
P(A, y, z)
{x/A, y/B, z/B}
P(g(f(v)), g(u))
P(x, x)
{x/g(f(v)), u/f(v)}
P(x, f(x))
P(x, x)
No es UMG!
Algoritmo de unificaci贸n unificar(Expr x, Expr y, Subst a) {
Algoritmo de unificaci贸n unificar(Expr x, Expr y, Subst a) { Si a= falla, retorne falla de lo contrario si x= y, retorne a
Algoritmo de unificaci贸n unificar(Expr x, Expr y, Subst a) { Si a= falla, retorne falla de lo contrario si x= y, retorne a de lo contrario si x es una variable, retorne unify-var(x, y, s) de lo contrario si y es una variable, retorne unify-var(y, x, s)
Algoritmo de unificaci贸n unificar(Expr x, Expr y, Subst a) { Si a= falla, retorne falla de lo contrario si x= y, retorne a de lo contrario si x es una variable, retorne unify-var(x, y, s) de lo contrario si y es una variable, retorne unify-var(y, x, s) de lo contrario si x es un predicado o funci贸n, Si y tiene el mismo operador, retorne unify(args(x), args(y), s)
Algoritmo de unificaci贸n unificar(Expr x, Expr y, Subst a) { Si a= falla, retorne falla de lo contrario si x= y, retorne a de lo contrario si x es una variable, retorne unify-var(x, y, s) de lo contrario si y es una variable, retorne unify-var(y, x, s) de lo contrario si x es un predicado o funci贸n, Si y tiene el mismo operador, retorne unify(args(x), args(y), s) De lo contrario retorne falla
Algoritmo de unificaci贸n unificar(Expr x, Expr y, Subst a) { Si a= falla, retorne falla de lo contrario si x= y, retorne a de lo contrario si x es una variable, retorne unify-var(x, y, s) de lo contrario si y es una variable, retorne unify-var(y, x, s) de lo contrario si x es un predicado o funci贸n, Si y tiene el mismo operador, retorne unify(args(x), args(y), s) De lo contrario retorne falla de lo contrario ; x y y deben ser listas retorne unify(rest(x), rest(y), unify(primero(x), primero(y), s))
Subrutina Unify-var Sustituyendo var y x tanto cuanto posible, entonces agregue una nueva uni贸n Unify-var(Variable var, Expr x, Subst s){
Subrutina Unify-var Sustituyendo var y x tanto cuanto posible, entonces agregue una nueva uni贸n Unify-var(Variable var, Expr x, Subst s){ Si var es unida a val en s, retorne unify(val, x, s)
Subrutina Unify-var Sustituyendo var y x tanto cuanto posible, entonces agregue una nueva uni贸n Unify-var(Variable var, Expr x, Subst s){ Si var es unida a val en s, retorne unify(val, x, s) de lo contrario si x es limitado a val en s, retorne unify-var(var, val, s)
Subrutina Unify-var Sustituyendo var y x tanto cuanto posible, entonces agregue una nueva uni贸n Unify-var(Variable var, Expr x, Subst s){ Si var es unida a val en s, retorne unify(val, x, s) de lo contrario si x es limitado a val en s, retorne unify-var(var, val, s) de lo contrario si var ocurre en cualquier lugar en (x, s), retorne falla de lo contrario retorne suma((var/x), s) }
Algunos ejemplos ω1
ω2
UMG
A(B,C)
A(x,y)
{x/B, y/C}
A(x, f(D,x))
A(E, f(D, y))
{x/E, y/E}
A(x, y)
A(f(C, y), z)
{x/f(C, y), y/z}
P(A, x, f(g(y)))
P(y, f(z), f(z))
{y/A, x/f(z), z/g(y)}
P(x, g(f(A)), f(x))
P(f(y), z, y)
ninguno
P(x, f(y))
P(z, g(w))
ninguno
Tomado del Instituto Tecnológico de Massachusetts www.owc.mit.edu 6.034 Artificial Intelligence 2004 Archivo ch10-logic1a Leer capitulo 8,9 del libro de Russell & Norvig
Ejercicios