Extracting verified decision procedures: DPLL and Resolution
Ulrich Berger (Swansea University), Andrew Lawrence (Swansea, University), Fredrik Nordvall Forsberg (University of Birmingham), Monika, Seisenberger (Swansea University)

TL;DR
This paper formalizes a proof of completeness for the DPLL proof system, extracts a verified SAT solver from it, and demonstrates the equivalence with resolution proofs, all within the Minlog proof assistant.
Contribution
It introduces a formalized completeness proof for DPLL, extracts a verified SAT solver, and establishes its equivalence with resolution proofs in a proof assistant.
Findings
Extracted SAT solver produces satisfying assignments or proofs of unsatisfiability.
Proved the equivalence between resolution and DPLL proof systems.
Implemented the extracted program in Haskell for improved performance.
Abstract
This article is concerned with the application of the program extraction technique to a new class of problems: the synthesis of decision procedures for the classical satisfiability problem that are correct by construction. To this end, we formalize a completeness proof for the DPLL proof system and extract a SAT solver from it. When applied to a propositional formula in conjunctive normal form the program produces either a satisfying assignment or a DPLL derivation showing its unsatisfiability. We use non-computational quantifiers to remove redundant computational content from the extracted program and translate it into Haskell to improve performance. We also prove the equivalence between the resolution proof system and the DPLL proof system with a bound on the size of the resulting resolution proof. This demonstrates that it is possible to capture quantitative information about the…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
