Abstract
A succinct SAT solver is presented that exploits the control provided by delay declarations to implement watched literals and unit propagation. Despite its brevity the solver is surprisingly powerful and its elegant use of Prolog constructs is presented as a programming pearl. Furthermore, the SAT solver can be integrated into an SMT framework which exploits the constraint solvers that are available in many Prolog systems.
Highlights
The Boolean satisfiability problem, SAT, is of continuing interest because a variety of problems are naturally expressible as a SAT instance
Truth assignments from a SAT solver In line (3), a call to the DPLL algorithm is made to find a truth assignment satisfying the propositional formula f which is initially the propositional skeleton of the problem φ, and in further recursive calls will have been strengthened with blocking clauses describing truth assignments which do not correspond to a satisfying assignment to φ
Far this paper has highlighted the ways in which Prolog provides an easy and elegant entry point into SAT and SMT solving, whilst making contributions on the preprocessing of SMT inputs and the efficiency of the integration of the SAT solver into the SMT framework
Summary
The Boolean satisfiability problem, SAT, is of continuing interest because a variety of problems are naturally expressible as a SAT instance. Propositional solvers are either applied to pure SAT instances, or increasingly are combined with constraint solvers in the SAT modulo theories, SMT [27], approach It has been demonstrated how a dedicated external SAT solver coded in C can be integrated with Prolog [5] and this has been utilised for a number of applications. The key concepts of efficient SAT solving can be formulated in a logic program using a combination of logic and control features [20] that lie at the heart of the logic programming paradigm This pearl was discovered when implementing an efficient groundness analyser [12], naturally emerging from the representation of Boolean functions using logical variables; the solver has not been described prior to [14]. The rest of the paper contains a short summary of relevant background on SAT and SMT solving, gives the code for the solver and comments upon it, discusses extensions to the solver and concludes with a discussion of the limitations of the solver and its approach
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.