SOLUCIÓN DEL EXAMEN (1.0 punto) 1. Usando tablas de verdad demuestre que: (p q) r↔p (q r) P 0 0 0 0 1 1 1 1 q 0 0 1 1 0 0 1 1 r 0 1 0 1 0 1 0 1 p q 0 0 0 0 0 0 1 1 (p q) 0 0 0 0 0 0 0 1 r q r p 0 0 0 1 0 0 0 1 (q 0 0 0 0 0 0 0 1 r) (p q) r↔p 1 1 1 1 1 1 1 1 (q r) (1.0 punto) 2. Exprese de la mejor forma posible los siguientes enunciados al español de forma natural: a) ∀x ¬LeGustan(x, espinacas) b) ∃¬x LeGustan (x, espinacas) c) ∀x LeGusta(x, helado) d) ∃¬x ¬LeGusta (x, helado) a) ∀x ¬LeGustan(x, espinacas) “A todos les desagradan las espinacas” b) ∃¬x LeGustan (x, espinacas) “No hay alguien a quien le gusten las espinacas” c) ∀x LeGusta(x, helado) “A todos les gusta el helado” d) ∃¬x ¬LeGusta (x, helado) “No hay alguien a quien no le guste el helado” (2.0 punto) 3. Convertir a forma clausal la siguiente formula: x [(R(x) v C(x, a)) [O(x, b) v ( y ( z O(y, z) ÆL(x, y)))]] Paso 1: Eliminación de los símbolos de implicación: x [(R(x) v C(x, a)) [O(x, b) v ( y (¬ z O(y, z) v L(x, y)))]] Paso 2: Reducir el ámbito de las negaciones: x [(R(x) v C(x, a)) [O(x, b) v ( y ( z ¬O(y, z) v L(x, y)))]] Paso 3: No es necesario normalizar. Paso 4: Movemos los cuantificadores a la izquierda: x y z [(R(x) v C(x, a)) (O(x, b) v (¬O(y, z) v L(x, y)))] Paso 5: Se eliminan los cuantificadores existenciales: x z [(R(x) v C(x, a)) (O(x, b) v (¬O(s(x), z) v L(x, s(x))))] Paso 6: Se eliminan todos los cuantificadores: [(R(x) v C(x, a)) (O(x, b) v (¬O(s(x), z) v L(x, s(x))))] Paso 7: Separar una cláusula por cada conjunción: (R(x) v C(x, a)), (O(x, b) v (¬O(s(x), z) v L(x, s(x)))) (2.0 puntos) 4. Realice la unificación de los siguientes términos: E = p(a, X, h( g(Z) ) ) y F = p(Z, h(Y), h(Y) ) Interacción 1: Para k = 0 E0 = p(a, X, h( g(Z) ) ), F0 = p(Z, h(Y), h(Y) ) y Sigma0 = { } Paso 1: E0 != F0 ? Si, ir al paso 2. Paso 2: D0 = {Z, a} ir al paso 3. Paso 3: Variable y término? Si, vamos al paso 4. Paso 4: No hay occur check. Vamos la paso 5. Paso 5: Sea Sigma1 = { Z / a } E1 = p(a, X, h( g(a) ) ) F1 = p(a, h(Y), h(Y) ) Ir al paso 1. Interacción 2: Para k = 1 Paso 1: E1 != F1 ? Si, ir al paso 2. Paso 2: D1 = {X, h(Y)} ir al paso 3. Paso 3: Variable y término? Si, vamos al paso 4. Paso 4: No hay occur check. Vamos la paso 5. Paso 5: Sea Sigma2 = { X / h(Y) } E2 = p(a, h(Y), h( g(a) ) ) F2 = p(a, h(Y), h(Y) ) Ir al paso 1. Interacción 3: Para k = 2 Paso 1: E2 != F2 ? Si, ir al paso 2. Paso 2: D2 = {Y, g(a)} ir al paso 3. Paso 3: Variable y término? Si, vamos al paso 4. Paso 4: No hay occur check. Vamos la paso 5. Paso 5: Sea Sigma3 = { Y / g(a) } E3 = p(a, h( g(a) ), h( g(a) ) ) F3 = p(a, h( g(a) ), h( g(a) ) ) Ir al paso 1. Interacción 4: Para k = 3 Paso 1: E2 != F2 ? No, entonces Unifican. El algoritmo para aquí con la sustitución completa: Sigma = { Y / g(a), X / h( Y ), Z / a } Sigma = { Y / g(a), X / h( g(a) ), Z / a } (2.0 puntos) 5. A partir de la base de conocimientos siguiente, aplicar Resolución para demostrar que la hipótesis V(Z) es cierta: 1. 2. 3. 4. 5. P(X) v Q(c,X) v –S(Y,X) P(a) v –R(Z) v S(b,a) -Q(Z,a) v V(a) R(X) v V(Y) -P(Y) v Q(X,Y) 1. 2. 3. 4. 5. 6. P(X) v Q(c,X) v -S(Y,X) P(a) v -R(Z) v S(b,a) -Q(Z,a) v V(a) R(X) v V(Y) -P(Y) v Q(X,Y) -V(Z) Tomamos 1 y 2 con la sustitución: s={Y/b,X/a} P(a) v Q(c,a) v -S(b,a) P(a) v -R(Z) v S(b,a) P(a) v Q(c,a) v -R(Z) 1. 2. 3. 4. 5. 6. P(X) v Q(c,X) v -S(Y,X) P(a) v -R(Z) v S(b,a) -Q(Z,a) v V(a) R(X) v V(Y) -P(Y) v Q(X,Y) -V(Z) 7. P(a) v Q(c,a) v -R(Z) Tomamos 5 y 7 con la sustitución: s={Y/a} -P(a) v Q(X,a) P(a) v Q(c,a) v -R(Z) Q(X,a) v Q(c,a) v -R(Z) 1. 2. 3. 4. 5. 6. 7. 8. P(X) v Q(c,X) v -S(Y,X) P(a) v -R(Z) v S(b,a) -Q(Z,a) v V(a) R(X) v V(Y) -P(Y) v Q(X,Y) -V(Z) P(a) v Q(c,a) v -R(Z) Q(X,a) v Q(c,a) v -R(Z) Tomamos 8 con la sustitución: s={X/c} Q(c,a) v Q(c,a) v -R(Z) Q(c,a) v -R(Z) 1. 2. 3. 4. 5. 6. 7. 8. 9. P(X) v Q(c,X) v -S(Y,X) P(a) v -R(Z) v S(b,a) -Q(Z,a) v V(a) R(X) v V(Y) -P(Y) v Q(X,Y) -V(Z) P(a) v Q(c,a) v -R(Z) Q(X,a) v Q(c,a) v -R(Z) Q(c,a) v -R(Z) Tomamos 3 y 9 con la sustitución: s={Z/c} -Q(c,a) v V(a) Q(c,a) v -R(c) V(a) v -R(c) 1. P(X) v Q(c,X) v -S(Y,X) 2. P(a) v -R(Z) v S(b,a) 3. -Q(Z,a) v V(a) 4. R(X) v V(Y) 5. -P(Y) v Q(X,Y) 6. -V(Z) 7. P(a) v Q(c,a) v -R(Z) 8. Q(X,a) v Q(c,a) v -R(Z) 9. Q(c,a) v -R(Z) 10. V(a) v -R(c) Tomamos 4 y 10 con la sustitución: s={X/c} R(c) v V(Y) V(a) v -R(c) V(a) v V(Y) 1. P(X) v Q(c,X) v -S(Y,X) 2. P(a) v -R(Z) v S(b,a) 3. -Q(Z,a) v V(a) 4. R(X) v V(Y) 5. -P(Y) v Q(X,Y) 6. -V(Z) 7. P(a) v Q(c,a) v -R(Z) 8. Q(X,a) v Q(c,a) v -R(Z) 9. Q(c,a) v -R(Z) 10. V(a) v -R(c) 11. V(a) v V(Y) Tomamos 11 con la sustitución: s={Y/a} V(a) v V(a) V(a) 1. P(X) v Q(c,X) v -S(Y,X) 2. P(a) v -R(Z) v S(b,a) 3. -Q(Z,a) v V(a) 4. R(X) v V(Y) 5. -P(Y) v Q(X,Y) 6. -V(Z) 7. P(a) v Q(c,a) v -R(Z) 8. Q(X,a) v Q(c,a) v -R(Z) 9. Q(c,a) v -R(Z) 10. V(a) v -R(c) 11. V(a) v V(Y) 12. V(a) Tomamos 6 y 12 con la sustitución: s={Z/a} -V(a) V(a) {} 1. 2. 3. 4. 5. 6. 7. 8. P(X) v Q(c,X) v -S(Y,X) P(a) v -R(Z) v S(b,a) -Q(Z,a) v V(a) R(X) v V(Y) -P(Y) v Q(X,Y) -V(Z) P(a) v Q(c,a) v -R(Z) Q(X,a) v Q(c,a) v -R(Z) 9. Q(c,a) v -R(Z) 10. V(a) v -R(c) 11. V(a) v -V(Y) 12. V(a) 13. { } (2.0 puntos) 6. Realizar un programa en Prolog que determine si un conjunto es subconjunto. miembro( X, [X | _] ). miembro( X, [ _ | R ] ):- miembro( X, R ). subconjunto([],L). subconjunto( [A | L1], L2 ):- miembro( A, L2 ), subconjunto( L1, L2 ).