Page 1

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)


Ejercicios


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

4.2 logica  

Resolución de Primer-Orden ∀x, P(x) → Q(x) P(A) Q(A) Letras mayúsculas: constantes Letras minúsculas: variables ∀x, P(x) → Q(x) P(A) Q(A) Si...