RA2017: Razonamiento automático sobre programas en Isabelle/HOL

En la segunda parte de la clase de hoy del curso de Razonamiento automático se han comenzado el estudio de la demostración automática de propiedades de programas funcionales en Isabelle/HOL.

En primer lugar, se ha estudiado cómo se pueden demostrar manualmente propiedades de programas Haskell. Para ello, se han usado las [transparencias del tema 8][http://www.cs.us.es/~jalonso/cursos/i1m-16/temas/tema-8.pdf) 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.

A continuación se ha explicado cómo demostrar automáticamente las propiedades anteriores con Isabelle/HOL.

El 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,

La demostración es la palabra by seguida por el método de demostración. Los métodos que hemos usado son

  • by simp: que es el método de simplificación por reescritura,
  • by (induct x) auto: que es por inducción en x (donde x es un número natural o una lista) y simplificación automática de ambos casos,
  • by (induct rule: fn.induct) auto: que es por inducción según la definición de la función fn y simplificación automática de todos los casos,
  • by (simp add: lema_auxiliar): que es el método de simplificación por reescritura añadiéndole a las reglas de reescritura la correspondiente al lema_auxiliar,

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

Como tarea se propuso la resolución de los ejercicios de la 2ª relación.

RA2017: Presentación del curso de “Razonamiento automático”

En la clase de hoy del curso Razonamiento automático se ha hecho una presentación del mismo, comentando los siguientes puntos

  1. Objetivo: El objetivo fundamental del curso es la verificación de programas y de demostraciones matemáticas. Su necesidad se basa en la seguridad de sistemas críticos, en los teoremas incompletos y en los teoremas enormes (como el teorema de los 4 colores). Una colección de ejemplos de verificación se encuentra en The Archive of Formal Proofs.

  2. Sistema: El sistema que se usará es Isabelle/HOL.

  3. Punto de partida: El punto de partida es el conocimiento de la programación funcional con Haskell (correspondiente a los 10 primeros temas del curso de informática) y de la deducción natural (correspondiente a los temas 2 y 8 del curso de Lógica informática).

  4. Metodología: El curso será esencialmente práctico con relaciones semanales de ejercicio. El material del curso se irá publicando en la página del curso, en la se pondrá los

    • temas (con las teorías de cada tema),
    • ejercicios (con los relaciones de ejercicios),
    • documentación (con enlaces a lecturas recomendadas),
    • sistemas (con enlaces a los sistemas utilizados) y
    • diario (con el resumen de cada clase).

Las dos referencias fundamentales son los apuntes Programming and proving in Isabelle/HOL y el libro A proof assistant for higher-order logic.

Como tareas para la próxima clase se propusieron:

  1. Instalar Isabelle/HOL.
  2. Leer alguna de las visiones generales del razonamiento automático.