LMF2019: Razonamiento sobre programas con Isabelle/HOL (1º parte)

En la clase de hoy del curso de Lógica matemática y fundamentos se ha estudiado cómo se pueden demostrar manualmente propiedades de programas Haskell y cómo traducir dichas demostraciones a Isabelle/HOL.

Para ello, se han usado las transparencias del tema 8 del curso de Informática (de 1º del Grado en Matemática). Como lectura complementaria se recomienda el capítulo 13 del libro de G. Hutton Programming in Haskell.

La traducción de los enunciado de las propiedades es inmediato: basta escribir la palabra lemma y a continuación la propiedad entre comillas dobles; por ejemplo,

También se puede poner un nombre al lema, por ejemplo,

De cada propiedad se han presentados distintas demostracciones:

  • automática,
  • aplicativa estructurada (usando simp)
  • aplicativa detallada (usando simp only)
  • declarativa estructurada (usando simp)
  • declarativa detallada (usando simp only)

La clase se ha dado mediante videoconferencia y el vídeo correspondiente a la primera parte es

y el de la segunda parte es

Las transparencia utilizadas son las 28 primeras páginas del tema

La teoría con los ejemplos presentados en la clase es la siguiente:
Read More “LMF2019: Razonamiento sobre programas con Isabelle/HOL (1º parte)”

I1M2019: Las librerías de conjuntos y de diccionarios en Haskell

En la clase de hoy de Informática de 1º del Grado en Matemáticas se han estudiado las librerías de diccionarios y de conjuntos en Haskell.

Como primera aproximación se ha explicado, siguiendo los apuntes del tema 29, las funciones básicas y las más frecuentes. En segundo lugar se ha comentado las funciones con las librerías con sus ejemplos:

Finalmente, para comentar las complejidades de las funciones, se ha visto la documentación de las librerías Data.Set y Data.Map.

La clase se ha dado mediante videoconferencia y el correspondiente vídeo es

Los apuntes correspondientes a la clase son

Una versión interactiva de los apuntes en IHaskell se encuentra aquí.

Como tarea se han propuesto los ejercicios de la relación 28 y de la relación 29.

I1M2019: El TAD de los conjuntos en Haskell

En la primera parte de la clase de hoy de Informática de 1º del Grado en Matemáticas hemos estudiado el tipo abstracto de datos de los conjuntos y tres de sus implementaciones en Haskell.

Se ha seguido el mismo patrón que en los anteriores tipos de datos:

  • elección de las operaciones básicas,
  • especificación de sus propiedades,
  • implementación en Haskell mediante no ordenadas con duplicados,
  • implementación en Haskell mediante listas no ordenadas sin duplicados,
  • implementación en Haskell mediante listas ordenadas sin duplicados,
  • análisis de la complejidad de las definiciones de las operaciones básicas en las tres implementaciones y
  • verificación con QuickCheck de sus propiedades características.

La clase se ha dado mediante videoconferencia y el correspondiente vídeo es

Los apuntes correspondientes a la clase son

Una versión interactiva de los apuntes en IHaskell se encuentra aquí.

Como tarea se han propuesto los ejercicios de la relación 29.

LMF2019: Programación funcional con Isabelle/HOL

En la clase de hoy del curso de Lógica matemática y fundamentos se ha presentado la programación funcional en Isabelle/HOL resaltando la analogía con la programación en Haskell estudiada en primer curso en la asignatura de Informática

La clase se ha dado mediante videoconferencia y el correspondiente vídeo es

La teoría con los ejemplos presentados en la clase es

Como tarea se han propuesto los ejercicios de la relación 8.