Acciones

AplicacionesLP

De Lógica matemática y fundamentos (2012-13)

-- AplicacionesLP.hs
-- Aplicaciones de la Lógica proposicional.
-- ---------------------------------------------------------------------

-- ---------------------------------------------------------------------
-- Librerías auxiliares                                               --
-- ---------------------------------------------------------------------

import SintaxisSemantica 
-- import TablerosSemanticos
-- import ResolucionProposicional

-- ---------------------------------------------------------------------
-- Ejercicio 1: En una isla hay dos tribus, la de los veraces (que
-- siempre dicen la verdad) y la de los mentirosos (que siempre
-- mienten). Un viajero se encuentra con tres isleños A, B y C y cada
-- uno le dice una frase A dice “B y C son veraces syss C es veraz” B
-- dice “Si A y B son veraces, entonces B y C son veraces y A es
-- mentiroso” C dice “B es mentiroso syss A o B es veraz” 
--
-- Determinar a qué tribu pertenecen A, B y C.

-- Simbolización:
--   a, b y c representan que A, B y C son veraces
--   -a, -b y -c representan que A, B y C son mentirosos
-- ---------------------------------------------------------------------
-- Pedro Ros
a  = Atom "a"
b = Atom "b"
c = Atom "c"


solucion1 = modelosFormula ((a<-->((b/\c)<-->c))/\(b<-->((a/\b)-->(b/\c/\(no a))))/\(c<-->((no b)<-->(a\/b))))
--*Main> solucion1
--[]
-- Todos mienten.

-- ---------------------------------------------------------------------
-- Ejercicio 2: Decidir si es posible colorear los vértices de un
-- pentágono de rojo o azul de forma que los vértices adyacentes
-- tengan colores distintos.

-- Simbolización:
--   1, 2, 3, 4, 5 representan los vértices consecutivos del pentágono
--   ri (1 ≤ i ≤ 5) representa que el vértice i es rojo
--   ai (1 ≤ i ≤ 5) representa que el vértice i es azul
-- ---------------------------------------------------------------------
-- Pedro Ros
r1= Atom "r1"
r2= Atom "r2"
r3= Atom "r3"
r4= Atom "r4"
r5= Atom "r5"
a1= Atom "a1"
a2= Atom "a2"
a3= Atom "a3"
a4= Atom "a4"
a5= Atom "a5"

solucion2 = esSatisfacible formulacion2
            where formulacion2=  (((a1\/r1)/\(a2\/r2)/\(a3\/r3)/\(a4\/r4)/\(a5\/r5))/\((no(a1/\a2))/\(no(a1/\a5))/\(no(a2/\a3))/\(no(a3/\a4))/\(no(a4/\a5)))/\((no(r1/\r2))/\(no(r1/\r5))/\(no(r2/\r3))/\(no(r3/\r4))/\(no(r4/\r5))))

{-*Main> solucion2
False-}
-- ---------------------------------------------------------------------
-- Ejercicio 3: Cuatro palomas comparten tres huecos. Decidir si es
-- posible que no haya dos palomas en el mismo hueco.

-- Simbolización: 
--   pihj (i ∈ {1, 2, 3, 4} y j ∈ {1, 2, 3}) representa
--   que la paloma i está en el hueco j.
-- ---------------------------------------------------------------------

-- ---------------------------------------------------------------------
-- Ejercicio 4: Un rectángulo se divide en seis rectángulos menores como
-- se indica en la figura. 

--               ------------------
--               |      |    B    |
--               |  A   |----------           
--               |      |   |     |
--               |------| D |     |
--               |   C  |   |  E  |
--               |------|---|     |
--               |     F    |     |
--               ------------------

-- Demostrar que si cada una de los rectángulos menores tiene un lado
-- cuya medida es un número entero, entonces la medida de alguno de los
-- lados del rectángulo mayor es un número entero.

-- Simbolización:
--   base: la base del rectángulo mayor es un número entero
--   altura: la altura del rectángulo mayor es un número entero
--   base_x: la base del rectángulo X es un número entero
--   altura_x: la altura del rectángulo X es un número entero
-- ---------------------------------------------------------------------

-- ---------------------------------------------------------------------
-- Ejercicio 5: Calcular las formas de colocar 4 reinas en un tablero
-- de 4x4 de forma que no haya más de una reina en cada fila,
-- columna o diagonal.

-- Simbolización:
--   cij (1 ≤ i, j ≤ 4) indica que hay una reina en la fila i columna j.
-- ---------------------------------------------------------------------

-- ---------------------------------------------------------------------
-- Ejercicio 6: Probar el caso más simple del teorema de Ramsey: entre
-- seis personas siempre hay (al menos) tres tales que cada una conoce
-- a las otras dos o cada una no conoce a ninguna de las otras dos.

-- Simbolización:
--   1,2,3,4,5,6 representan a las personas
--   pij (1 ≤ i < j ≤ 6) indica que las personas i y j se conocen.
-- ---------------------------------------------------------------------