I1M2015: Programas interactivos y gráficas en Haskell

En la clase de hoy de Informática de 1º del Grado en Matemáticas se ha estudiado el tema 13 sobre programas interativos.

Se ha empezado observando un procedimiento que pide que se escriba una cadena y devuelve su longitud:

A continuación se han estudiado los elementos implicados en el procedimiento anterior: el tipo de las acciones de entrada/salida (IO), las acciones básicas (getChar, putChar y return), la secuenciación de acciones con do y la definición de algunos procedimientos del preludio (getLine, putStr, putStrLn, y sequence_).

Como aplicación se han estudiado dos programas:

  1. programa para adivinar un número en sus dos versiones: cuando la máquina tiene que adivinar el número pensado por el humano y cuando es el humano el que tiene que adivinar el número generado aleatoriamente por la máquina.
  2. el juego de la vida.

Finalmente se ha estudiado cómo representar gráficamente funciones con gnuplot. Concretamente se ha visto

  • cómo instalar gnuplot (tanto el programa como la librería de Haskell),
  • cómo importar la librería con `import Graphics.Gnuplot.Simple,
  • cómo dibujar gráfica de una función (con plotFunc),
  • como definir el rango de un gráfica (con linearScale),
  • cómo modificar los atributos de una gráfica (con EPS, Grid, Title, Key y XLabel),
  • cómo dibujar listas de puntos (con plotList),
  • cómo dibujar gráficas conjuntas de varias funciones (con plotFuncs),
  • cómo dibujar curvas paramétricas (con plotParamFunc) y
  • cómo dibujar superficies (con plotFunc3d).

La documentación de las funciones anteriores y otras funciones se encuentra en la página de la librería Graphics.Gnuplot.Simple.

RA2015: Razonamiento estructurado 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 estructurado sobre programas con Isabelle/HOL”

RA2015: Ejercicios de razonamiento automático sobre programas con Isabelle/HOL

En la primera parte de la clase de hoy del curso de Razonamiento automático se ha comentado las soluciones de la 2ª relación de ejercicios cuyo objetivo es demostrar automáticamente con Isabelle/HOL propiedades de programas.

Los ejercicios y sus soluciones se muestran a continuación

LI2015: Formas normales de Skolem y cláusulas

En la primera parte de la clase de hoy del curso de Lógica Informática se estudiado cómo se puede diseñar un procedimiento de forma que dada una fórmula F obtenga otra G que sólo tenga cuantificadores al principio, que su cuerpo esté en forma normal conjuntiva y que sea equisatisfacible con F (es decir, que G es satisfacible precisamente si lo es F). Con dicho procedimiento se calcula la forma normal de Skolem. A partir de las formas se Skolem se obtienen las formas clausales.

En la segunda parte se han comentado las soluciones de los ejercicios 8.5.1 y 8.5.5 del libro de ejercicios. Se han realizado las demostraciones por deducción natural y también por tableros semánticos. Además, se ha comprobado con tableros semánticos la validez de sus recíprocos.

Las transparencias de esta clase son las del tema 10

Reseña: Formal proofs of transcendence for e and π as an application of multivariate and symmetric polynomials

Se ha publicado un artículo de razonamiento formalizado en Coq sobre teoría de números titulado Formal proofs of transcendence for e and π as an application of multivariate and symmetric polynomials.

Sus autores son

Su resumen es

We describe the formalisation in Coq of a proof that the numbers e and π are transcendental. This proof lies at the interface of two domains of mathematics that are often considered separately: calculus (real and elementary complex analysis) and algebra. For the work on calculus, we rely on the Coquelicot library and for the work on algebra, we rely on the Mathematical Components library. Moreover, some of the elements of our formalized proof originate in the more ancient library for real numbers included in the Coq distribution. The case of π relies extensively on properties of multivariate polynomials and this experiment was also an occasion to put to test a newly developed library for these multivariate polynomials.

El trabajo se presentará el 18 de enero de 2016 en el CPP 2016 (The 5th ACM SIGPLAN Conference on Certified Programs and Proofs).

El código de las correspondientes teorías en Coq se encuentra aquí.