Proof pearl: A verified bignum implementation in x86-64 machine code

Se ha publicado un artículo de verificación formal en HOL4 titulado Proof pearl: A verified bignum implementation in x86-64 machine code.

Sus autores son

  • Magnus O. Myreen (de la Universidad de Cambridge)y
  • Gregorio Curello (de la Universidad Autónoma de Barcelona).

Su resumen es

Verification of machine code can easily deteriorate into an endless clutter of low-level details. This paper presents a case study which shows that machine-code verification does not necessarily require ghastly low-level proofs. The case study we describe is the construction of an x86-64 implementation of arbitrary-precision integer arithmetic. Compared with closely related work, our proofs are shorter and, more importantly, the reasoning is at a more convenient high level of abstraction, e.g. pointer reasoning is largely avoided. We achieve this improvement as a result of using previously developed tools, namely, a proof-producing decompiler and compiler. The work presented in this paper has been developed in the HOL4 theorem prover and the case study resulted in 700 lines of verified 64-bit x86 machine code.

El código correspondiente se encuentra aquí.

El trabajo se presentará en la CPP 2013 (3rd International Conference on Certified Programs and Proofs).

Razonamiento formalizado: Del sueño a la realidad de las pruebas

Jean-Paul Delahaye ha publicado en Interstices un artículo panorámico sobre razonamiento asistido por ordenador titulado Du rêve à la réalité des preuves. Una versión anterior de este trabajo se publicó en la revista Pour la Science.

El artículo comienza con una pequeña historia del razonamiento formalizado. Comienza con el sueño de Leibniz en el siglo XVII de reducir el razonamiento al cálculo. El sueño fue parcialmente realizado por los Principia Mathematica (1910-13) de Alfred Whitehead y Bertrand Russell en los que se intenta reducir las matemáticas a la lógica. En esta obra se muestra cómo las matemáticas pueden ser formalizables en teoría, pero no en la realidad (ya que la formalización que proponen es demasiado compleja para realizarla prácticamente). A este trabajo le han sucedido otras formalizaciones, como la de Bourbaki en los años 30, basada en la teoría de conjuntos pero con parecidos inconvenientes.

Sin embargo, la informática y un siglo de trabajo de los lógicos han hecho realidad el sueño y logrado formalizaciones prácticas y reales de las matemáticas. El primer trabajo de formalización de las matemáticas fue el proyecto Automath desarrollado por Nicolaas de Bruijn a partir de 1966. Su trabajo fue seguido por otros proyectos como Mizar, HOL, Isabelle y Coq. La idea de estos asistentes de prueba es poner a disposición del usuario un sistema interactivo y un formalismo que le permita elaborar una versión formal de conomiento matemático.

Una forma de mostrar el éxito obtenido con los asitentes de prueba en la formalización de las matemáticas es comprobando las formalizaciones de los 100 principales teoremas de la lista de Nathan Kahn. Actualmente se ha formalizado el 87% de la lista entre los que destacan las demostraciones de

Algunos de los 13 teoremas de la listas pendientes de formalizar son

Aparte de las anteriores formalizaciones de los anteriores teoremas, la utilidad de los asistentes de prueba se aprecia en los teoremas enormes como el de Thomas Hales que resuelve la conjetura de Kepler o el de clasificación de los grupos simples.

Otro campo de aplicación de los asistentes de prueba se encuentra en la verificación de programas y sistemas informáticos.

A pesar de los éxitos obtenidos se plantean varios problemas como son:

  • la confianza en la corrección en los propios asistentes de prueba. Se consigue aumentarla reduciendo el núcleo del sistema a pocas líneas que sen simples y legibles, comprobando los núcleos con numerosos ejemplos y demostrando la correción de los núcleos con otros asistentes de prueba.
  • la dificultad del trabajo de formalizar (que se traduce en más de un día de trabajo para formalizar una página de texto matemático),
  • la escasa utilización de los asistentes en la investigación matemática, aunque especialistas como Henk Barendregt y Freek Wiedijk vaticinan que en el próximo decenio producirán un cambio en los hábitos de investigación matemática.

Reseña – Automated theorem provers: a practical tool for the working mathematician?

El artículo Automated theorem provers: a practical tool for the working mathematician? de Alan Bundy se ha publicado el 16 de julio en Annals of Mathematics and Artificial Intelligence.

En el artículo se analiza la utilización de los sistemas de demostración asistida por ordenador (SDAO) en la investigación matemática. Se parte del hecho de que los SDAO se usa por los matemáticos menos que otros sistemas informáticos (como LaTeX o los sistemas de cálculo simbólico). Pero, su interés ha aumentado en la última década, como puede observarse en el número de Diciembre de 2008 de las Notices of the AMS dedicado a las demostraciones formales. El autor conjetura que este interés seguirá creciendo e influirá en la metodología matemática.

Entre las causas de este creciente interés destaca la aparición de teoremas con grandes demostraciones (como el teorema de los cuatros colores, la conjetura de Kepler y la clasificación de los grupos finitos) en cuya demostración se ha usado ordenadores. Se ha críticado el uso de los ordenadores en la demostración, por la posibilidad de que los programas tuviesen errores. Para asegurar su corrección se ha formalizado (en el caso del teorema de los cuatro colores) o se está formalizando (en los otros dos) su demostración mediante SDAO.

Otros razones para el aumento del interés en los SDAO se encuentra en nuevas aplicaciones como síntesis automática de teoremas, automatización de la refactorización de demostraciones, búsqueda de teoremas, automatización de la revisión de artículos y automatización de la corrección de exámenes.

Por otra parte, entre las razones para la resistencia del uso de los SDAO y sus posibles soluciones, apunta las siguientes:

  1. Las demostraciones formalizadas son demasiadas detalladas y largas. Se puede mejorar presentando las demostraciones jarárquicamente de forma que se pueda elegir el nivel de detalle y los pasos esenciales de las pruebas.
  2. Los demostradores no son lo sufientemente potentes. La potencia de los demostradores está creciendo así como el volumen de matemáticas formalizada.
  3. Los demostradores son difíciles de usar. Los desarrolladores de los sistemas están mejorando los interfaces. Una mejora significativa es el uso de demostraciones declarativas (como en Isar).

Personalmente, pienso que la principal barrera está en disponer de una buena base de conocimiento formalizado utilizable en distintos SDAO y de herramientas de búsqueda semántica en dicha base de conocimiento. Además, entre las posibles aplicaciones de los SDAO creo que también será importante su uso como ayudantes en la docencia como describe Benjamin C. Pierce en Using a Proof Assistant to Teach Programming Language Foundations.

Introducción a la Demostración Asistida por Ordenador

Estoy escribiendo una Introducción a la Demostración Asistida por Ordenador (con Isabelle/Isar).

Su objetivo es servir de texto para la curso Demostración asistida por ordenador que empezará a impartirse el próximo curso 2010-11.

El libro parte de los apuntes usados en el Seminario del Grupo de Lógica Computacional del 2008.

Este libro es abierto. Iré anunciando las ampliaciones y actualizaciones en Vestigium.

Todos los comentarios serán bienvenidos e incorporados al libro.