I1M2012: Simulación de un juego de cartas en Haskell

En la clase de hoy de Informática de 1º del Grado en Matemáticas hemos comentado las soluciones de los ejercicios de la relación 21. En esta relación se estudia la modelización de un juego de cartas como aplicación de los tipos de datos algebraicos. Además, se definen los generadores correspondientes para comprobar las propiedades con QuickCheck.

Las soluciones de los ejercicios de la relación son
Read More “I1M2012: Simulación de un juego de cartas en Haskell”

Reseña: Formalized algebraic numbers: construction and first-order theory

Se ha publicado una tesis de razonamiento formalizado en Coq sobre los números algebraicos titulada Formalized algebraic numbers: construction and first-order theory.

Su autor es Cyril Cohen dirigido por Assia Mahboubi y Benjamin Werner (de la Escuela Politécnica de París)

Su resumen es

This thesis presents a formalization of algebraic numbers and their theory. It brings two new important contributions to the formalization of mathematical results in proof assistants, Coq in our case: the intuitionistic construction of real algebraic numbers together with the proof they form a real closed field, and the programming and certification of quantifier elimination procedures for the theories of algebraically closed fields and real closed fields. In order to reach those results, we brought multiple contributions to the toolboxes and formalization and proof methodologies in Coq. More particularly, we provide in Coq/SSReflect a framework to work with quotient types. We provide a complete library about ordered and normed number algebraic structures. We wrote a short implementation of Cauchy reals together with tactics to deal easily with reasoning using assertions of the form “let n be a big enough number”, commonly used in mathematical paper proofs. We also developed a short library of real polynomial analysis. A big part of our contributions is useful for the formalization of the proof of Odd Order Theorem and they also aim at helping to prove and certify more efficient quantifier elimination procedures on reals.

La correspondientes teorías en Coq se encuentran en aquí.

Reseña: Verifying a plaftorm for digital imaging: a multi-tool strategy

Se ha publicado un trabajo de verificación formal con Why/Krakatoa, Coq y ACL2 titulado Verifying a platform for digital imaging: a multi-tool strategy.

Sus autores son Jónathan Heras, Gadea Mata, Ana Romero, Julio Rubio y Rubén Sáenz (de la Universidad de la Rioja).

Su resumen es

Fiji is a Java platform widely used by biologists and other experimental scientists to process digital images. In particular, in our research – made together with a biologists team; we use Fiji in some pre-processing steps before undertaking a homological digital processing of images. In a previous work, we have formalised the correctness of the programs which use homological techniques to analyse digital images. However, the verification of Fiji’s pre-processing step was missed. In this paper, we present a multi-tool approach filling this gap, based on the combination of Why/Krakatoa, Coq and ACL2.

Los códigos correpondientes al trabajo se encuentran aquí.

LMF2013: Deducción natural proposicional en Isabelle/HOL (2)

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

Para cada uno de los ejemplos se ha presentado distintas demostraciones: desde la detallada (que sea parecida a la mostrada en las transparencias) hasta la 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 (2)”

I1M2012: Ejercicios con tipos de datos algebraicos en Haskell

En las clases de ayer y hoy de Informática de 1º del Grado en Matemáticas hemos comentando soluciones de los ejercicios sobre tipos de datos algebraicos en Haskell de la relaciones 18 y 19.

En la relación 18 se consideran abreviaturas y dos tipos de datos
algebraicos: los números naturales (para los que se define su
producto) y los árboles binarios, para los que se definen funciones
para calcular:

  • los puntos más cercanos,
  • la ocurrencia de un elemento en el árbol,
  • el número de hojas,
  • el carácter balanceado de un árbol y
  • el árbol balanceado correspondiente a una lista.

En la relación 19 se plantean ejercicios sobre árboles binarios. En
concreto, se definen funciones para calcular:

  • el número de hojas de un árbol,
  • el número de nodos de un árbol,
  • la profundidad de un árbol,
  • el recorrido preorden de un árbol,
  • el recorrido postorden de un árbol,
  • el recorrido preorden de forma iterativa,
  • la imagen especular de un árbol,
  • el subárbol de profundidad dada,
  • el árbol infinito generado con un elemento y
  • el árbol de profundidad dada cuyos nodos son iguales a un elemento.

Los ejercicios, y sus soluciones, se muestran a continuación. Los de la relación 18 son
Read More “I1M2012: Ejercicios con tipos de datos algebraicos en Haskell”