<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.glc.us.es/~jalonso/LCyTM2018/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jescammor1</id>
	<title>Lógica computacional y teoría de modelos (2019-20) - Contribuciones del usuario [es]</title>
	<link rel="self" type="application/atom+xml" href="https://www.glc.us.es/~jalonso/LCyTM2018/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jescammor1"/>
	<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LCyTM2018/index.php/Especial:Contribuciones/Jescammor1"/>
	<updated>2026-07-22T08:37:07Z</updated>
	<subtitle>Contribuciones del usuario</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LCyTM2018/index.php?title=Ejercicio_P1&amp;diff=236</id>
		<title>Ejercicio P1</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LCyTM2018/index.php?title=Ejercicio_P1&amp;diff=236"/>
		<updated>2020-01-26T21:55:38Z</updated>

		<summary type="html">&lt;p&gt;Jescammor1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang = &amp;quot;prolog&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%% Ejercicio de planificación: los siguientes predicados describen un&lt;br /&gt;
%% &amp;quot;mundo&amp;quot; que representa la acciones de una persona que compra&lt;br /&gt;
%% alimentos en supermercados.&lt;br /&gt;
&lt;br /&gt;
%% Consideremos el problema de planificación siguiente:&lt;br /&gt;
%% Contexto:&lt;br /&gt;
%%   (*) Tiendas: Mercadona vende café y Carrefour vende azúcar.&lt;br /&gt;
%%   (*) Una persona está en una ubicación, que puede ser su casa o una tienda.&lt;br /&gt;
%%   (*) Las acciones posibles son: ir, comprar.&lt;br /&gt;
%%   (*) Estado inicial: está en su casa, sin café ni azúcar.&lt;br /&gt;
%%   (*) Objetivo: tener café, azúcar y estar en casa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
%%% Solución (jescammor1) %%%&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#const n = 5.&lt;br /&gt;
paso(0..n).&lt;br /&gt;
&lt;br /&gt;
%% ----------&lt;br /&gt;
%% Signatura:&lt;br /&gt;
%% ----------&lt;br /&gt;
&lt;br /&gt;
% tienda(X): X es una tienda&lt;br /&gt;
% vende(X,Y): la tienda X vende el producto Y&lt;br /&gt;
% ubicación(X): X es una tienda o casa&lt;br /&gt;
% ir(X,Y): la persona va de X a Y &lt;br /&gt;
% comprar(X): la persona compra X &lt;br /&gt;
% posicion(X): la persona esta en la ubicación X (inercial)&lt;br /&gt;
% tiene(X): la persona tiene el producto X (inercial)&lt;br /&gt;
&lt;br /&gt;
%% ----------&lt;br /&gt;
%% Estáticos:&lt;br /&gt;
%% ----------&lt;br /&gt;
&lt;br /&gt;
tienda(mercadona; carrefour).&lt;br /&gt;
&lt;br /&gt;
vende(mercadona,cafe).&lt;br /&gt;
vende(carrefour,azucar).&lt;br /&gt;
&lt;br /&gt;
ubicacion(X):- tienda(X).&lt;br /&gt;
ubicacion(casa).&lt;br /&gt;
&lt;br /&gt;
producto(cafe; azucar).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%% ----------&lt;br /&gt;
%% Fluyentes:&lt;br /&gt;
%% ----------&lt;br /&gt;
&lt;br /&gt;
fluyente(inercia,posicion(X)) :- ubicacion(X).&lt;br /&gt;
&lt;br /&gt;
fluyente(inercia,tiene(Z)) :- producto(Z).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%% ---------&lt;br /&gt;
%% Acciones:&lt;br /&gt;
%% ---------&lt;br /&gt;
&lt;br /&gt;
accion(ir(X,Y)) :- ubicacion(X), ubicacion(Y),&lt;br /&gt;
					X!=Y.&lt;br /&gt;
&lt;br /&gt;
accion(compra(X)) :- producto(X).&lt;br /&gt;
&lt;br /&gt;
%% ------&lt;br /&gt;
%% Leyes:&lt;br /&gt;
%% ------&lt;br /&gt;
&lt;br /&gt;
%% Ir de la ubicacion X a Y cambia la posicion:&lt;br /&gt;
cierto(posicion(Y),I+1) :- ocurre(ir(X,Y),I),&lt;br /&gt;
							cierto(posicion(X),I),&lt;br /&gt;
							I&amp;lt;n.&lt;br /&gt;
&lt;br /&gt;
%% Actualizar la posicion si nos movemos:&lt;br /&gt;
-cierto(posicion(X),I+1) :- ocurre(ir(X,Y),I),&lt;br /&gt;
							I&amp;lt;n.&lt;br /&gt;
&lt;br /&gt;
%% Comprar un producto en alguna tienda que lo tenga:&lt;br /&gt;
cierto(tiene(X),I+1) :- ocurre(compra(X),I),&lt;br /&gt;
						cierto(posicion(Y),I),&lt;br /&gt;
						vende(Y,X),&lt;br /&gt;
						I&amp;lt;n.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%----------------------------------------&lt;br /&gt;
%% Codificación del sistema de descripción:&lt;br /&gt;
%%----------------------------------------&lt;br /&gt;
&lt;br /&gt;
%% Hipótesis del mundo cerrado para fluyentes definidos:&lt;br /&gt;
&lt;br /&gt;
-cierto(F,I) :- fluyente(definido,F), paso(I),&lt;br /&gt;
               not cierto(F,I).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%% Axioma de inercia para fluyentes inerciales:&lt;br /&gt;
&lt;br /&gt;
cierto(F,I+1) :- fluyente(inercia,F),&lt;br /&gt;
                cierto(F,I),&lt;br /&gt;
                not -cierto(F,I+1),&lt;br /&gt;
                I &amp;lt; n.&lt;br /&gt;
&lt;br /&gt;
-cierto(F,I+1) :- fluyente(inercia,F),&lt;br /&gt;
                 -cierto(F,I),&lt;br /&gt;
                 not cierto(F,I+1),&lt;br /&gt;
                 I &amp;lt; n.&lt;br /&gt;
                 &lt;br /&gt;
%% Hipótesis del mundo cerrado para acciones:&lt;br /&gt;
&lt;br /&gt;
-ocurre(A,I) :- accion(A), paso(I),&lt;br /&gt;
                not ocurre(A,I).&lt;br /&gt;
     &lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%       &lt;br /&gt;
%% Módulo de planificación usando regla de elección:&lt;br /&gt;
  &lt;br /&gt;
exito :- objetivo(I),&lt;br /&gt;
           I &amp;lt;= n.&lt;br /&gt;
:- not exito.&lt;br /&gt;
&lt;br /&gt;
1{ocurre(A,I): accion(A)}1 :- paso(I),&lt;br /&gt;
                               not objetivo(I),&lt;br /&gt;
                               I &amp;lt; n.  &lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
%% Estado inicial&lt;br /&gt;
&lt;br /&gt;
cierto(posicion(casa),0).&lt;br /&gt;
-cierto(tiene(azucar),0).&lt;br /&gt;
-cierto(tiene(cafe),0).&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
%% Objetivo:&lt;br /&gt;
&lt;br /&gt;
objetivo(I) :- cierto(posicion(casa),I),&lt;br /&gt;
				cierto(tiene(azucar),I),&lt;br /&gt;
				cierto(tiene(cafe),I).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%% Presentación:&lt;br /&gt;
#show ocurre/2.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jescammor1</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LCyTM2018/index.php?title=Relaci%C3%B3n_1&amp;diff=186</id>
		<title>Relación 1</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LCyTM2018/index.php?title=Relaci%C3%B3n_1&amp;diff=186"/>
		<updated>2019-11-04T19:40:26Z</updated>

		<summary type="html">&lt;p&gt;Jescammor1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang = &amp;quot;prolog&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
% Ejercicio 1. Calcular los conjuntos de respuesta del siguiente&lt;br /&gt;
% programa P y responder a las consultas siguientes: ¿p?, ¿q? &lt;br /&gt;
&lt;br /&gt;
p, q, r.&lt;br /&gt;
¬p :- not s.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% Solución:&lt;br /&gt;
% gemtermej&lt;br /&gt;
% La solución es tatata&lt;br /&gt;
&lt;br /&gt;
% jescammor1&lt;br /&gt;
% 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.&lt;br /&gt;
% 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.&lt;br /&gt;
% 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.&lt;br /&gt;
% Consulta p: No, puesto que -p aparece en todos los conjuntos de respuesta (S_1, S_2).&lt;br /&gt;
% Consulta q: Desconodido, puesto que S_2 no lo contiene ni a el, ni a su complementario.&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
% Ejercicio 2: Calcular los conjuntos de respuesta del siguiente&lt;br /&gt;
% programa:&lt;br /&gt;
&lt;br /&gt;
p :- not q.&lt;br /&gt;
q :- not p.&lt;br /&gt;
r :- not s.&lt;br /&gt;
s :- not r.&lt;br /&gt;
-s :- q.&lt;br /&gt;
&lt;br /&gt;
% Solución:&lt;br /&gt;
% jescammor1&lt;br /&gt;
% A priori las reglas 1 y 2 no nos restrigen en p y q. &lt;br /&gt;
% 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}.&lt;br /&gt;
% 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}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
% Ejercicio 3: Dado el programa /P/ y el conjunto S = {p(c)}, obtener el&lt;br /&gt;
%  programa /P^S/ y decidir si S es un conjunto de respuesta de /P/.&lt;br /&gt;
&lt;br /&gt;
p(a) :- not p(b).&lt;br /&gt;
p(b) :- not p(c).&lt;br /&gt;
p(c) :- not p(a).&lt;br /&gt;
&lt;br /&gt;
% Solución:&lt;br /&gt;
% jescammor1&lt;br /&gt;
% Si obligamos a que se cumple S visto como regla &amp;quot;p(c).&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
% Ejercicio 4: Calcular los conjuntos de respuesta del siguiente&lt;br /&gt;
%   programa /P/ y responder a las consultas siguientes: ¿s(a)?, ¿r(a)?,&lt;br /&gt;
%   ¿s(b)?, ¿q(b)?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-s(a).&lt;br /&gt;
p(X) :- not q(X), -s(X).&lt;br /&gt;
q(X) :- not p(X).&lt;br /&gt;
r(X) :- p(X).&lt;br /&gt;
r(X) :- q(X).&lt;br /&gt;
&lt;br /&gt;
% Solución:&lt;br /&gt;
% jescammor1&lt;br /&gt;
% -s(a) lo añadimos a todos los posibles conjuntos de respuesta.&lt;br /&gt;
% Si no añadimos q(a), aplica la regla 2 y nos vemos obligados a introducir p(a).&lt;br /&gt;
%% La regla 3 ya no influye, no así la 4, que nos añade r(a).&lt;br /&gt;
%% S_1={-s(a), p(a), r(a)}.&lt;br /&gt;
% Si pasamos directamente a la regla 3, podemos añadir q(a), que anula la regla 2. &lt;br /&gt;
%% La cuarta regla no aplica, puesto que seguimos sin saber nada de p(a).&lt;br /&gt;
%% La última regla si nos añadiría un r(a).&lt;br /&gt;
%% S_2={-s(a), q(a), r(a)}&lt;br /&gt;
% Esto sería sin contar que tenemos un segundo literal b. Este estudio lo podemos hacer reparado eliminando la primera regla.&lt;br /&gt;
%% La regla 2 no aplica para b porque no sabemos nada de -s(b). &lt;br /&gt;
%% 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.&lt;br /&gt;
%% Como vimos antes, si tenemos q(b) también tendremos r(b).&lt;br /&gt;
%% En conclusión los conjuntos de respuesta finales son S&amp;#039;_1={-s(a), p(a), r(a), q(b), r(b)} y S&amp;#039;_2={-s(a), q(a), r(a), q(b), r(b)}.&lt;br /&gt;
% Consulta s(a): No, porque aparece en ambos conjuntos negado&lt;br /&gt;
% Consulta r(a): Si, porque aparece en ambos conjuntos&lt;br /&gt;
% Consulta s(b): Desconocido, porque no aparece en ninguno&lt;br /&gt;
% Consulta q(b): Si, porque aparece en ambos&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
% Ejercicio 5:Calcular los conjuntos de respuesta del siguiente&lt;br /&gt;
%   programa /P/ y responder a las consultas siguientes: ¿q(a)?, ¿r(a)?,&lt;br /&gt;
%   ¿q(b)?, ¿r(b)?&lt;br /&gt;
&lt;br /&gt;
p(a), -p(b).&lt;br /&gt;
q(X) :- -p(X).&lt;br /&gt;
-q(X) :- not q(X).&lt;br /&gt;
r(X) :- not p(X).&lt;br /&gt;
&lt;br /&gt;
% Solución:&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
% Ejercicio 6: Calcular los conjuntos de respuesta del siguiente&lt;br /&gt;
%   programa /P/ y responder a las consultas siguientes: ¿p(b)?,¿q(b)?, ¿r(b)?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p(X),q(X) :- not r(X).&lt;br /&gt;
-p(X) :- h(X), not r(X).&lt;br /&gt;
h(a).&lt;br /&gt;
h(b).&lt;br /&gt;
r(a).&lt;br /&gt;
&lt;br /&gt;
% Solución&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
% Ejercicio 7: Consideremos la siguiente situación: &amp;quot;Si Juan no compra&lt;br /&gt;
%   juguetes para sus hijos, los niños de Juan no recibirán juguetes por&lt;br /&gt;
%   Reyes. Si los hijos de Juan no escriben sus cartas a los Reyes, Juan&lt;br /&gt;
%   no les comprará juguetes. Los niños de Juan reciben juguetes por&lt;br /&gt;
%   Reyes&amp;quot;. Supongamos que la interpretación de esta historia implica que&lt;br /&gt;
%   los hijos de Jim escribieron las cartas a los Reyes. &lt;br /&gt;
%   + Modelizar esta historia como un programa ASP y calcular los&lt;br /&gt;
%     conjuntos de respuesta, usando la disyunción para representar la ley&lt;br /&gt;
%     del tercio excluso.&lt;br /&gt;
%   + Modelizar esta historia en un programa ASP y calcular los conjuntos&lt;br /&gt;
%     de respuesta esta vez haciendo explícito el contrapositivo para cada&lt;br /&gt;
%     afirmación.&lt;br /&gt;
&lt;br /&gt;
% Solución:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jescammor1</name></author>
		
	</entry>
</feed>