Familiarización con el entorno: Tablas de verdad y Razonamientos Curso 2003/04, Fecha:Octubre Enunciado 1 (Tablas de verdad) En esta práctica se utilizará el programa YandES, que es un conjunto de utilidades realizadas en Prolog para prácticas conceptos de lógica 1. Cargar el programa tt . Puede realizarse mediante ?− consult(’ tt . pl ’). 2. Mediante el predicado table (F) se obtiene la tabla de verdad de la fórmula F. Construir la tabla de verdad de las siguientes fórmulas e indicar cuáles son válidas, satisfacibles o insatisfacibles. p →q ˜q →˜p p ˆ ˜p ˜p v q ←> p →q p ˆ (q v r) ←> ˜p v ˜r ((p →q) ˆ ˜q) →˜p Enunciado 2 (Clasificar) El predicado clasify (F) indica si la fórmula F es válida, satisfacible o insatisfacible. Comprobar el tipo de las fórmulas del ejercicio anterior Buscar una fórmula de 3 letras proposicionales utilizando 3 conectivas diferentes que sea válida Buscar una fórmula de 3 letras proposicionales utilizando 3 conectivas diferentes que sea satisfacible Buscar una fórmula de 3 letras proposicionales usando 3 conectivas diferentes que sea insatisfacible Enunciado 3 (Razonamientos) El predicado reasoning(R) indica si un razonamiento es correcto o incorrecto. Los razonamientos se representan mediante el esquema [p1,p2 ,..., pN]⇒q. 1. Chequear cuál de los siguientes razonamientos es correcto 1 2 [p , p →q] ⇒q [˜p v q , q →r ] ⇒˜p v r [p →q, ˜r , q →r ] ⇒p →s [p →q, q ] ⇒p 2. Para saber si un razonamiento de la forma [p1,p2 ,..., pN]⇒q es correcto se puede chequear si la fórmula ( p1 ˆ p2 ˆ ... ˆ pN ) →q es válida. Por ejemplo, para comprobar que el razonamiento [p , p →q ] ⇒q es correcto, se chequea si la fórmula (p ˆ (p →q)) →q es válida. Chequear que las fórmulas correspondientes a los razonamientos anteriores son válidas 3. Formalizar e indicar si son correctos los siguientes razonamientos Juan estudia lógica. Si Juan estudia lógica entonces es inteligente. Por tanto, Juan es inteligente No juego a fútbol a menos que juegue a baloncesto. Además, si juego a baloncesto me dan un caramelo. Por tanto, juego al fútbol sólo si me dan un caramelo Enunciado 4 (Prolog) Prolog es un lenguaje de programación lógica en el que un programa es un conjunto de premisas. El usuario puede realizar preguntas al sistema y éste responde si se cumplen (son consecuencia lógica de las premisas) o no. La notación utilizada para las premisas es la siguiente: Hechos: Son valores que se cumplen (en minúsculas) Reglas: Son estructuras de la forma: q :− p1, p2 , ..., pN que equivalen en lógica a: p1 ˆ p2 ˆ ... ˆ pN →q Algunos razonamientos de lógica pueden escribirse con dicha notación. Por ejemplo, las premisas: Juan estudia lógica, álgebra y programación. Si Juan estudia lógica entonces es inteligente. Si Juan estudia álgebra y fı́sica entonces está cansado. Si Juan estudia lógica y programación entonces es bueno. se representarı́an en Prolog como logica . algebra . programacion . inteligente :− logica . cansado : − a l g e b r a , f i s i c a . bueno : − l o g i c a , p r o g r a m a c i o n . 1. Crear un fichero con el programa anterior 2. Consultar dicho fichero 3 3. Preguntar si Juan es bueno e inteligente mediante ?− bueno, inteligente . 4. Preguntar si Juan está cansado mediante ?− cansado. Nota: Para que en la pregunta anterior el sistema responda negativamente, ejecutar la instrucción ?− set prolog flag (unknown,fail). De esa forma, cuando el sistema se encuentre con un predicado indefinido falla en lugar de lanzar una excepción. 5. Formalizar en Prolog el siguiente conocimiento y construir el programa correspondiente: Cuando me levanto tarde, llego impuntual. Si llego impuntual y sucio, me echan del trabajo. Si el despertador no suena y duermo solo, entonces me levanto tarde. Si la noche anterior salgo, también me levanto tarde. Si la noche anterior bebo mucho, entonces tengo resaca. Cuando tengo resaca, no me ducho y si no me ducho, estoy sucio. Se cumple que estoy durmiendo solo y que la noche anterior he bebido mucho. 6. Comprobar si me echan del trabajo Enunciado 5 (Formalizar(Opcional)) Formalizar e indicar si son correctos los siguientes razonamientos Los pitufos pitufan gansadas y papá pitufo está contento si pitufo gruñón juega con ellos y con Gárgamel. Papá pitufo está contento sólo si pitufo gruñón no juega con Gárgamel. Por tanto, pitufo gruñón no juega con los pitufos a menos que pitufo gruñón no juegue con Gárgamel Papá pitufo se enfada a no ser que pitufo gruñón juegue con los pitufos. Para que pitufo gruñón juegue con los pitufos es necesario que éstos no pitufen gansadas. Es suficiente que papá pitufo no se enfade para que pitufo gruñón juegue con los pitufos y éstos no pitufen gansadas. Enunciado 6 (Libre(Opcional)) 1. Construir programas en Prolog y comprobar las conclusiones que se pueden deducir. Chequear si los razonamientos correspondientes a dichos programas son correctos.