Diferencia entre revisiones de «Relación 1»
De Lógica computacional y teoría de modelos (2019-20)
(No se muestran 31 ediciones intermedias de 6 usuarios) | |||
Línea 1: | Línea 1: | ||
<source lang = "prolog"> | <source lang = "prolog"> | ||
− | |||
% Ejercicio 1. Calcular los conjuntos de respuesta del siguiente | % Ejercicio 1. Calcular los conjuntos de respuesta del siguiente | ||
Línea 9: | Línea 8: | ||
+ | % Solución: | ||
+ | |||
+ | |||
+ | % jescammor1 | ||
+ | % S_1={q, -p} Si escogemos q entre (p, q, r) , tenemos que s no pertenece al conjunto y | ||
+ | % por la segunda regla debemos introducir -p. | ||
+ | % S_2={r, -p} Si escogemos r entre (p, q, r) , tenemos que s no pertenece al conjunto y | ||
+ | % por la segunda regla debemos introducir -p. | ||
+ | % S_3={p, ...} Escoger p nos lleva a contradicción con la segunda regla. Como S_1 y S_2 eran minimales, | ||
+ | % ya hemos estudiado todos los casos posibles. | ||
+ | % Consulta p: No, puesto que -p aparece en todos los conjuntos de respuesta (S_1, S_2). | ||
+ | % Consulta q: Desconodido, puesto que S_2 no lo contiene ni a el, ni a su complementario. | ||
+ | |||
+ | %xinwu2 | ||
+ | %como no hay ningún s pertenece este conjunto,por eso -p tiene que pertenecer este conjunto para la regla2. | ||
+ | %para la regla1, sií cogemos p, este respuesta {p, -p} no satisface consistencia. | ||
+ | %por eso,tenemos dos respuestas: S_1={q, -p} y S_2={r, -p} | ||
+ | %consulta p: no es la consulta,no puede satisfacer S_2 y S_3. | ||
+ | %consulta q: desconocido. | ||
+ | |||
+ | |||
+ | %anabermar1 y gemtermej. | ||
+ | |||
+ | % La primera regla es una disyunción por lo que tenemos como posibles conjuntos de respuestas: | ||
+ | %S_1={p,...} | ||
+ | %S_2={q,...} | ||
+ | %S_3={r,...} | ||
+ | %La segunda regla nos dice que si no tenemos la certeza de creer s entonces -p, por lo que debemos añadir la cabeza de %esta regla a los tres conjuntos posibles anteriores. Por tanto, los modelos posibles del programa P son: | ||
+ | %S_1={p,-p} | ||
+ | %S_2={q,-p} | ||
+ | %S_3={r,-p} | ||
+ | %Veamos si estos conjuntos son respuesta del programa. | ||
+ | %S_1 NO es conjunto pues es inconsistente. | ||
+ | %S_2 cumple ambas reglas, es consistente y es minimal (pues si quitamos algún literal dejaría de ser modelo). Por lo %que es modelo del programa de P. | ||
+ | %S_3 también verifica que es modelo de P. | ||
+ | %En conclusión, tenemos dos conjuntos de respuestas S_2={q,-p} | ||
+ | %S_3={r,-p}. | ||
+ | %Veamos las consultas: | ||
+ | %¿p?, No es consulta de P, pues -p pertenece a todo S_i, i=2,3, modelo del programa. | ||
+ | %¿q?, No se sabe, pues q no pertenece a todo S_i, i=2,3, modelo ni -q pertenece a todo S_i, i =2,3. | ||
− | + | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
− | + | % Ejercicio 2: Calcular los conjuntos de respuesta del siguiente | |
+ | % programa: | ||
+ | p :- not q. | ||
+ | q :- not p. | ||
+ | r :- not s. | ||
+ | s :- not r. | ||
+ | -s :- q. | ||
− | + | % Solución: | |
− | + | % jescammor1 | |
− | -- | + | % A priori las reglas 1 y 2 no nos restrigen en p y q. |
+ | % Supongamos que tenemos p en nuestro conjunto de respuesta, entonces q no puede estar en el conjunto. Esto elimina la acción de la quinta regla. Por las reglas 3 y 4 volvemos a no estar restringidos entre elegir r o s. Así pues, obtenemos dos conjuntos S_1={p, s} y S_2={p, r}. | ||
+ | % Si en lugar de p escogemos q, la cosa cambia ligeramente. Por la quinta regla nos vemos obligados a introducir -s en el conjunto de respuesta. Esto hace que s no esté en dicho conjunto, para que sea consistente, por lo que la regla 3 nos obliga a introducir tambien a r. El conjunto quedaria como S_3={q, -s, r}. | ||
− | + | %xinwu2 | |
+ | %como regla5, tenemos tres elegidos, podemos coger -s, o podemos coger q y -s, o no cogemos -s u q. | ||
+ | %si S_1 solo con -s, q no pertenece este respuesta, tenemos coger p para las regla 1 y 2, y s no puede pertenece este respuesta, final S_1={-s, p, r} | ||
+ | %si S_2 contiene -s y q, no hace falta coger p, final S_2={-s, q, r} | ||
+ | %si S_3 no contiene -s u q, tenemos que coger p para las reglas 1 y 2,y con r o s. | ||
+ | %pues S_3={p, r}, S_4={p, s} | ||
+ | %comparamos S_1,S_2,S_3,S_4,y S_1, S_2 no satisfacen la principal minimal, finalmente %S_3={p, r}, S_4={p, s} son las respuestas. | ||
+ | % anabermar1 y gemtermej | ||
+ | % Los candidatos a conjuntos de respuesta tienen que contener los hechos, en este caso no hay ningún hecho. | ||
+ | % Los posibles literales sustentados son: {p,q,r,s,-s}. Teniendo en cuenta estos literales, se tiene que s y -s no pueden pertenecer a la vez al conjunto de respuesta, ya que sería un conjunto inconsistente. | ||
+ | % Atendiendo a la regla 1 y 2, se tiene que p y q no pueden pertenecer al conjunto de respuesta al mismo tiempo. Lo mismo ocurre con r y s, fijándonos en este caso en las reglas 3 y 4. | ||
+ | % Por tanto, los conjuntos de respuesta que satisfacen todas las reglas son: | ||
+ | %S1= {p,r} | ||
+ | %S2= {q,r,-s} | ||
+ | %S3 = {p,s} | ||
− | |||
− | |||
− | |||
− | + | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
+ | % Ejercicio 3: Dado el programa /P/ y el conjunto S = {p(c)}, obtener el | ||
+ | % programa /P^S/ y decidir si S es un conjunto de respuesta de /P/. | ||
+ | |||
+ | p(a) :- not p(b). | ||
+ | p(b) :- not p(c). | ||
+ | p(c) :- not p(a). | ||
+ | % Solución: | ||
+ | % jescammor1 | ||
+ | % Si obligamos a que se cumple S visto como regla "p(c)." la regla 2 deja de ser útil. | ||
+ | % La primera regla nos indica que hemos de añadir p(a) a nuestro conjunto de respuesta y | ||
+ | % anularía a su vez la tercera regla. Puesto que este conjunto de respuesta | ||
+ | % {p(c), p(a)} contiene al conjunto S, S no puede ser conjunto de respuesta porque | ||
+ | % dejaria de ser minimal. | ||
− | + | %xinwu2 | |
− | + | %sobre el programa P^S, porque S = {p(c)}, tenemos que quitar la regla 2, y también tenemos que quitar not p(b) o not p(a). | |
− | + | %el programa P^S es | |
+ | %p(a) | ||
+ | %p(c) | ||
+ | %la respueta del programa solo es S_1={p(a), p(c)}, y por eso, S no es un conjunto de respuesta de P. | ||
− | + | %anabermar1 y gemtermej. | |
+ | %Calculemos el reducto del programa P con respecto a S={p(c)}. | ||
+ | % De la primera regla eliminamos solo la premisa que contiene el not, pues p(b) no pertenece al conjunto S. | ||
+ | % La segunda regla la eliminamos por completo ya que p(c) está en S. | ||
+ | % De la tercera regla eliminamos solo la premisa que contiene not (p(a) no está en S. | ||
+ | %Por tanto el reducto es: | ||
+ | %p(a). | ||
+ | %p(c). | ||
+ | %S no es modelo de P^S (pues falta el hecho p(a)), entonces S no es modelo de P | ||
− | + | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
− | |||
− | |||
− | + | % Ejercicio 4: Calcular los conjuntos de respuesta del siguiente | |
+ | % programa /P/ y responder a las consultas siguientes: ¿s(a)?, ¿r(a)?, | ||
+ | % ¿s(b)?, ¿q(b)? | ||
+ | -s(a). | ||
+ | p(X) :- not q(X), -s(X). | ||
+ | q(X) :- not p(X). | ||
+ | r(X) :- p(X). | ||
+ | r(X) :- q(X). | ||
− | ---- | + | % Solución: |
− | '' | + | % jescammor1 |
− | + | % -s(a) lo añadimos a todos los posibles conjuntos de respuesta. | |
+ | % Si no añadimos q(a), aplica la regla 2 y nos vemos obligados a introducir p(a). | ||
+ | %% La regla 3 ya no influye, no así la 4, que nos añade r(a). | ||
+ | %% S_1={-s(a), p(a), r(a)}. | ||
+ | % Si pasamos directamente a la regla 3, podemos añadir q(a), que anula la regla 2. | ||
+ | %% La cuarta regla no aplica, puesto que seguimos sin saber nada de p(a). | ||
+ | %% La última regla si nos añadiría un r(a). | ||
+ | %% S_2={-s(a), q(a), r(a)} | ||
+ | % Esto sería sin contar que tenemos un segundo literal b. Este estudio lo podemos | ||
+ | % hacer reparado eliminando la primera regla. | ||
+ | %% La regla 2 no aplica para b porque no sabemos nada de -s(b). | ||
+ | %% La regla 3 si es útil, porque de momento no sabemos nada de b o en este caso p(b). | ||
+ | % Así que debemos añadir q(b) a todos nuestros conjuntos de respuesta. | ||
+ | %% Como vimos antes, si tenemos q(b) también tendremos r(b). | ||
+ | %% En conclusión los conjuntos de respuesta finales son S'_1={-s(a), p(a), r(a), q(b), r(b)} y | ||
+ | % S'_2={-s(a), q(a), r(a), q(b), r(b)}. | ||
+ | % Consulta s(a): No, porque aparece en ambos conjuntos negado | ||
+ | % Consulta r(a): Si, porque aparece en ambos conjuntos | ||
+ | % Consulta s(b): Desconocido, porque no aparece en ninguno | ||
+ | % Consulta q(b): Si, porque aparece en ambos | ||
− | + | %xinwu2 | |
+ | %todos los conjuntos incluen -s(a) | ||
+ | %programa p puede expresar como | ||
+ | %-s(a). | ||
+ | %p(a) ;- not q(a), -s(a). | ||
+ | %q(a) :- not p(a). | ||
+ | %r(a) :- p(a). | ||
+ | %r(a) :- q(a). | ||
+ | %final tenemos la respuesta S_1={-s(a), p(a), r(a)},tenemos que escoger la cabeza de | ||
+ | % la regla 2, porque he escogido s(a), y con p(a),r(a) la cabeza tiene que estar en | ||
+ | % el conjunto, y también ha satisfacido la regla 4. | ||
+ | %s(a), no es la consulta. | ||
+ | %r(a), si, es %la consulta. | ||
+ | %si añadimos b, el programa cambia como | ||
+ | %-s(a). | ||
+ | %p(b) ;- not q(b), -s(b). | ||
+ | %q(b) :- not p(b). | ||
+ | %r(b) :- p(b). | ||
+ | %r(b) :- q(b). | ||
+ | %tenemos que elegir -s(a),podemos elegir p(b) para satisfacer la cabeza de regla 2, | ||
+ | % con r(b) para la regla 4 y 5. | ||
+ | %S_1={s(a), q(b), r(b)},o S_2={s(a), p(b), r(b)},S_3={-s(a), p(b), r(b)} | ||
+ | %s(b),no es la consulta. | ||
+ | %q(b),desconocido, q(b) consiste en S_1,pero sin S_2 o S_3. | ||
− | |||
− | |||
− | |||
− | |||
+ | % anabermar1 y gemtermej. | ||
+ | % El programa con la constante a sería: | ||
+ | % -s(a). | ||
+ | % p(a) ;- not q(a), -s(a). | ||
+ | % q(a) :- not p(a). | ||
+ | % r(a) :- p(a). | ||
+ | % r(a) :- q(a). | ||
+ | % Los candidatos a conjuntos de respuesta tienen que contener los hechos, en este caso: -s(a). | ||
+ | % Los posibles literales sustentados son: {p(a), q(a), r(a)}. Por tanto, los posibles candidatos a modelo son los siguientes: | ||
+ | % S1 = {-s(a), p(a)} | ||
+ | % S2 = {-s(a), q(a)} | ||
+ | % S3 = {-s(a), r(a)} | ||
+ | % S4 = {-s(a), p(a), q(a)} | ||
+ | % S5 = {-s(a), p(a), r(a)} | ||
+ | % S6 ={-s(a), q(a), r(a)} | ||
+ | % S7 ={-s(a), p(a), q(a), r(a)} | ||
+ | % S8 ={-s(a)} | ||
− | + | % Los conjuntos de respuesta que satisface todas las reglas son: S5 y S6. | |
− | + | % Veamos las consultas: | |
− | + | % ¿s(a)?, No es consulta de P, pues -s(a) pertenece a todo S_i, i=5,6, modelo del programa. | |
− | + | % ¿r(a)?, Sí es consulta de P, pues r(a) pertenece a todo S_i, i=5,6, modelo del programa. | |
− | |||
− | |||
− | |||
− | |||
− | + | % Si añadimos la constante b al programa P, nos queda: | |
− | + | % -s(a). | |
+ | % p(a) ;- not q(a), -s(a). | ||
+ | % q(a) :- not p(a). | ||
+ | % r(a) :- p(a). | ||
+ | % r(a) :- q(a). | ||
+ | % p(b) ;- not q(b), -s(b). | ||
+ | % q(b) :- not p(b). | ||
+ | % r(b) :- p(b). | ||
+ | % r(b) :- q(b). | ||
− | + | % Los nuevos conjuntos de respuesta son: | |
− | p(a) | + | % S = {-s(a), p(a), r(a), q(b), r(b)} |
− | + | % S' ={-s(a), q(a), r(a), q(b), r(b)} | |
− | + | % es decir, añadiendo q(b) y r(b) a S5 y S8. | |
− | + | % Veamos las consultas en este caso: | |
+ | % ¿s(b)? No se sabe. | ||
+ | % ¿q(b)? Sí es consulta de P, porque q(b) pertenece a S y S'. | ||
− | |||
− | |||
− | |||
− | + | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | % Ejercicio 5:Calcular los conjuntos de respuesta del siguiente | |
− | programa /P/ y responder a las consultas siguientes: ¿q(a)?, ¿r(a)?, | + | % programa /P/ y responder a las consultas siguientes: ¿q(a)?, ¿r(a)?, |
− | ¿q(b)?, ¿r(b)? | + | % ¿q(b)?, ¿r(b)? |
− | |||
p(a), -p(b). | p(a), -p(b). | ||
q(X) :- -p(X). | q(X) :- -p(X). | ||
-q(X) :- not q(X). | -q(X) :- not q(X). | ||
r(X) :- not p(X). | r(X) :- not p(X). | ||
− | |||
+ | % Solución: | ||
+ | |||
+ | %xinwu2 | ||
+ | %cambiamos x en a o b, tenemos 8 programas. | ||
+ | %p(a), -p(b). | ||
+ | %q(a) :- -p(a). o q(b) :- -p(b). | ||
+ | %-q(a) :- not q(a). o -q(b) :- not q(b). | ||
+ | %r(a) :- not p(a). o r(b) :- not p(b). | ||
+ | %al principio, tenemos que elegir p(a) o -p(b) | ||
+ | %con p(a),satisface la regla 2, y podemos elegir q(a) o -q(a) para satisfacer regla3, | ||
+ | % y p(a) puede satisfacer r(a) :- not p(a). por eso, tenemos S_1={p(a), q(a)(o q(b))}, | ||
+ | % S_2={p(a), -q(a)(o -q(b))} y si añadimos otro elemento, no satisface el principal minimal. | ||
+ | %con -p(b), puede satisface esta regla2 q(a) :- -p(a),lo mismo con arriba,y pero tenemos | ||
+ | % que elegir r(b) para regla 4, o añade r(a) o más. | ||
+ | %finalmente, tenemos S_1={p(a), q(a)(o q(b))}, S_2={p(a), -q(a)(o -q(b))} | ||
+ | %q(a) y q(b) son las consultas, y r(a) y r(b) no son las consultas. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | % anabermar1 y gemtermej | ||
+ | % Los candidatos a conjuntos de respuesta tienen que contener los hechos, en este caso p(a) ó -p(b). | ||
+ | % Los posibles literales sustentados son: {q(a), -q(a), r(a), q(b), -q(b), r(b)}. Teniendo en cuenta estos literales, se tiene que q(a) y -q(a) no pueden pertenecer a la vez al conjunto de respuesta, ya que sería un conjunto inconsistente. Lo mismo ocurre con q(b) y -q(b). | ||
+ | % Por tanto, los modelos que satisfacen todas las reglas son los siguientes: | ||
+ | % S1 = {p(a), -q(a), -q(b), r(b)} | ||
+ | % S2 = {-p(b), q(b), r(b), -q(a), r(a)} | ||
+ | |||
+ | % Veamos las consultas: | ||
+ | % ¿q(a)?, No es consulta de P, pues -q(a) pertenece a todo S_i, i=1,2, modelo del programa. | ||
+ | % ¿r(a)? No se sabe. | ||
+ | % ¿q(b)? No se sabe. | ||
+ | % ¿r(b)?, Sí es consulta de P, pues r(b) pertenece a todo S_i, i=1,2, modelo del programa. | ||
+ | |||
+ | |||
+ | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
+ | |||
+ | % Ejercicio 6: Calcular los conjuntos de respuesta del siguiente | ||
+ | % programa /P/ y responder a las consultas siguientes: ¿p(b)?,¿q(b)?, ¿r(b)? | ||
− | |||
− | |||
− | |||
p(X),q(X) :- not r(X). | p(X),q(X) :- not r(X). | ||
-p(X) :- h(X), not r(X). | -p(X) :- h(X), not r(X). | ||
Línea 114: | Línea 288: | ||
h(b). | h(b). | ||
r(a). | r(a). | ||
− | |||
− | + | % Solución | |
− | juguetes para sus hijos, los niños de Juan no recibirán juguetes por | + | |
− | + | %xinwu2 | |
− | no les comprará juguetes. Los niños de Juan reciben juguetes por | + | %tenemos 4 programas total, |
− | Reyes". Supongamos que la interpretación de esta historia implica que | + | %p(a),q(a) :- not r(a). |
− | los hijos de Jim escribieron las cartas a los Reyes. | + | %-p(a) :- h(a), not r(a). O -p(b) :- h(b), not r(b). |
− | + Modelizar esta historia como un programa ASP y calcular los | + | %h(a). |
− | conjuntos de respuesta, usando la disyunción para representar la ley | + | %h(b). |
− | del tercio excluso. | + | %r(a). |
− | + Modelizar esta historia en un programa ASP y calcular los conjuntos | + | %En cualquiere caso, tenemos que tener S={h(a), h(b), r(a)}, S puede satisfacer la regla 1, |
− | de respuesta esta vez haciendo explícito el contrapositivo para cada | + | % pero tiene que añadir -p(a) para la regla 2, o añadir -p(b). {h(a), h(b), r(a), -h(a)} |
− | afirmación. | + | % no satisface consiente,Por lo tanto, S_1={h(a), h(b), r(a),-p(a)}, S_2={h(a), h(b), r(a), -p(b)}. |
+ | %En otro caso | ||
+ | %p(b),q(b) :- not r(b). | ||
+ | %-p(a) :- h(a), not r(a). O -p(b) :- h(b), not r(b). | ||
+ | %h(a). | ||
+ | %h(b). | ||
+ | %r(a). | ||
+ | %En cualquiere caso, tenemos que tener S={h(a), h(b), r(a)}, y añadir otros elementos | ||
+ | % no satisfacen consiente o no satisface el principal minimal. | ||
+ | %S_1={h(a), h(b), r(a),-p(a)}, S_2={h(a), h(b), r(a), -p(b)} | ||
+ | %r(b), p(b) o q(b) no son las consultas. | ||
+ | |||
+ | %anabermar1 y gemtermej | ||
+ | %Tenemos 3 hechos por lo que el conjunto de respuestas los contendrá a estos tres, es decir, S={h(a),h(b),r(a),...} | ||
+ | % Las dos primeras reglas no se ejecutan nunca pues r(a) es un hecho y estará en el conjunto de respuestas. | ||
+ | % Los posibles sustentados son: p(b), q(b) y -p(b). | ||
+ | %Los posibles conjuntos de respuesta son: | ||
+ | % S_1={h(a),h(b),r(a),p(b),-p(b)} | ||
+ | % S_2={h(a),h(b),r(a),q(b),-p(b)} | ||
+ | %El primero no es modelo pues es inconsistente. | ||
+ | %El segundo es modelo del programa pues satisface todas las reglas, es minimal( al quitar un literal, dejaría de ser modelo) y es consistente. | ||
+ | %Vemos las consultas: | ||
+ | %¿p(b)?,No es consulta pues -p(b) pertenece a nuestro único modelo. | ||
+ | %¿q(b)?,Si, pues pertenece a S_2. | ||
+ | %¿r(b)?, No se sabe, ya que ni r(b) ni -r(b) pertenece al conjunto de respuestas. | ||
+ | |||
+ | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
+ | |||
+ | % Ejercicio 7: Consideremos la siguiente situación: "Si Juan no compra | ||
+ | % juguetes para sus hijos, los niños de Juan no recibirán juguetes por Reyes. | ||
+ | % Si los hijos de Juan no escriben sus cartas a los Reyes, Juan | ||
+ | % no les comprará juguetes. Los niños de Juan reciben juguetes por | ||
+ | % Reyes". Supongamos que la interpretación de esta historia implica que | ||
+ | % los hijos de Jim escribieron las cartas a los Reyes. | ||
+ | % + Modelizar esta historia como un programa ASP y calcular los | ||
+ | % conjuntos de respuesta, usando la disyunción para representar la ley | ||
+ | % del tercio excluso. | ||
+ | % + Modelizar esta historia en un programa ASP y calcular los conjuntos | ||
+ | % de respuesta esta vez haciendo explícito el contrapositivo para cada | ||
+ | % afirmación. | ||
+ | |||
+ | % Solución: | ||
+ | |||
+ | %xinwu2 | ||
+ | %Sea a = Juan compra juguetes para sus hijos, | ||
+ | % b = los niños de Juan recibirán juguetes por Reyes, | ||
+ | % c = los hijos de Juan escriben sus cartas a los Reyes | ||
+ | %por eso, podemos simplificar este frase a la programa p abajo: | ||
+ | %-p(b) :- not q(a) | ||
+ | %p(b) :- not r(c), not q(a) | ||
+ | %si elegimos q(a), puedo elegir p(b) para la regla 2, este no satisface consiente. O puedo elegir r(c) para la regla 2. | ||
+ | %la resulta es S_1={q(a), r(c)}. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | % anabermar1 y gemtermej | ||
+ | % Vamos a modelizar el programa teniendo en cuenta que tenemos dos constantes: Juan y los hijos de Juan, y tres predicados: comprar juguetes, recibir juguetes, escribir cartas. Demos nombre a cada una de ellas: | ||
+ | % Juan: a | ||
+ | % Hijos de Juan: b | ||
+ | % Comprar juguetes: p | ||
+ | % Recibir juguetes: q | ||
+ | % Escribir cartas: r | ||
+ | % El programa sería entonces el siguiente: | ||
+ | % -q(b) :- p(a). | ||
+ | % -p(a) :- -r(b). | ||
+ | % q(b). | ||
+ | % Veamos ahora el conjunto de respuesta: | ||
+ | % Los hechos tienen que pertenecer al conjunto de respuesta, en este caso q(b). | ||
+ | % Los posibles sustentados son -q(b) y -p(a). | ||
+ | % Los posibles conjuntos de respuesta son: S1={q(b)}, S2 = {q(b), -q(b)}, S3 = {q(b),-p(a)} y S4 = {q(b),- q(b), - p(a)}. | ||
+ | % El único conjunto de respuesta que satisface todas las reglas es S1= {q(b)}. | ||
+ | |||
</source> | </source> |
Revisión actual del 18:31 14 nov 2019
% Ejercicio 1. Calcular los conjuntos de respuesta del siguiente
% programa P y responder a las consultas siguientes: ¿p?, ¿q?
p, q, r.
¬p :- not s.
% Solución:
% jescammor1
% S_1={q, -p} Si escogemos q entre (p, q, r) , tenemos que s no pertenece al conjunto y
% por la segunda regla debemos introducir -p.
% S_2={r, -p} Si escogemos r entre (p, q, r) , tenemos que s no pertenece al conjunto y
% por la segunda regla debemos introducir -p.
% S_3={p, ...} Escoger p nos lleva a contradicción con la segunda regla. Como S_1 y S_2 eran minimales,
% ya hemos estudiado todos los casos posibles.
% Consulta p: No, puesto que -p aparece en todos los conjuntos de respuesta (S_1, S_2).
% Consulta q: Desconodido, puesto que S_2 no lo contiene ni a el, ni a su complementario.
%xinwu2
%como no hay ningún s pertenece este conjunto,por eso -p tiene que pertenecer este conjunto para la regla2.
%para la regla1, sií cogemos p, este respuesta {p, -p} no satisface consistencia.
%por eso,tenemos dos respuestas: S_1={q, -p} y S_2={r, -p}
%consulta p: no es la consulta,no puede satisfacer S_2 y S_3.
%consulta q: desconocido.
%anabermar1 y gemtermej.
% La primera regla es una disyunción por lo que tenemos como posibles conjuntos de respuestas:
%S_1={p,...}
%S_2={q,...}
%S_3={r,...}
%La segunda regla nos dice que si no tenemos la certeza de creer s entonces -p, por lo que debemos añadir la cabeza de %esta regla a los tres conjuntos posibles anteriores. Por tanto, los modelos posibles del programa P son:
%S_1={p,-p}
%S_2={q,-p}
%S_3={r,-p}
%Veamos si estos conjuntos son respuesta del programa.
%S_1 NO es conjunto pues es inconsistente.
%S_2 cumple ambas reglas, es consistente y es minimal (pues si quitamos algún literal dejaría de ser modelo). Por lo %que es modelo del programa de P.
%S_3 también verifica que es modelo de P.
%En conclusión, tenemos dos conjuntos de respuestas S_2={q,-p}
%S_3={r,-p}.
%Veamos las consultas:
%¿p?, No es consulta de P, pues -p pertenece a todo S_i, i=2,3, modelo del programa.
%¿q?, No se sabe, pues q no pertenece a todo S_i, i=2,3, modelo ni -q pertenece a todo S_i, i =2,3.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Ejercicio 2: Calcular los conjuntos de respuesta del siguiente
% programa:
p :- not q.
q :- not p.
r :- not s.
s :- not r.
-s :- q.
% Solución:
% jescammor1
% A priori las reglas 1 y 2 no nos restrigen en p y q.
% Supongamos que tenemos p en nuestro conjunto de respuesta, entonces q no puede estar en el conjunto. Esto elimina la acción de la quinta regla. Por las reglas 3 y 4 volvemos a no estar restringidos entre elegir r o s. Así pues, obtenemos dos conjuntos S_1={p, s} y S_2={p, r}.
% Si en lugar de p escogemos q, la cosa cambia ligeramente. Por la quinta regla nos vemos obligados a introducir -s en el conjunto de respuesta. Esto hace que s no esté en dicho conjunto, para que sea consistente, por lo que la regla 3 nos obliga a introducir tambien a r. El conjunto quedaria como S_3={q, -s, r}.
%xinwu2
%como regla5, tenemos tres elegidos, podemos coger -s, o podemos coger q y -s, o no cogemos -s u q.
%si S_1 solo con -s, q no pertenece este respuesta, tenemos coger p para las regla 1 y 2, y s no puede pertenece este respuesta, final S_1={-s, p, r}
%si S_2 contiene -s y q, no hace falta coger p, final S_2={-s, q, r}
%si S_3 no contiene -s u q, tenemos que coger p para las reglas 1 y 2,y con r o s.
%pues S_3={p, r}, S_4={p, s}
%comparamos S_1,S_2,S_3,S_4,y S_1, S_2 no satisfacen la principal minimal, finalmente %S_3={p, r}, S_4={p, s} son las respuestas.
% anabermar1 y gemtermej
% Los candidatos a conjuntos de respuesta tienen que contener los hechos, en este caso no hay ningún hecho.
% Los posibles literales sustentados son: {p,q,r,s,-s}. Teniendo en cuenta estos literales, se tiene que s y -s no pueden pertenecer a la vez al conjunto de respuesta, ya que sería un conjunto inconsistente.
% Atendiendo a la regla 1 y 2, se tiene que p y q no pueden pertenecer al conjunto de respuesta al mismo tiempo. Lo mismo ocurre con r y s, fijándonos en este caso en las reglas 3 y 4.
% Por tanto, los conjuntos de respuesta que satisfacen todas las reglas son:
%S1= {p,r}
%S2= {q,r,-s}
%S3 = {p,s}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Ejercicio 3: Dado el programa /P/ y el conjunto S = {p(c)}, obtener el
% programa /P^S/ y decidir si S es un conjunto de respuesta de /P/.
p(a) :- not p(b).
p(b) :- not p(c).
p(c) :- not p(a).
% Solución:
% jescammor1
% Si obligamos a que se cumple S visto como regla "p(c)." la regla 2 deja de ser útil.
% La primera regla nos indica que hemos de añadir p(a) a nuestro conjunto de respuesta y
% anularía a su vez la tercera regla. Puesto que este conjunto de respuesta
% {p(c), p(a)} contiene al conjunto S, S no puede ser conjunto de respuesta porque
% dejaria de ser minimal.
%xinwu2
%sobre el programa P^S, porque S = {p(c)}, tenemos que quitar la regla 2, y también tenemos que quitar not p(b) o not p(a).
%el programa P^S es
%p(a)
%p(c)
%la respueta del programa solo es S_1={p(a), p(c)}, y por eso, S no es un conjunto de respuesta de P.
%anabermar1 y gemtermej.
%Calculemos el reducto del programa P con respecto a S={p(c)}.
% De la primera regla eliminamos solo la premisa que contiene el not, pues p(b) no pertenece al conjunto S.
% La segunda regla la eliminamos por completo ya que p(c) está en S.
% De la tercera regla eliminamos solo la premisa que contiene not (p(a) no está en S.
%Por tanto el reducto es:
%p(a).
%p(c).
%S no es modelo de P^S (pues falta el hecho p(a)), entonces S no es modelo de P
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Ejercicio 4: Calcular los conjuntos de respuesta del siguiente
% programa /P/ y responder a las consultas siguientes: ¿s(a)?, ¿r(a)?,
% ¿s(b)?, ¿q(b)?
-s(a).
p(X) :- not q(X), -s(X).
q(X) :- not p(X).
r(X) :- p(X).
r(X) :- q(X).
% Solución:
% jescammor1
% -s(a) lo añadimos a todos los posibles conjuntos de respuesta.
% Si no añadimos q(a), aplica la regla 2 y nos vemos obligados a introducir p(a).
%% La regla 3 ya no influye, no así la 4, que nos añade r(a).
%% S_1={-s(a), p(a), r(a)}.
% Si pasamos directamente a la regla 3, podemos añadir q(a), que anula la regla 2.
%% La cuarta regla no aplica, puesto que seguimos sin saber nada de p(a).
%% La última regla si nos añadiría un r(a).
%% S_2={-s(a), q(a), r(a)}
% Esto sería sin contar que tenemos un segundo literal b. Este estudio lo podemos
% hacer reparado eliminando la primera regla.
%% La regla 2 no aplica para b porque no sabemos nada de -s(b).
%% La regla 3 si es útil, porque de momento no sabemos nada de b o en este caso p(b).
% Así que debemos añadir q(b) a todos nuestros conjuntos de respuesta.
%% Como vimos antes, si tenemos q(b) también tendremos r(b).
%% En conclusión los conjuntos de respuesta finales son S'_1={-s(a), p(a), r(a), q(b), r(b)} y
% S'_2={-s(a), q(a), r(a), q(b), r(b)}.
% Consulta s(a): No, porque aparece en ambos conjuntos negado
% Consulta r(a): Si, porque aparece en ambos conjuntos
% Consulta s(b): Desconocido, porque no aparece en ninguno
% Consulta q(b): Si, porque aparece en ambos
%xinwu2
%todos los conjuntos incluen -s(a)
%programa p puede expresar como
%-s(a).
%p(a) ;- not q(a), -s(a).
%q(a) :- not p(a).
%r(a) :- p(a).
%r(a) :- q(a).
%final tenemos la respuesta S_1={-s(a), p(a), r(a)},tenemos que escoger la cabeza de
% la regla 2, porque he escogido s(a), y con p(a),r(a) la cabeza tiene que estar en
% el conjunto, y también ha satisfacido la regla 4.
%s(a), no es la consulta.
%r(a), si, es %la consulta.
%si añadimos b, el programa cambia como
%-s(a).
%p(b) ;- not q(b), -s(b).
%q(b) :- not p(b).
%r(b) :- p(b).
%r(b) :- q(b).
%tenemos que elegir -s(a),podemos elegir p(b) para satisfacer la cabeza de regla 2,
% con r(b) para la regla 4 y 5.
%S_1={s(a), q(b), r(b)},o S_2={s(a), p(b), r(b)},S_3={-s(a), p(b), r(b)}
%s(b),no es la consulta.
%q(b),desconocido, q(b) consiste en S_1,pero sin S_2 o S_3.
% anabermar1 y gemtermej.
% El programa con la constante a sería:
% -s(a).
% p(a) ;- not q(a), -s(a).
% q(a) :- not p(a).
% r(a) :- p(a).
% r(a) :- q(a).
% Los candidatos a conjuntos de respuesta tienen que contener los hechos, en este caso: -s(a).
% Los posibles literales sustentados son: {p(a), q(a), r(a)}. Por tanto, los posibles candidatos a modelo son los siguientes:
% S1 = {-s(a), p(a)}
% S2 = {-s(a), q(a)}
% S3 = {-s(a), r(a)}
% S4 = {-s(a), p(a), q(a)}
% S5 = {-s(a), p(a), r(a)}
% S6 ={-s(a), q(a), r(a)}
% S7 ={-s(a), p(a), q(a), r(a)}
% S8 ={-s(a)}
% Los conjuntos de respuesta que satisface todas las reglas son: S5 y S6.
% Veamos las consultas:
% ¿s(a)?, No es consulta de P, pues -s(a) pertenece a todo S_i, i=5,6, modelo del programa.
% ¿r(a)?, Sí es consulta de P, pues r(a) pertenece a todo S_i, i=5,6, modelo del programa.
% Si añadimos la constante b al programa P, nos queda:
% -s(a).
% p(a) ;- not q(a), -s(a).
% q(a) :- not p(a).
% r(a) :- p(a).
% r(a) :- q(a).
% p(b) ;- not q(b), -s(b).
% q(b) :- not p(b).
% r(b) :- p(b).
% r(b) :- q(b).
% Los nuevos conjuntos de respuesta son:
% S = {-s(a), p(a), r(a), q(b), r(b)}
% S' ={-s(a), q(a), r(a), q(b), r(b)}
% es decir, añadiendo q(b) y r(b) a S5 y S8.
% Veamos las consultas en este caso:
% ¿s(b)? No se sabe.
% ¿q(b)? Sí es consulta de P, porque q(b) pertenece a S y S'.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Ejercicio 5:Calcular los conjuntos de respuesta del siguiente
% programa /P/ y responder a las consultas siguientes: ¿q(a)?, ¿r(a)?,
% ¿q(b)?, ¿r(b)?
p(a), -p(b).
q(X) :- -p(X).
-q(X) :- not q(X).
r(X) :- not p(X).
% Solución:
%xinwu2
%cambiamos x en a o b, tenemos 8 programas.
%p(a), -p(b).
%q(a) :- -p(a). o q(b) :- -p(b).
%-q(a) :- not q(a). o -q(b) :- not q(b).
%r(a) :- not p(a). o r(b) :- not p(b).
%al principio, tenemos que elegir p(a) o -p(b)
%con p(a),satisface la regla 2, y podemos elegir q(a) o -q(a) para satisfacer regla3,
% y p(a) puede satisfacer r(a) :- not p(a). por eso, tenemos S_1={p(a), q(a)(o q(b))},
% S_2={p(a), -q(a)(o -q(b))} y si añadimos otro elemento, no satisface el principal minimal.
%con -p(b), puede satisface esta regla2 q(a) :- -p(a),lo mismo con arriba,y pero tenemos
% que elegir r(b) para regla 4, o añade r(a) o más.
%finalmente, tenemos S_1={p(a), q(a)(o q(b))}, S_2={p(a), -q(a)(o -q(b))}
%q(a) y q(b) son las consultas, y r(a) y r(b) no son las consultas.
% anabermar1 y gemtermej
% Los candidatos a conjuntos de respuesta tienen que contener los hechos, en este caso p(a) ó -p(b).
% Los posibles literales sustentados son: {q(a), -q(a), r(a), q(b), -q(b), r(b)}. Teniendo en cuenta estos literales, se tiene que q(a) y -q(a) no pueden pertenecer a la vez al conjunto de respuesta, ya que sería un conjunto inconsistente. Lo mismo ocurre con q(b) y -q(b).
% Por tanto, los modelos que satisfacen todas las reglas son los siguientes:
% S1 = {p(a), -q(a), -q(b), r(b)}
% S2 = {-p(b), q(b), r(b), -q(a), r(a)}
% Veamos las consultas:
% ¿q(a)?, No es consulta de P, pues -q(a) pertenece a todo S_i, i=1,2, modelo del programa.
% ¿r(a)? No se sabe.
% ¿q(b)? No se sabe.
% ¿r(b)?, Sí es consulta de P, pues r(b) pertenece a todo S_i, i=1,2, modelo del programa.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Ejercicio 6: Calcular los conjuntos de respuesta del siguiente
% programa /P/ y responder a las consultas siguientes: ¿p(b)?,¿q(b)?, ¿r(b)?
p(X),q(X) :- not r(X).
-p(X) :- h(X), not r(X).
h(a).
h(b).
r(a).
% Solución
%xinwu2
%tenemos 4 programas total,
%p(a),q(a) :- not r(a).
%-p(a) :- h(a), not r(a). O -p(b) :- h(b), not r(b).
%h(a).
%h(b).
%r(a).
%En cualquiere caso, tenemos que tener S={h(a), h(b), r(a)}, S puede satisfacer la regla 1,
% pero tiene que añadir -p(a) para la regla 2, o añadir -p(b). {h(a), h(b), r(a), -h(a)}
% no satisface consiente,Por lo tanto, S_1={h(a), h(b), r(a),-p(a)}, S_2={h(a), h(b), r(a), -p(b)}.
%En otro caso
%p(b),q(b) :- not r(b).
%-p(a) :- h(a), not r(a). O -p(b) :- h(b), not r(b).
%h(a).
%h(b).
%r(a).
%En cualquiere caso, tenemos que tener S={h(a), h(b), r(a)}, y añadir otros elementos
% no satisfacen consiente o no satisface el principal minimal.
%S_1={h(a), h(b), r(a),-p(a)}, S_2={h(a), h(b), r(a), -p(b)}
%r(b), p(b) o q(b) no son las consultas.
%anabermar1 y gemtermej
%Tenemos 3 hechos por lo que el conjunto de respuestas los contendrá a estos tres, es decir, S={h(a),h(b),r(a),...}
% Las dos primeras reglas no se ejecutan nunca pues r(a) es un hecho y estará en el conjunto de respuestas.
% Los posibles sustentados son: p(b), q(b) y -p(b).
%Los posibles conjuntos de respuesta son:
% S_1={h(a),h(b),r(a),p(b),-p(b)}
% S_2={h(a),h(b),r(a),q(b),-p(b)}
%El primero no es modelo pues es inconsistente.
%El segundo es modelo del programa pues satisface todas las reglas, es minimal( al quitar un literal, dejaría de ser modelo) y es consistente.
%Vemos las consultas:
%¿p(b)?,No es consulta pues -p(b) pertenece a nuestro único modelo.
%¿q(b)?,Si, pues pertenece a S_2.
%¿r(b)?, No se sabe, ya que ni r(b) ni -r(b) pertenece al conjunto de respuestas.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Ejercicio 7: Consideremos la siguiente situación: "Si Juan no compra
% juguetes para sus hijos, los niños de Juan no recibirán juguetes por Reyes.
% Si los hijos de Juan no escriben sus cartas a los Reyes, Juan
% no les comprará juguetes. Los niños de Juan reciben juguetes por
% Reyes". Supongamos que la interpretación de esta historia implica que
% los hijos de Jim escribieron las cartas a los Reyes.
% + Modelizar esta historia como un programa ASP y calcular los
% conjuntos de respuesta, usando la disyunción para representar la ley
% del tercio excluso.
% + Modelizar esta historia en un programa ASP y calcular los conjuntos
% de respuesta esta vez haciendo explícito el contrapositivo para cada
% afirmación.
% Solución:
%xinwu2
%Sea a = Juan compra juguetes para sus hijos,
% b = los niños de Juan recibirán juguetes por Reyes,
% c = los hijos de Juan escriben sus cartas a los Reyes
%por eso, podemos simplificar este frase a la programa p abajo:
%-p(b) :- not q(a)
%p(b) :- not r(c), not q(a)
%si elegimos q(a), puedo elegir p(b) para la regla 2, este no satisface consiente. O puedo elegir r(c) para la regla 2.
%la resulta es S_1={q(a), r(c)}.
% anabermar1 y gemtermej
% Vamos a modelizar el programa teniendo en cuenta que tenemos dos constantes: Juan y los hijos de Juan, y tres predicados: comprar juguetes, recibir juguetes, escribir cartas. Demos nombre a cada una de ellas:
% Juan: a
% Hijos de Juan: b
% Comprar juguetes: p
% Recibir juguetes: q
% Escribir cartas: r
% El programa sería entonces el siguiente:
% -q(b) :- p(a).
% -p(a) :- -r(b).
% q(b).
% Veamos ahora el conjunto de respuesta:
% Los hechos tienen que pertenecer al conjunto de respuesta, en este caso q(b).
% Los posibles sustentados son -q(b) y -p(a).
% Los posibles conjuntos de respuesta son: S1={q(b)}, S2 = {q(b), -q(b)}, S3 = {q(b),-p(a)} y S4 = {q(b),- q(b), - p(a)}.
% El único conjunto de respuesta que satisface todas las reglas es S1= {q(b)}.