Reseña: Compiling concurrency correctly (Verifying software transactional memory)

Se ha publicado una nueva tesis de verificación con Agda: Compiling concurrency correctly (Verifying software transactional memory)

Su autor es Liyang Hu, dirigido por Graham Hutton.

La tesis se ha presentado el pasado mes de junio en la Universidad de Nottingham.

El resumen de la tesis es

Concurrent programming is notoriously difficult, but with multi-core processors becoming the norm, is now a reality that every programmer must face. Concurrency has traditionally been managed using low-level mutual exclusion locks, which are error-prone and do not naturally support the compositional style of programming that is becoming indispensable for today’s large-scale software projects.

A novel, high-level approach that has emerged in recent years is that of software transactional memory (STM), which avoids the need for explicit locking, instead presenting the programmer with a declarative approach to concurrency. However, its implementation is much more complex and subtle, and ensuring its correctness places significant demands on the compiler writer.

This thesis considers the problem of formally verifying an implementation of STM. Utilising a minimal language incorporating only the features that we are interested in studying, we first explore various STM design choices, along with the issue of compiler correctness via the use of automated testing tools. Then we outline a new approach to concurrent compiler correctness using the notion of bisimulation, implemented using the Agda theorem prover. Finally, we show how bisimulation can be used to establish the correctness of a low-level implementation of software transactional memory.

Biparticiones con igual suma que producto en Haskell

En Números y algo más … se ha planteado el siguiente problema

¿Es posible dividir todos los números del 1 al 2012 en dos grupos, S y P, tal que la suma de los números de S sea igual al producto de los números que están en P? ¿y si fueran 2011 ó 2013? Si es posible, ¿Cómo estarían formados esos conjuntos?

En la siguiente relación de ejercicios (elaborada para la asignatura de Informática de 1º del Grado en Matemáticas) se resuelve el problema con Haskell.
Read More “Biparticiones con igual suma que producto en Haskell”

I1M2011: Libro de ejercicios resueltos de programación en Haskell (v. 19-Mar-12)

A lo largo del curso iré actualizando un libro de ejercicios resueltos de programación con Haskell con las relaciones de ejercicios del curso de Informática (de 1º del Grado en Matemáticas)

En la versión actual contiene las soluciones de las 23 primeras relaciones y los 4 primeros exámenes:

  1. Definiciones elementales de funciones (1).
  2. Definiciones elementales de funciones (2).
  3. Definiciones por comprensión (1).
  4. Definiciones por comprensión (2).
  5. Definiciones por comprensión (3): El cifrado César.
  6. Definiciones por recursión.
  7. Definiciones por recursión y por comprensión (1).
  8. Definiciones por recursión y por comprensión (2).
  9. Definiciones sobre cadenas, orden superior y plegado.
  10. Definiciones por plegado.
  11. Codificación y transmisión de mensajes.
  12. Resolución de problemas matemáticos.
  13. Demostración de propiedades por inducción.
  14. El 2011 y los números primos.
  15. Listas infinitas.
  16. Ejercicios de exámenes del curso 2010-11.
  17. Combinatoria.
  18. Tipos de datos algebraicos.
  19. Tipos de datos algebraicos: árboles binarios.
  20. Tipos de datos algebraicos: fórmulas proposicionales.
  21. Tipos de datos algebraicos: Modelización de juego de cartas.
  22. Cálculo numérico.
  23. Ecuación con factoriales.
  24. Exámenes:
    • Examen 1 (26 de Octubre de 2011).
    • Examen 2 (30 de Noviembre de 2011).
    • Examen 3 (25 de Enero de 2012).
    • Examen 4 (29 de Febrero de 2012).

I1M2011: Libro de ejercicios resueltos de programación en Haskell (v. 18-Feb-12)

A lo largo del curso iré actualizando un libro de ejercicios resueltos de programación con Haskell con las relaciones de ejercicios del curso de Informática (de 1º del Grado en Matemáticas)

En la versión actual contiene las soluciones de las 16 primeras relaciones y los 3 primeros exámenes:

  1. Definiciones elementales de funciones (1).
  2. Definiciones elementales de funciones (2).
  3. Definiciones por comprensión (1).
  4. Definiciones por comprensión (2).
  5. Definiciones por comprensión (3): El cifrado César.
  6. Definiciones por recursión.
  7. Definiciones por recursión y por comprensión (1).
  8. Definiciones por recursión y por comprensión (2).
  9. Definiciones sobre cadenas, orden superior y plegado.
  10. Definiciones por plegado.
  11. Codificación y transmisión de mensajes.
  12. Resolución de problemas matemáticos.
  13. Demostración de propiedades por inducción.
  14. El 2011 y los números primos.
  15. Listas infinitas.
  16. Ejercicios de exámenes del curso 2010-11.
  17. Exámenes:
    • Examen 1 (26 de Octubre de 2011).
    • Examen 2 (30 de Noviembre de 2011).
    • Examen 3 (25 de Enero de 2012).