Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

El algoritmo DPLL en Coq

Presentación brindada en la cuarta escuela de lógica y conjuntos. Se brinda una implementación del algoritmo Davis–Putnam–Logemann–Loveland (DPLL) en el asistente de pruebas de Coq, así como la demostración de la correctud del algoritmo.

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/