Resumen de lecturas compartidas del 1 al 8 de febrero de 2020

Esta entrada es una recopilación de lecturas compartidas, del 1 al 8 de febrero, en Twitter fundamentalmente sobre programación funcional y demostración asistida por ordenador.

Al final de cada artículo se encuentran etiquetas relativas a los sistemas que usa o a su contenido.

Una recopilación de todas las lecturas compartidas se encuentra en GitHub.

Read More “Resumen de lecturas compartidas del 1 al 8 de febrero de 2020”

Reseña: A comprehensive framework for saturation theorem proving

Se ha publicado un artículo de razonamiento formalizado en Isabelle/HOL sobre lógica titulado A comprehensive framework for saturation theorem proving.

Sus autores son

Su resumen es

One of the indispensable operations of realistic saturation theorem provers is (backward and forward) deletion of subsumed formu- las. In presentations of proof calculi, however, this is usually discussed only informally, and in the rare cases where there is a formal exposition, it is typically clumsy. This is because the equivalence of dynamic and static refutational completeness holds only for derivations where all deleted formulas are redundant, but using a standard notion of redundancy, a clause C does not make an instance Cσ redundant.

We present a framework for formal refutational completeness proofs of abstract provers that implement saturation calculi, such as ordered resolution or superposition. The framework relies on modular extensions of lifted redundancy criteria. It permits us to extend redundancy criteria so that they cover subsumption, and also to model entire prover architectures in such a way that the static refutational completeness of a calculus immediately implies the dynamic refutational completeness of, e.g., an Otter or DISCOUNT loop prover implementing the calculus. Our framework is mechanized in Isabelle/HOL.

El trabajo es parte del proyecto Matryoshka (Fast interactive verification through strong higher-order automation)

El código está incluido en el repositorio IsaFoL (Isabelle Formalization of Logic).

RA2019: Reducción de SAT a Clique en Haskell

En la segunda parte de la clase de hoy del curso de Razonamiento automático se ha estudiado una implementación de la reducción del problema SAT al problema Clique.

En primer lugar se ha estudiado una implementación del problema del Clique en la que se ha definido los grafos no ordenados (como pares de nodos), los cliques y cómo calcular los clique de un tamaño dado.

A continuación se ha estudiado cómo asociar a una fórmula en forma normal conjuntiva un grafo tal que la fórmula es satisfacible si, y sólo si, el grafo tiene un clique cuyo tamaño sea el número de cláusulas de la fórmula

Los códigos usados en la presentación son los siguientes:

Código del prolblema del Clique

Código de la reducción de SAT a Clique

RA2019: El algoritmo de Davis-Putnam en Haskell

En la primera parte de la clase de hoy del curso de Razonamiento automático se ha estudiado una implementación del algoritmo de Davis-Putnam en Haskell y comprobado su corrección con QuickCheck.

En primer lugar se ha estudiado una implementación de la lógica clausal en Haskell en la que se han definido los átomos, literales, cláusulas, fórmulas en forma normal conjuntiva (FNC), interpretaciones, modelos y la clasificación de FNC en satisfacibles, insatisfacibles y válidas.

A continuación se ha estudiado una implementación del algoritmo de Davis-Putnam en Haskell.

Los códigos y las transparencias usados en la presentación son los siguientes:

Código de SAT en Haskell

Presentación del algoritmo de Davis-Putnam

La presentación se ha basado en las 12 primeras páginas del siguiente tema

Descargar (PDF, 283KB)

Código del algoritmo de Davis-Putnam en Haskell