Journal of Automated Reasoning

, Volume 43, Issue 1, pp 81–119 | Cite as

Formalization and Implementation of Modern SAT Solvers

  • Filip MarićEmail author


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.


SAT solving DPLL Software verification Algorithms Data structures 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Barrett, C.: Checking validity of quantifier-free formulas in combinations of first-order theories. Ph.D. thesis, Stanford University (2003)Google Scholar
  2. 2.
    Biere, A.: PicoSAT essentials. JSAT 4, 75–97 (2008)zbMATHGoogle Scholar
  3. 3.
    Bordeaux, L., Hamadi, Y., Zhang, L.: Propositional satisfiability and constraint programming: a comparative survey. ACM Comput. Surv. 38(4) (2006)Google Scholar
  4. 4.
    Beame, P., Kautz, H., Sabharwal, A.: Towards understanding and harnessing the potential of clause learning. JAIR 22, 319–351 (2004)zbMATHMathSciNetGoogle Scholar
  5. 5.
    Baptista, L., Marques-Silva, J.P.: Using randomization and learning to solve hard real-world instances of satisfiability. In: CP ’00. LNCS 1894, pp. 489–494, Singapore, 18–22 September 2000Google Scholar
  6. 6.
    Bayardo, R.J. Jr., Schrag, R.C.: Using CSP look-back techniques to solve real-world SAT instances. In: 14th AAAI, pp. 203–208, Providence, 27–31 July 1997Google Scholar
  7. 7.
    Cook, S.A.: The complexity of theorem-proving procedures. In: 3rd STOC, pp. 151–158. ACM, New York (1971)Google Scholar
  8. 8.
    Davis, M., Logemann, G., Loveland, D.: A machine program for theorem-proving. Commun. ACM 5(7), 394–397 (1962)zbMATHCrossRefMathSciNetGoogle Scholar
  9. 9.
    Davis, M., Putnam, H.: A computing procedure for quantification theory. J. ACM 7(3), 201–215 (1960)zbMATHCrossRefMathSciNetGoogle Scholar
  10. 10.
    Een, N., Sorensson, N.: An extensible SAT solver. In: Ligure, S.M. (ed.) SAT ’03. LNCS 2919, pp. 502–518. Springer, New York (2003)Google Scholar
  11. 11.
    Gomes, C.P., Kautz, H., Sabharwal, A., Selman, B.: Satisfiability solvers. In: Handbook of Knowledge Representation. Elsevier, Amsterdam (2007)Google Scholar
  12. 12.
    Goldberg, E., Novikov, Y.: Berkmin: a rast and robust SAT solver. In: DATE’02, pp. 142–149. Paris (2002)Google Scholar
  13. 13.
    Gomes, C., Selman, B., Kautz, H.: Boosting combinatorial search through randomization. In: 15th AAAI, pp. 431–437, Madison, 26–30 July 1998Google Scholar
  14. 14.
    Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12(10), 576–580 (1969)zbMATHCrossRefGoogle Scholar
  15. 15.
    Huang, J.: A case for simple SAT solvers. In: CP ’07. LNCS 4741, pp. 839–846, Providence, September 2007Google Scholar
  16. 16.
    Huang, J.: The effect of restarts on the efficiency of clause learning. In: IJCAI ’07, pp. 2318–2323, Hyderabad, 6–12 January 2007Google Scholar
  17. 17.
    Krstić, S., Goel, A.: Architecting solvers for SAT modulo theories: Nelson-Oppen with DPLL. In: FroCos ’07. LNCS 4720, pp. 1–27, Liverpool, 10–12 September 2007Google Scholar
  18. 18.
    Marić, F.: SAT solver verification. The archive of formal proofs. (2008)
  19. 19.
    Moskewicz, M., Madigan, C., Zhao, Y., Zhang, L., Malik, S.: Chaff: engineering an efficient SAT solver. In: DAC ’01, pp. 530–535, Las Vegas, 18–22 June 2001Google Scholar
  20. 20.
    Marques-Silva, J.P.: The impact of branching heuristics in propositional satisfiability algorithms. In: EPIA ’99. LNCS 1695, pp. 62–74, Évora, September 1999Google Scholar
  21. 21.
    Marques-Silva, J.P., Sakallah, K.A.: Grasp: a search algorithm for propositional satisfiability. IEEE Trans. Comput. 48(5), 506–521 (1999)CrossRefMathSciNetGoogle Scholar
  22. 22.
    Nieuwenhuis, R., Oliveras, A., Tinelli, C.: Solving SAT and SAT modulo theories: from an abstract Davis-Putnam-Logemann-Loveland procedure to DPLL(T). J. ACM 53(6), 937–977 (2006)CrossRefMathSciNetGoogle Scholar
  23. 23.
    Nipkow, T., Paulson, L.C., Wenzel, M.: Isabelle/HOL—A Proof Assistant for Higher-Order Logic, LNCS 2283. Springer, New York (2002)Google Scholar
  24. 24.
    Pipatsrisawat, K., Darwiche, A.: A lightweight component caching scheme for satisfiability solvers. In: SAT ’07. LNCS 4501, pp. 294–299, Lisbon, May 2007Google Scholar
  25. 25.
    Marques Silva, J.P., Sakallah, K.A.: Conflict analysis in search algorithms for satisfiability. In: 8th ICTAI, pp. 467–469, Toulouse, 16–19 November 1996Google Scholar
  26. 26.
    Wiedijk, F.: Comparing mathematical provers. In: MKM 03. LNCS 2594, pp. 188–202, Bertinoro, February 2003Google Scholar
  27. 27.
    Zhang, H.: SATO: an efficient propositional prover. In: CADE-14. LNCS 1249, pp. 272–275, Townsville (1997)Google Scholar
  28. 28.
    Zhang, L., Malik, S.: The quest for efficient Boolean satisfiability solvers. In: CAV ’02. LNCS 2404, pp. 17–36, Copenhagen (2002)Google Scholar
  29. 29.
    Zhang, L., Malik, S.: Validating SAT solvers using independent resolution-based checker. In: DATE ’03, pp. 10880–10885, Münich (2003)Google Scholar
  30. 30.
    Zhang, L., Madigan, C.F., Moskewicz, M.H., Malik, S.: Efficient conflict driven learning in a Boolean satisfiability solver. In: ICCAD ’01, pp. 279–285, San Jose (2001)Google Scholar

Copyright information

© Springer Science+Business Media B.V. 2009

Authors and Affiliations

  1. 1.Faculty of MathematicsUniversity of BelgradeBelgradeSerbia

Personalised recommendations