Extensiones de programación lógica – 21/11/2011 – Ejercicios 1) Encontrar todos los modelos minimales de los siguiente programa lógico: a) p(a,Y) not q(Y) q(Y) p(X,a), not r(X) r(X) p(X,a) Solución Base de Herbrand: {p(a,a), q(a), r(a)}. 8 posibles modelos: I={}. No es modelo por la primera cláusula. Su única instancia es p(a,a)not q(a). Dado que not q(a) se cumple en I, debería estar también p(a,a), pero esto no sucede. I={r(a)}: Igual que el caso anterior. I={p(a,a)}: La primera cláusula es válida en esta interpretación. Para la segunda tenemos la instancia q(a) p(a,a), not r(a). Como tanto p(a,a) como r(a) se cumplen se debería tener q(a), pero esto no sucede. No es modelo. I={q(a)} La primera cláusula se cumple porque not(q(a)) es falso. La segunda también, porque la cabeza q(a) también. Finalmente la tercera se cumple porque p(a,a) no se cumple. Es un modelo y es minimal porque el único más pequeño es el vacío, que no es modelo. I={q(a),p(a,a)} : No nos vale, aunque fuera modelo no sería minimal. I={q(a),p(a,a),r(a)}: Igual que el anterior, no puede ser minimal. I={q(a),r(a)}: Análogo a los dos anteriores. I={p(a,a),r(a)}: La primera cláusula se cumple por cumplirse p(a,a). La segunda también por no cumplirse not(r(a)), lo que hace el cuerpo falso. Finalmente la tercera también se cumple por tenerse r(a). Se trata de un modelo minimal porque no contiene ningún modelo. b) p(a,Y) not q(Y), s(Y) q(Y) not r(X) r(X) s(a) s(a). s(X) r(X) Solución Base de Herbrand: {p(a,a), q(a), r(a),s(a)}. 16 posibles modelos. Sin embargo vemos que para que se cumpla la cláusula 4, tenemos que la interpretación debe incluir s(a), lo que reduce a 8 las interpretaciones que se deben mirar. Además, como se tendrá s(a), la instancia r(a)s(a) de la tercera cláusula solo se cumplirá si se tiene r(a). Ya solo tenemos 4 posibilidades: I={r(a), s(a)}: La primera cláusula no se cumple, ya que en su única instancia p(a,a)not q(a), s(a), tenemos que tanto not(q(a)), como s(a) se cumplen, por lo que debería tenerse p(a,a), que no está en I. I={r(a),s(a),p(a,a)}: la primera cláusula se cumple por estar la cabeza p(a,a). La segunda también porque not(r(a)) no se cumple. También son ciertas la tercera, la cuarta y la quinta. Es un modelo minimal porque no contiene otro menor. I={r(a),s(a),q(a)}. Se comprueba de forma análoga que es otro modelo mínimal. 2) ¿Es alguno de los programas anteriores estratificable? Justifica la respuesta. Si alguno lo es: a) Define una estratificación b) Aplica a la estratificación de a) el operador de consecuencias inmediatas visto en clase para obtener el modelo estable del programa. Solución a) El primero no lo es porque p depende negativamente de q, y q depende de p, lo que da un ciclo de dependencias con un arco negativo. b) El segundo sí lo es. Estratificación: p q r,s Ahora utilizamos el operador de consecuencias inmediatas en cada estrato, empezando por el inferior. 1.‐ Partimos de I={}, consideramos el primer estrato, que contiene: r(X) s(a) s(a). s(X) r(X) Tenemos entonces TP1({}) = {s(a)}, TP1({s(a)}) = {s(a),r(a)}, TP1({s(a),r(a)}) = {s(a),r(a)}. Por tanto M1 = {s(a),r(a)}. 2. Ahora partimos de M1 y utilizamos P2 = {q(X) not r(Y)}. Al aplicar el operador obtenemos el vacío, por lo que M2 = M1. 3. Ahora tenemos P3 = { p(a,Y) not q(Y), s(Y) }. Aplicando el operador obtenemos M3 = M2 U {p(a,a)} = M3 = {s(a),r(a),p(a,a)} que es el modelo estable de este programa. Obsérvese que es uno de los modelos minimales del ejercicio 1 para este programa, (el otro no tiene soporte). 3) Dado los Answer Sets de los siguientes programas en Answer Set Programming a) { p;q, pq, qp} b) {p not not p} Para cada Answer Set indica cuál es el programa reducido. Solución a) Solo 4 posibilidades: {}, {p}, {q} y {p,q}. En todos los casos nos queda el mismo programa como programa reducido, por lo que se trata simplemente de encontrar los modelos minimales como en el ejercicio 1. {}. Y el vacío no es modelo mínimal de este programa (ni siquiera es modelo por no cumplir p;q). {p} cumple p;q, pero no qp. {q} no cumple pq Finalmente {p,q} cumple las 3, es el único answer set de este programa. b) Solo 2 posibilidades: {}, {p} {}. El programa reducido queda: not p se transforma en T, por lo que not not(p) se transforma en F. Queda entonces: pfalse. Y {} es un modelo mínimo para {pfalse}. {p}. El programa reducido queda: p true. Y {p} es modelo mínimo para este programa. Por tanto nos salen dos answer sets: {} y {p}. Observación: incumple esto la propiedad antichain? No, porque esta propiedad solo valía para programas tipo 2, donde el cuerpo podía ser un literal o un literal negado. Y la doble negación de este programa lo incluye en los de tipo 3. Tiempo: 60 minutos