I1M2013: Definiciones por recursión (2)

En la clase de hoy de Informática de 1º del Grado en Matemáticas hemos continuado el estudio de las definiciones por recursión en Haskell. Concretamente, hemos visto ejemplos de recursión sobre varios argumento, recursión múltiple y de recursión mutua. También hemos comentado el método para construir funciones recursivas.

Las transparencias usadas en la clase son las las páginas 10 a 24 del tema 6:
Read More “I1M2013: Definiciones por recursión (2)”

Gödel’s incompleteness theorems

Se ha publicado un artículo de razonamiento aproximado en Isabelle/HOL sobre metalógica titulado Gödel’s incompleteness theorems.

Su autor es Lawrence C. Paulson (de la Universidad de Cambridge).

Su resumen es

Gödel’s two incompleteness theorems are formalised, following a careful presentation by Swierczkowski, in the theory of hereditarily finite sets. This represents the first ever machine-assisted proof of the second incompleteness theorem. Compared with traditional formalisations using Peano arithmetic (see e.g. Boolos), coding is simpler, with no need to formalise the notion of multiplication (let alone that of a prime number) in the formalised calculus upon which the theorem is based. However, other technical problems had to be solved in order to complete the argument.

El trabajo se ha publicado en The Archive of Formal Proofs

El código de las correspondientes teorías en Isabelle/HOL se encuentra aquí.

The hereditarily finite sets

Se ha publicado un artículo de razonamiento aproximado en Isabelle/HOL sobre la teoría de conjuntos titulado The hereditarily finite sets.

Su autor es Lawrence C. Paulson (de la Universidad de Cambridge).

Su resumen es

The theory of hereditarily finite (HF) sets is formalised, following the development of Swierczkowski. An HF set is a finite collection of other HF sets; they enjoy an induction principle and satisfy all the axioms of ZF set theory apart from the axiom of infinity, which is negated. All constructions that are possible in ZF set theory (Cartesian products, disjoint sums, natural numbers, functions) without using infinite sets are possible here. The definition of addition for the HF sets follows Kirby.

This development forms the foundation for the Isabelle proof of Gödel’s incompleteness theorems, which has been formalised separately.

El trabajo se ha publicado en The Archive of Formal Proofs.

El código de las correspondientes teorías en Isabelle/HOL se encuentra aquí.

RA2013: Razonamiento automático sobre programas con Isabelle/HOL

En la clase de hoy del curso de Razonamiento automático se ha presentado cómo se puede demostrar automáticamente propiedades de programas funcionales con 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 7 del curso de Programación declarativa (de 3º del Grado en Informá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

  1. by simp: que es el método de simplificación por reescritura,
  2. 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,
  3. 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,
  4. by (cases x) auto: que hace distinción de casos según el tipo x y simplificación automática de todos los casos,
  5. by (induct x arbitrary: y) auto: que es por inducción en x (donde y se considera una variable arbitraria) y simplificación automática de todos los casos y
  6. 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:
Read More “RA2013: Razonamiento automático sobre programas con Isabelle/HOL”