Boosting combinatorial search through randomization
AAAI '98/IAAI '98 Proceedings of the fifteenth national/tenth conference on Artificial intelligence/Innovative applications of artificial intelligence
GRASP: A Search Algorithm for Propositional Satisfiability
IEEE Transactions on Computers
A Computing Procedure for Quantification Theory
Journal of the ACM (JACM)
An axiomatic basis for computer programming
Communications of the ACM
A machine program for theorem-proving
Communications of the ACM
Chaff: engineering an efficient SAT solver
Proceedings of the 38th annual Design Automation Conference
Efficient conflict driven learning in a boolean satisfiability solver
Proceedings of the 2001 IEEE/ACM international conference on Computer-aided design
The Quest for Efficient Boolean Satisfiability Solvers
CAV '02 Proceedings of the 14th International Conference on Computer Aided Verification
Comparing Mathematical Provers
MKM '03 Proceedings of the Second International Conference on Mathematical Knowledge Management
SATO: An Efficient Propositional Prover
CADE-14 Proceedings of the 14th International Conference on Automated Deduction
The complexity of theorem-proving procedures
STOC '71 Proceedings of the third annual ACM symposium on Theory of computing
Conflict Analysis in Search Algorithms for Satisfiability
ICTAI '96 Proceedings of the 8th International Conference on Tools with Artificial Intelligence
BerkMin: A Fast and Robust Sat-Solver
Proceedings of the conference on Design, automation and test in Europe
DATE '03 Proceedings of the conference on Design, Automation and Test in Europe - Volume 1
Propositional Satisfiability and Constraint Programming: A comparative survey
ACM Computing Surveys (CSUR)
Towards understanding and harnessing the potential of clause learning
Journal of Artificial Intelligence Research
The effect of restarts on the efficiency of clause learning
IJCAI'07 Proceedings of the 20th international joint conference on Artifical intelligence
A lightweight component caching scheme for satisfiability solvers
SAT'07 Proceedings of the 10th international conference on Theory and applications of satisfiability testing
CP'07 Proceedings of the 13th international conference on Principles and practice of constraint programming
Isabelle/HOL: a proof assistant for higher-order logic
Isabelle/HOL: a proof assistant for higher-order logic
Using CSP look-back techniques to solve real-world SAT instances
AAAI'97/IAAI'97 Proceedings of the fourteenth national conference on artificial intelligence and ninth conference on Innovative applications of artificial intelligence
Instance-Based Selection of Policies for SAT Solvers
SAT '09 Proceedings of the 12th International Conference on Theory and Applications of Satisfiability Testing
Automated analysis of feature models 20 years later: A literature review
Information Systems
Formal verification of a modern SAT solver by shallow embedding into Isabelle/HOL
Theoretical Computer Science
Industrial-strength certified SAT solving through verified SAT proof checking
ICTAC'10 Proceedings of the 7th International colloquium conference on Theoretical aspects of computing
The Mechanical Verification of a DPLL-Based Satisfiability Solver
Electronic Notes in Theoretical Computer Science (ENTCS)
Assessing the Kodkod model finder for resolving model inconsistencies
ECMFA'11 Proceedings of the 7th European conference on Modelling foundations and applications
URBiVA: uniform reduction to bit-vector arithmetic
IJCAR'10 Proceedings of the 5th international conference on Automated Reasoning
CDCL-based abstract state transition system for coherent logic
CICM'12 Proceedings of the 11th international conference on Intelligent Computer Mathematics
Mechanical verification of SAT refutations with extended resolution
ITP'13 Proceedings of the 4th international conference on Interactive Theorem Proving
Simple algorithm portfolio for SAT
Artificial Intelligence Review
Formally Verified Tableau-Based Reasoners for a Description Logic
Journal of Automated Reasoning
Hi-index | 0.00 |
Most, if not all, state-of-the-art complete SAT solvers are complex variations of the DPLL procedure described in the early 1960's. Published descriptions of these modern algorithms and related data structures are given either as high-level state transition systems or, informally, as (pseudo) programming language code. The former, although often accompanied with (informal) correctness proofs, are usually very abstract and do not specify many details crucial for efficient implementation. The latter usually do not involve any correctness argument and the given code is often hard to understand and modify. This paper aims to bridge this gap by presenting SAT solving algorithms that are formally proved correct and also contain information required for efficient implementation. We use a tutorial, top-down, approach and develop a SAT solver, starting from a simple design that is subsequently extended, step-by-step, with a requisite series of features. The heuristic parts of the solver are abstracted away, since they usually do not affect solver correctness (although they are very important for efficiency). All algorithms are given in pseudo-code and are accompanied with correctness conditions, given in Hoare logic style. The correctness proofs are formalized within the Isabelle theorem proving system and are available in the extended version of this paper. The given pseudo-code served as a basis for our SAT solver argo-sat.