4.2 logica sin logica propop

68
Resolución de Primer- Orden

description

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) 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

Transcript of 4.2 logica sin logica propop

Resolución de Primer-Orden

Resolución de Primer-Ordenx, P(x) Q(x)

P(A)Q(A)

Letras mayúsculas: constantesLetras minúsculas:variables

Resolución de Primer-Ordenx, P(x) Q(x)

P(A)Q(A)

Letras mayúsculas: constantesLetras minúsculas:variables

Silogismo:Todos los hombres son mortalesSócrates es un hombreSócrates es mortal

x, ¬P(x) v Q(x)P(A)Q(A)

Equivalencia por definición de implicación

Resolución de Primer-Ordenx, P(x) Q(x)

P(A)Q(A)

Letras mayúsculas: constantesLetras minúsculas:variables

Silogismo:Todos los hombres son mortalesSócrates es un hombreSócrates es mortal

x, ¬P(x) v Q(x)P(A)Q(A)

Equivalencia por definición de implicación

¬P(A) v Q(A)P(A)Q(A)

Sustituya A por x, sigue verdaderoEntoncesResolución proposicional

Resolución de Primer-Ordenx, P(x) Q(x)

P(A)Q(A)

Letras mayúsculas: constantesLetras minúsculas:variables

Silogismo:Todos los hombres son mortalesSócrates es un hombreSócrates es mortal

x, ¬P(x) v Q(x)P(A)Q(A)

Equivalencia por definición de implicación

¬P(A) v Q(A)P(A)Q(A)

Sustituya A por x, sigue verdaderoEntoncesResolución proposicional

Dos nuevas cosas:

•Convertir LPO a forma clausal

•Resuelva con la sustitución de variables

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. Elimine flechas2. Dirija en la negación3. Renombre las variables

Convirtiendo a Forma de Cláusula

1. Elimine flechas () ^ () ¬ v

2. Conduzca las negación3. Renombre las variables

Convirtiendo a Forma de Cláusula1. Elimine flechas

() ^ () ¬ v

2. Conduzca las negación( v ) ^ ( ^ ) v x. x. x. x.

3. Renombre las variables

Convirtiendo a Forma de Cláusula1. Elimine flechas

() ^ () ¬ v

2. Conduzca las negación( v ) ^ ( ^ ) v x. x. x. x.

3. 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 universalesx. Ama(x, Amado(x)) Ama(x, Amado(x))

6. Distribuya los “o” sobre los “y”; retorne cláusulasP(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 universalesx. Ama(x, Amado(x)) Ama(x, Amado(x))

6. Distribuya los “o” sobre los “y”; retorne cláusulasP(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

x. P(x) T(J, x)

Ejemplo: Convirtiendo a forma de cláusula

a. Juan tiene un perro

x. 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)

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)

c. Los Amadores-de-animales(L) no matan(k) a los animales 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)

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)

c. Los Amadores-de-animales(L) no matan(k) a los animales 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)

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)

c. Los Amadores-de-animales(L) no matan(k) a los animales 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 gatoG(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 gatoG(A)

f. Todos los gatos son animales

¬G(x) v A(x)

Resolución de Primer-Ordenx, P(x) Q(x)

P(A)Q(A)

Letras mayúsculas: constantesLetras minúsculas:variables

Silogismo:Todos los hombres son mortalesSócrates es un hombreSócrates es mortal

x, ¬P(x) v Q(x)P(A)Q(A)

Equivalencia por definición de implicación

¬P(A) v Q(A)P(A)Q(A)

Sustituya A por x, sigue verdaderoEntoncesResolución proposicional

Dos nuevas cosas:

•Convertir LPO a forma clausal

•Resuelva con la sustitución de variables

Sustituciones

SustitucionesP(x, f(y), B) : una sentencia axiomática

SustitucionesP(x, f(y), B) : una sentencia axiomática

Instancias de la sustitución

Sustitución{v1/t1, .., vn/tn}

Comentarios

SustitucionesP(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

SustitucionesP(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}

SustitucionesP(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}

SustitucionesP(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

SustitucionesP(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

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)

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ónunificar(Expr x, Expr y, Subst a) {

Algoritmo de unificaciónunificar(Expr x, Expr y, Subst a) {

Si a= falla, retorne fallade lo contrario si x= y, retorne a

Algoritmo de unificaciónunificar(Expr x, Expr y, Subst a) {

Si a= falla, retorne fallade lo contrario si x= y, retorne ade 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ónunificar(Expr x, Expr y, Subst a) {

Si a= falla, retorne fallade lo contrario si x= y, retorne ade 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ónunificar(Expr x, Expr y, Subst a) {

Si a= falla, retorne fallade lo contrario si x= y, retorne ade 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ónunificar(Expr x, Expr y, Subst a) {

Si a= falla, retorne fallade lo contrario si x= y, retorne ade 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 listasretorne unify(rest(x), rest(y),

unify(primero(x), primero(y), s))

Subrutina Unify-varSustituyendo var y x tanto cuanto posible, entonces agregue una nueva

uniónUnify-var(Variable var, Expr x, Subst s){

Subrutina Unify-varSustituyendo var y x tanto cuanto posible, entonces agregue una nueva

uniónUnify-var(Variable var, Expr x, Subst s){

Si var es unida a val en s,retorne unify(val, x, s)

Subrutina Unify-varSustituyendo var y x tanto cuanto posible, entonces agregue una nueva

uniónUnify-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-varSustituyendo var y x tanto cuanto posible, entonces agregue una nueva

uniónUnify-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 fallade 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) ningunoP(x, f(y)) P(z, g(w)) ninguno

Tomado del Instituto Tecnológico de Massachusetts

www.owc.mit.edu6.034 Artificial Intelligence 2004Archivo ch10-logic1a

Leer capitulo 8,9 del libro de Russell & Norvig

Ejercicios