Skip to main content

A prototype implementation of a distributed Satisfiability Modulo Theories solver in the ToolBus framework


An increasing number of verification tools (e.g., software model-checkers) require the use of Satisfiability Modulo Theories (SMT) solvers to implement the back-ends for the automatic analysis of specifications and properties. The most prominent approach to build SMT solvers consists in integrating an efficient Boolean solver with decision procedures capable of checking the satisfiability of sets of ground literals in selected theories. Although the problem of checking the satisfiability of arbitrary Boolean combinations of atoms modulo a background theory is NP-hard, there is a strong demand for high-performance SMT-solvers.

In this paper, we describe the design and prototype implementation of—to the best of our knowledge—the first distributed SMT solver. The emphasis is on providing ways to reduce the implementation effort and to make the system easily extensible. This is achieved in two ways: (a) we re-use as much as possible the code of an available sequential SMT solver and (b) we adopt theToolBus architecture for rapid prototyping. The behavior of the distributed SMT solver was tested on a set of problems which are representative of those generated by software verification techniques. The experiments show the possibility to obtain super-linear speed-ups of the distributed SMT solver with respect to its sequential version.


  1. Thomas Ball, Byron Cook, Shuvendu K. Lahriri, and Lintao Zhang. Zapato: Automatic theorem proving for predicate abstraction refinement. InProceedings of the 16th International Conference on Computer-Aided Verification, volume 3114 ofLecture Notes in Computer Science, pages 457–461. Springer-Verlag, 2004.

  2. Thomas Ball, Andreas Podelski, and Sriram K. Rajamani. Relative completeness of abstraction refinement for software model checking. InProceedings of the 8th International Conference on Tools and Algorithms for Construction and Analysis of Systems, volume 2280 ofLecture Notes in Computer Science, pages 158–172. Springer-Verlag, 2002.

  3. Clark Barrett and Sergey Berezin. CVC Lite: A new implementation of the cooperating validity checker. InProc 16th Intl. Conf. Computer Aided Verification (CAV’2004), volume 3114 ofLecture Notes in Computer Science, pages 515–518, 2004.

  4. J. A. Bergstra and Paul Klint. The discrete timeToolBus — a software coordination architecture.Science of Computer Programming, 31(2–3):205–229, 1998.

    MATH  Article  Google Scholar 

  5. J.A. Bergstra and J.W. Klop. Process algebra for synchronous communication.Information and Control, 60(1/3):109–137, 1984.

    MATH  Article  MathSciNet  Google Scholar 

  6. M. Bozzano, R. Bruttomesso, A. Cimatti, T. Junttila, S. Ranise, P. van Rossum, and R. Sebastiani. Efficient Theory Combination via Boolean Search.Information and Computation, 204(10):1493–1525, 2006. Special Issue on Combining Logical Systems.

    MATH  Article  MathSciNet  Google Scholar 

  7. Randy Bryant. Graph-based algorithms for boolean function manipulation.IEEE Transactions on Computers, C-38(8):677–691, 1986.

    Article  Google Scholar 

  8. Randy Bryant, S. German, and M.N. Velev. Processor verification using efficient reductions of the logic of uninterpreted functions to propositional logic. ACM Transactions on Computational Logic, 2(1), 2001.

  9. Wahid Chrabakh and Rich Wolski. GridSAT: A Chaff-based distributed sat solver for the Grid. InProc. of the 2003 ACM/IEEE Conference on Supercomputing, page 37, 2003.

  10. Edmund Clarke, Orna Grumberg, Somesh Jha, Yuan Lu, and Helmut Veith. Counterexample-guided abstraction refinement for symbolic model checking.Journal of the ACM, 50(5):752–794, 2003.

    Article  MathSciNet  Google Scholar 

  11. Jean-François Couchot, David Déharbe, Alain Giorgetti, and Silvio Ranise. Scalable automated proving and debugging of set-based specifications.Journal of the Brazilian Computer Society, 9(2):137–151, 2004.

    Google Scholar 

  12. M. Davis, G. Lovemand, and D. Loveland. A machine program for theorem-proving.Communications of the ACM, 5(7):394–397, 1962.

    MATH  Article  Google Scholar 

  13. H.A. de Jong and P. Klint. Toolbus: The next generation. In F.S. de Boer, M. Bonsangue, S. Graf, and W.P. de Roever, editors,Formal Methods for Components and Objects, volume 2852 ofLNCS, pages 220–241. Springer, 2003.

  14. David Déharbe, Abdessamad Imine, and Silvio Ranise. Abstraction-driven verification of array programs. InProc. of the 7th Int. Conf. on Artificial Intelligence and Symbolic Computation, Lecture Notes in Artificial Intelligence, pages 271–275. Springer Verlag, 2004.

  15. David Déharbe and Silvio Ranise. Light-weight theorem proving for debugging and verifying units of code. InProc. of the Int. Conf. on Software Engineering and Formal Methods (SEFM03), pages 220–228. IEEE Computer Society Press, 2003.

  16. David Déharbe and Silvio Ranise. Satisfiability solving for software verification. In NASA, editor,IEEE ISoLA Workshop on Leveraging Applications of Formal Methods, Verification, and Validation, number CP-2005-212788 in Tech. Rep., 2005.

  17. David Deharbe, Silvio Ranise, and Jorgiano Vidal. Distributing the workload in a lazy theorem prover. InProc. XIII Brazilian Symposium on Formal Methods (SBMF’2005), pages 17–31. Brazilian Computer Society, 2005.

  18. N. Eén and N. Sörensson. Minisat, 6th international conference on theory and applications of satisfiability testing (sat’03). page 2003.

  19. H. B. Enderton.A Mathematical Introduction to Logic. Academic Press, New York-London, 1972.

    MATH  Google Scholar 

  20. Yulik Feldman, Nachum Dershowitz, and Ziyad Hanna. Parallel Multithreaded Satisfiability Solver: Design and Implementation.Electr. Notes Theor. Comput. Sci., 128(3):75–90, 2005.

    Article  Google Scholar 

  21. Cormac Flanagan, Rajeev Joshi, Xinming Ou, , and James B. Saxe. Theorem proving using lazy proof explanation. InProceedings of the 15th International Conference on Computer-Aided Verification, volume 2725 ofLecture Notes in Computer Science, pages 355–367. Springer-Verlag, 2003.

  22. Malay K. Ganai, Aarti Gupta, Zijiang Yang, and Pranav Ashar. Efficient distributed sat and sat-based distributed bounded model checking. InCorrect Hardware Design and Verification Methods (CHARME 2003), volume 2860 ofLecture Notes in Computer Science, pages 334–347, 2003.

  23. Harald Ganzinger, George Hagen, Robert Nieuwenhuis, Albert Oliveras, and Cesare Tinelli. DPLL(T): Fast decision procedures. In R. Alur and D. Peled, editors,Proceedings of the 16th International Conference on Computer Aided Verification, CAV’04 (Boston, Massachusetts), volume 3114 ofLecture Notes in Computer Science, pages 175–188. Springer, 2004.

  24. Greg Nelson and Derek C. Oppen. Simplification by cooperating decision procedures.ACM Transactions on Programming Languages and Systems, 1(2):245–257, 1979.

    MATH  Article  Google Scholar 

  25. S. Ranise, C. Ringeissen, and D.-K. Tran. Nelson-Oppen, Shostak, and the Extended Canonizer: a Family Picture with a Newborn. InFirst Int’l. Symp. on Theoretical Computer Science (ICTAC’04), volume 3405 ofLecture Notes in Computer Science, pages 372–386, China, 2004. Springer.

  26. S. Ranise and C. Tinelli. Satisfiability Modulo Theories.IEEE Magazine on Intelligent Systems, 21(6):71–81, November/December 2006.

    Google Scholar 

  27. Silvio Ranise and David Déharbe. Applying lightweight theorem proving to debugging and verifying pointer programs.Electronic Notes in Theoretical Computer Science, 86, 2003. Proceedings of 4th Intl. Workshop on First-Order Theorem Proving (FTP’03).

  28. Stephan Schulz. E—a brainiac theorem prover.Journal of AI Communications, 15(2/3):111–126, 2002.

    MATH  Google Scholar 

  29. M.G.J. van den Brand and P. Klint. Aterms for manipulation and exchange of structured data: It’s all about sharing.Information and Software Technology, 49:55–64, 2007.

    Article  Google Scholar 

Download references

Author information



Rights and permissions

Open Access This article is distributed under the terms of the Creative Commons Attribution 2.0 International License ( ), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.

Reprints and Permissions

About this article

Cite this article

Déharbe, D., Ranise, S. & Vidal, J. A prototype implementation of a distributed Satisfiability Modulo Theories solver in the ToolBus framework. J Braz Comp Soc 14, 71–86 (2008).

Download citation

  • Issue Date:

  • DOI:


  • Satisfiability Modulo Theories
  • distributed computing
  • BDDs
  • haRVey