Reseña: Certified HLints with Isabelle/HOLCF-Prelude

Se ha publicado un trabajo de verificación formal con Isabelle sobre Haskell titulado Certified HLints with Isabelle/HOLCF-Prelude.

Sus autores son Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel.

El trabajo se presentará en el HART 2013 ( 1st International Workshop on Haskell And Rewriting Techniques).

Su resumen es

We present the HOLCF-Prelude, a formalization of a large part of Haskell’s standard prelude in Isabelle/HOLCF. Applying this formalization to the hints suggested by HLint allows us to certify them formally.

El códido del HOLCF-Prelude se encuentra aquí.

LMF2013: Soluciones lógicas de problemas lógicos

En la clase de hoy del curso Lógica matemática y fundamentos se ha presentado una colección de problemas para mostrar cómo pueden resolverse elementalmente con Prolog.

Los problemas son

  1. Rompecabeza lógico.
  2. La banda de músicos.
  3. Mini sudoku.
  4. Criptoaritmética.
  5. Cuadrados mágicos.
  6. La sucesión de Langford.
  7. Coloraciones de un mapa.
  8. El mono y el plátano.

A continuación se muestran los problemas y sus soluciones
Read More “LMF2013: Soluciones lógicas de problemas lógicos”

I1M2012: Ejercicios de razonamiento sobre programas

En las clases de ayer y hoy Informática de 1º del Grado en Matemáticas hemos comentado las soluciones de la relación 31 en la que se plantean ejercicios de demostración por inducción de propiedades de programas. En concreto,

  • la suma de los n primeros impares es n^2,
  • 1 + 2^0 + 2^1 + 2^2 + … + 2^n = 2^(n+1),
  • todos los elementos de (copia n x) son iguales a x,
  • la equivalencia de las definiciones de factorial con y sin
  • acumulador,
  • amplia xs y = xs ++ [y].
  • numeroDeListasConSuma n = 2^(n-1),
  • fibItAux n (fib k) (fib (k+1)) = fib (k+n),
  • potencia x n == x^n,
  • reverse (xs ++ ys) == reverse ys ++ reverse xs,
  • reverse (reverse xs) = xs,

y por inducción sobre árboles binarios

  • espejo (espejo x) = x,
  • postorden (espejo x) = reverse (preorden x),
  • reverse (preorden (espejo x)) = postorden x,
  • nNodos (espejo x) == nNodos x,
  • length (preorden x) == nNodos x,
  • nNodos x <= 2^(profundidad x) - 1,
  • nHojas x = nNodos x + 1,
  • preordenItAux x ys = preorden x ++ ys

Estos ejercicios corresponden al tema 8 del curso.

Los ejercicios de la relación, junto con sus soluciones, se muestran a continuación
Read More “I1M2012: Ejercicios de razonamiento sobre programas”