El algoritmo
DPLL en Coq
Fernando
Abigail Galicia
Mendoza
Forma normal
conjuntiva
FNC
conjuntista
Satisfacibilidad
El algoritmo
Davis-PutnamLogemannLoveland
Una ejecución
El algoritmo DPLL en Coq
Fernando Abigail Galicia Mendoza
¿Porqué usar
Coq?
Facultad de ciencias, UNAM
Cuarta escuela de lógica y conjuntos
7 de diciembre de 2015
El algoritmo
DPLL en Coq
Forma normal conjuntiva
Fernando
Abigail Galicia
Mendoza
Forma normal
conjuntiva
FNC
conjuntista
Satisfacibilidad
El algoritmo
Davis-PutnamLogemannLoveland
Una ejecución
¿Porqué usar
Coq?
Definición (Forma normal conjuntiva)
Una fórmula de la lógica proposicional está en forma normal conjuntiva
(FNC), si es generada por la siguiente grámatica:
Atómicas
a ::= ⊤ | ⊥ | p con con p una variable proposicional
Literales
ℓ ::= a | ¬a
Claúsulas
C ::= ℓ | ℓ ∨ C
Formas normales conjuntivas
C ::= C | C ∧ C
Proposición
Cualquier fórmula proposicional ϕ puede transformarse algorı́tmicamente en
una fórmula ψ tal que ϕ ≡ ψ y ψ está en FNC, donde ϕ ≡ ψ denota que ϕ
y ψ son fórmulas lógicamente equivalentes.
El algoritmo
DPLL en Coq
Forma normal conjuntiva (Parte 2)
Fernando
Abigail Galicia
Mendoza
Forma normal
conjuntiva
FNC
conjuntista
Satisfacibilidad
El algoritmo
Davis-PutnamLogemannLoveland
Una ejecución
¿Porqué usar
Coq?
Ejemplo
• La forma normal conjuntiva de p ↔ q es (¬p ∨ q) ∧ (¬q ∨ p).
• La forma normal conjuntiva de p → ((q → r ) → ¬s) es
(¬p ∨ q ∨ ¬s) ∧ (¬p ∨ ¬r ∨ ¬s).
• La forma normal conjuntiva de p ↔ (q → r ) es
(¬p ∨ ¬q ∨ r ) ∧ (p ∨ q) ∧ (p ∨ ¬r ).
Observemos que esta representación de la forma normal conjuntiva es
ineficiente para métodos de resolución sintácticos.
El algoritmo
DPLL en Coq
Fernando
Abigail Galicia
Mendoza
Forma normal
conjuntiva
FNC
conjuntista
Satisfacibilidad
El algoritmo
Davis-PutnamLogemannLoveland
FNC conjuntista
De ahora en adelante asumiremos que dada una fórmula en FNC ϕ esta no
tenga claúsulas repetidas, ni literales atómicas (⊤,⊥).
Definición
Sea C una una cláusula en FNC, definimos la FNC conjuntista (FNCC) de
C como el conjunto de todas sus literales, es decir, si C = ℓ1 ∨ · · · ∨ ℓn su
FNCC es {ℓ1 , . . . , ℓn }.
Una ejecución
¿Porqué usar
Coq?
Definición
Dada ϕ una fórmula en FNC, definimos la FNCC de ϕ como el conjunto de
todas sus cláusulas en FNCC, es decir, si ϕ = C1 ∧ · · · ∧ Cn su FNCC es
{C1 , . . . , Cn }.
Ejemplo
• La FNCC de (¬p ∨ q) ∧ (¬q ∨ p) es {{¬p, q}, {¬q, p}}.
• La FNCC de (¬p ∨ ¬q ∨ r ) ∧ (p ∨ q) ∧ (p ∨ ¬r ) es
{{¬p, ¬q, r }, {p, q}, {p, ¬r }}.
El algoritmo
DPLL en Coq
Satisfacibilidad
Fernando
Abigail Galicia
Mendoza
Forma normal
conjuntiva
FNC
conjuntista
Satisfacibilidad
El algoritmo
Davis-PutnamLogemannLoveland
Una ejecución
¿Porqué usar
Coq?
Definición (El problema de satisfacibilidad)
Dada una fórmula de la lógica proposicional saber si existe una asignación
de valores para sus variables tales que hagan la fórmula satisfacible.
Definición
Sea M un conjunto de literales, ϕ una fórmula de la lógica proposicional y
IM : PROP → {0, 1} una función de interpretación, se dice que M es
modelo de ϕ si IM (ϕ) = 1.
Ejemplo
Veamos que p ↔ (q → r ) es satisfacible.
Sea M = {p, ¬q}, por demostrar que IM (p ↔ (q → r )) = 1.
Por definición tenemos que, IM (p ↔ (q → r )) = 1 si y solo si
IM (p) = IM (q → r ).
Observamos que IM (q) = 0, entonces IM (q → r ) = 1.
Y se tiene que IM (p) = 1.
Por lo que p ↔ (q → r )) es satisfacible.
El algoritmo
DPLL en Coq
El algoritmo Davis-Putnam-Logemann-Loveland
Fernando
Abigail Galicia
Mendoza
Forma normal
conjuntiva
FNC
conjuntista
Satisfacibilidad
El algoritmo
Davis-PutnamLogemannLoveland
Una ejecución
¿Porqué usar
Coq?
El algoritmo Davis-Putnam-Logemann-Loveland (DPLL) es un
procedimiento que recibe una fórmula FNC conjuntista y devuelve un
modelo.
Definición
Sean ℓ una literal, ℓ la literal contraria de ℓ, C una claúsula conjuntista, C
una fórmula en FNCC y M un modelo.
Denotemos a M es modelo de C como M ⊢ C.
El procedimiento del algoritmo DPLL está dado por las siguientes reglas de
inferencia:
El algoritmo
DPLL en Coq
El algoritmo Davis-Putnam-Logemann-Loveland (Parte 2)
Fernando
Abigail Galicia
Mendoza
Forma normal
conjuntiva
Definición (Parte 2)
FNC
conjuntista
Satisfacibilidad
El algoritmo
Davis-PutnamLogemannLoveland
Una ejecución
¿Porqué usar
Coq?
M⊢∅
M ∪ {ℓ} ⊢ C
Unit
M ⊢ C ∪ {{ℓ}}
Satis
M ∪ {ℓ} ⊢ C ∪ C
M ∪ {ℓ} ⊢ C ∪ {{ℓ} ∪ C }
Red
M ∪ {ℓ} ⊢ C
Elim
M ∪ {ℓ} ⊢ C ∪ {{ℓ}} ∪ C }
M ∪ {ℓ} ⊢ C M ∪ {ℓ} ⊢ C
Split
M⊢C
Teorema (Correctud de algoritmo DPLL)
Para toda C una fórmula en FNCC, existe un modelo M devuelto por el
algoritmo DPLL con entrada C tal que M ⊢ C.
El algoritmo
DPLL en Coq
Una ejecución
Fernando
Abigail Galicia
Mendoza
Forma normal
conjuntiva
FNC
conjuntista
Satisfacibilidad
El algoritmo
Davis-PutnamLogemannLoveland
Una ejecución
¿Porqué usar
Coq?
Ejemplo
Hagamos la ejecución del algoritmo para la fórmula p ↔ q, como se
mencionó su FNCC es [[¬p, q] , [¬q, p]].
X
✄❈
[p, q] ⊢ ∅
[¬p, q] ⊢ [[]]
X
[p, q] ⊢ [[p]]
[¬p, ¬q] ⊢ ∅
[¬p, q] ⊢ [[p]]
[p, q] ⊢ [[¬q, p]]
[¬p, ¬q] ⊢ [[¬q, p]]
[¬p, q] ⊢ [[¬q, p]]
[p] ⊢ [[q] , [¬q, p]]
[¬p] ⊢ [[¬q, p]]
[p] ⊢ [[¬p, q] , [¬q, p]]
[¬p] ⊢ [[¬p, q] , [¬q, p]]
∅ ⊢ [[¬p, q] , [¬q, p]]
Observemos que el algoritmo devolvió tres conjuntos de variables
proposicionales, donde [¬p, q] no satisface a la fórmula, ya que es propenso
a causar inconsistencia, es decir, tener a p y ¬p.
El algoritmo
DPLL en Coq
¿Porqué usar Coq?
Fernando
Abigail Galicia
Mendoza
Forma normal
conjuntiva
FNC
conjuntista
Satisfacibilidad
El algoritmo
Davis-PutnamLogemannLoveland
Una ejecución
¿Porqué usar
Coq?
• Por la misma definición que brindan sus autores, Coq es un asistente
para generar demostraciones por computadora evitando errores
humanos, con esto tenemos una prueba certificada del algoritmo DPLL.
• Hay que observar que el paso de demostraciones hechas en papel a
Coq es un paso interesante, ya que en papel se asumen ciertas cosas
que en Coq debemos demostrarlas o darlas como axiomas.
• Se optó por utilizar listas en lugar de conjuntos debido a que las listas
son un tipo primitivo en los lenguajes de programación.
El algoritmo
DPLL en Coq
Referencias
Fernando
Abigail Galicia
Mendoza
Forma normal
conjuntiva
FNC
conjuntista
Satisfacibilidad
El algoritmo
Davis-PutnamLogemannLoveland
Una ejecución
¿Porqué usar
Coq?
Stéphane Lescuyer, Sylvain Conchon. (-). Improving Coq Propositional
Reasoning Using a Lazy CNF Conversion Scheme. Noviembre de 2015,
de Laboratoire de Recherche En Informatique Sitio web: https://
www.lri.fr/~conchon/publis/lescuyer-conchon-frocos09.pdf
Varios. (-). What is Coq?. Noviembre de 2015, de The Coq proof
assistant Sitio web: https://coq.inria.fr/