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

Resumen de lecturas compartidas durante enero de 2020

Esta entrada es una recopilación de lecturas compartidas, durante enero de 2020, en Twitter fundamentalmente sobre programación funcional y demostración asistida por ordenador.

Las lecturas están ordenadas según su fecha de publicación en Twitter.

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 durante enero de 2020”

Reseña: A formalised polynomial-time reduction from 3SAT to Clique

Se ha publicado un artículo de razonamiento formalizado en Coq sobre SAT titulado A formalised polynomial-time reduction from 3SAT to Clique.

Sus autor es Lennard Gäher del Programming Systems Lab en la Universidad del Sarre (en inglés, Saarland University y en alemán Universität des Saarlandes) en Saarbrücken, Alemania.

Su resumen es

We present a formalisation of the well-known problems SAT and Clique from computational complexity theory. From there, a polynomial-time reduction from 3SAT, a variant of SAT where every clause has exactyly three literals, is developed and verified. All the results are constructively formalised in the proof assistant Coq, including the polynomial running time bounds. The machine model we use is the weak call-by-value lambda calculus.

El trabajo forma parte de su Bachelor’s Thesis y está dirigido por Fabian Kunze.