LMF2013: Deducción natural proposicional en Isabelle/HOL

En la clase de hoy del curso Lógica matemática y fundamentos se ha empezado la formalización en Isabelle/HOL de las demostraciones por deducción natural estudiadas en el tema 2.

Para cada uno de los ejemplos se ha presentado distintas demostraciones: detallada (que sea parecida a la mostrada en las transparencias), estructurada y automática.

La teoría con los ejemplos presentados en la clase es la siguiente:
Read More “LMF2013: Deducción natural proposicional en Isabelle/HOL”

LMF2013: Sintaxis y semántica de la lógica proposicional en Haskell

En la clase de hoy del curso de Lógica matemática y fundamentos (de 3º de Grado en Matemáticas) se han comentado las soluciones de los 11 primeros ejercicios de la sintaxis y semántica de la lógica proposicional en Haskell.

Las soluciones de los ejercicios corregidos se muestran a continuación
Read More “LMF2013: Sintaxis y semántica de la lógica proposicional en Haskell”

I1M2012: La sucesión de Hamming en Haskell

En la segunda parte de la clase de hoy de Informática de 1º del Grado en Matemáticas hemos estudiado el problema de Hamming (consistente definir una sucesión estrictamente creciente de números tales que el número 1 está en la sucesión y que, si x está en la sucesión, entonces 2*x, 3*x y 5*x también están).

El código del problema de Hamming es
Read More “I1M2012: La sucesión de Hamming en Haskell”

I1M2012: Problema del concurso “Cifras y letras” en Haskell

En la clase ayer y en la primera parte de la de hoy de Informática de 1º del Grado en Matemáticas hemos desarrollado un programa en Haskell para resolver los problemas aritméticos del concurso Cifras y letras que consisten en dada una sucesión de números naturales y un número objetivo, intentar construir una expresión cuyo valor es el objetivo combinando los números de la sucesión usando suma, resta, multiplicación, división y paréntesis. Además, cada número de la sucesión puede usarse como máximo una vez y todos los números, incluyendo los resultados intermedios tienen que ser enteros positivos (1,2,3,…).

Por ejemplo, dada la sucesión 1, 3, 7, 10, 25, 50 y el objetivo 765, una solución es (1+50)*(25−10). Para el problema anterior existen 780 soluciones. En cambio, con la sucesión anterior y el objetivo 831, no hay solución.

Se empieza formalizando el problema y definiendo una función para reconcer las soluciones. A continuación, se presentan tres soluciones: la primera por fuerza bruta, la segunda mediante generación y evaluación y la tercera con simplificaciones algebraicas. Se termina con una comparación de las tres soluciones.

El código del programa es
Read More “I1M2012: Problema del concurso “Cifras y letras” en Haskell”