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

En la primera parte de la clase 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)x(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 “I1M2015: Problema del concurso “Cifras y letras” en Haskell”

LI2015: Deducción natural en lógica de primer orden (1)

En la clase de hoy del curso Lógica Informática se presentado la ampliación del cálculo de deducción natural proposional para tratar los cuantificadores. Se han comentado distintas equivalencias lógicas y se han demostrado por deducción natural las principales equivalencias.

Las transparencias de esta clase son las páginas 1 a 25 del tema 8 que se muestran a continuación

RA2015: Razonamiento automático sobre programas con Isabelle/HOL

En la clase de hoy del curso de Razonamiento automático se ha presentado cómo se puede demostrar propiedades de programas funcionales con Isabelle/HOL.

Para ello, se ha visto cómo representar en Isabelle/HOL las demostraciones de propiedades de programas estudiadas en el tema 8 del curso de Informática.

Los métodos de demostración utilizados son razonamiento ecuacional, inducción sobre los números naturales, inducción sobre listas e inducción sobre esquemas correspondientes a definiciones recursivas.

La teoría con los ejemplos presentados en la clase es la siguiente:
Read More “RA2015: Razonamiento automático sobre programas con Isabelle/HOL”

LI2015: Semántica de la lógica de primer orden

En la clase de hoy del curso Lógica Informática se ha completado el estudio de la semántica de la lógica de primer orden introduciendo los conceptos de consistencia, consecuencia lógica y equivalencia. Se ha explicado la metodología de búsqueda semántica de modelos y contramodelos.

Las transparencias de esta clase son las páginas 35 a 45 del tema 7: