I1M2014: Definiciones por recursión

En la clase de hoy de Informática de 1º del Grado en Matemáticas se ha explicado las definiciones por recursión en Haskell. Concretamente, hemos visto ejemplos de

  • recursión sobre los números naturales,
  • recursión sobre listas,
  • recursión sobre varios argumento,
  • recursión múltiple y
  • de recursión mutua.

También se ha comentado el método de 5 pasos para construir funciones recursivas.

El código correspondiente es
Read More “I1M2014: Definiciones por recursión”

LI2014: Resolución proposicional

En la clase de hoy del curso Lógica Informática hemos continuado la búsqueda de la automatización del razonamiento.

Comenzamos observando que, a partir de la forma normal conjuntiva, podemos representar las fórmulas, y los conjuntos de fórmulas, mediante conjunto de conjuntos de literales. Con esta nueva representación, basta una única regla de demostración: la regla de resolución. Esta regla engloba distintas reglas (como modus ponens, modus tollens y encadenamiento).

Mediante FNC, el problema de inconsistencia de un conjunto de de fórmulas se reduce al de la inconsistencia de un conjunto de cláusulas.

Mediante resolución, el problema de la inconsistencia de un conjunto de cláusulas se reduce a buscar la cláusula vacía entre las resolventes del conjunto S.

Las transparencias de esta clase son las páginas 1 a 17 del tema 5
Read More “LI2014: Resolución proposicional”

RA2014: Presentación del curso

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.