Skip to main content
Log in

Abstract

Program verification is a resource-hungry task. This paper looks at the problem of parallelizing SMT-based automated program verification, specifically bounded model-checking, so that it can be distributed and executed on a cluster of machines. We present an algorithm that dynamically unfolds the call graph of the program and frequently splits it to create sub-tasks that can be solved in parallel. The algorithm is adaptive, controlling the splitting rate according to available resources, and also leverages information from the SMT solver to split where most complexity lies in the search. We implemented our algorithm by modifying Corral, the verifier used by Microsoft’s Static Driver Verifier (SDV), and evaluate it on a series of hard SDV benchmarks.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7

Similar content being viewed by others

Notes

  1. Hydra is available in the hydra branch of https://github.com/boogie-org/corral.git.

  2. We disallow main as a special case.

  3. We achieved similar performance with heuristics that explicitly select candidates that divide the proof-relevant callsites equally.

  4. The newer versions of Z3 attempt best-effort unsat core minimization with the core.minimize option.

  5. https://docs.microsoft.com/en-us/windows-hardware/drivers/devtest/static-driver-verifier.

References

  1. Aiken A, Bugrara S, Dillig I, Dillig T, Hackett B, Hawkins P (2007) An overview of the Saturn project. In: Proceedings of the 7th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering, pp 43–48

  2. Albarghouthi A, Kumar R, Nori AV, Rajamani SK (2012) Parallelizing top-down interprocedural analyses. ACM SIGPLAN Not 47(6):217–228

    Article  Google Scholar 

  3. Ball T, Bounimova E, Levin V, Kumar R, Lichtenberg J (2010) The static driver verifier research platform. In: Computer aided verification. Springer, pp 119–122

  4. Ball T, Levin V, Rajamani SK (2011) A decade of software model checking with slam. Commun ACM 54(7):68–76

    Article  Google Scholar 

  5. Banga P, Pai A, Roy S, Chaudhuri M (2016) Accelerating schedule space exploration of multi-threaded programs with GPUs. In: Proceedings of the 14th ACM-IEEE international conference on formal methods and models for system design, MEMOCODE 16. IEEE Press, pp 115–124

  6. Barnett M, Leino KRM, Moskal M, Schulte W (2009) Boogie: an intermediate verification language. https://github.com/boogie-org/boogie/

  7. Beyer D (2019) Automatic verification of C and Java programs: SV-COMP 2019. In: Tools and algorithms for the construction and analysis of systems—25 years of TACAS: TOOLympics, Held as Part of ETAPS 2019, Prague, Czech Republic, April 6-11, 2019, Proceedings, Part III, pp 133–155

  8. Blicha M, Hyvärinen AEJ, Marescotti M, Sharygina N (2020) A cooperative parallelization approach for property-directed k-induction. In: Beyer D, Zufferey D (eds) Verification, Model Checking, and Abstract Interpretation. Springer, Cham, pp 270–292

  9. Böhm M, Speckenmeyer E (1996) A fast parallel SAT-solver—efficient workload balancing. Ann Math Artif Intell 17(2):381–400. https://doi.org/10.1007/BF02127976

    Article  MathSciNet  MATH  Google Scholar 

  10. Bradley AR (2011) SAT-based model checking without unrolling. In: Proceedings of the 12th international conference on verification, model checking, and abstract interpretation, VMCAI11. Springer-Verlag, pp 70–87

  11. Carter M, He S, Whitaker J, Rakamaric Z, Emmi M (2016) Smack software verification toolchain. In: 2016 IEEE/ACM 38th international conference on software engineering companion (ICSE-C). IEEE, pp 589–592

  12. Chaki S, Karimi D (2016) Model checking with multi-threaded IC3 portfolios. In: Jobstmann B, Leino KRM (eds) Verification, Model Checking, and Abstract Interpretation. Springer, pp 517–535

  13. Chatterjee P, Roy S, Diep BP, Lal A (2020) Distributed bounded model checking. In: 2020 Formal methods in computer aided design (FMCAD). IEEE, pp 47–56

  14. Clarke EM, Kroening D, Yorav K (2003) Behavioral consistency of C and Verilog programs using Bounded Model Checking. In: Proceedings of the 40th Design Automation Conference, DAC 2003, Anaheim, CA, USA, June 2–6, 2003, pp 368–371

  15. De Moura L, Bjørner N (2008) Z3: An efficient smt solver. In: International conference on tools and algorithms for the construction and analysis of systems. Springer, pp 337–340

  16. Dureja R, Baumgartner J, Ivrii A, Kanzelman R, Rozier KY (2019) Boosting verification scalability via structural grouping and semantic partitioning of properties. In: 2019 Formal Methods in computer aided design (FMCAD), pp 1–9. https://doi.org/10.23919/FMCAD.2019.8894265

  17. Dureja R, Baumgartner J, Kanzelman R, Williams M, Rozier KY (2020) Accelerating parallel verification via complementary property partitioning and strategy exploration. In: 2020 Formal methods in computer aided design (FMCAD), pp 16–25. https://doi.org/10.34727/2020/isbn.978-3-85448-042-6_8

  18. Een N, Mishchenko A, Brayton R (2011) Efficient implementation of property directed reachability. In: Proceedings of the international conference on formal methods in computer-aided design, FMCAD 11. FMCAD Inc, pp 125–134

  19. Eén N, Sörensson N (2004) An extensible SAT-solver. In: Giunchiglia E, Tacchella A (eds) Theory and Applications of Satisfiability Testing. Springer, pp 502–518

  20. Ganai MK, Li W (2008) D-TSR: Parallelizing SMT-Based BMC using tunnels over a distributed framework. In: Haifa verification conference. Springer, pp 194–199

  21. Hamadi Y, Marques-Silva J, Wintersteiger CM (2011) Lazy decomposition for distributed decision procedures. Electron Proc Theor Comput Sci 72:43–54. https://doi.org/10.4204/eptcs.72.5

    Article  Google Scholar 

  22. Hyvärinen AEJ, Junttila T, Niemelä I (2008) Incorporating learning in grid-based randomized SAT solving. In: Dochev D, Pistore M, Traverso P (eds) Artificial intelligence: methodology, systems, and applications. Springer, pp 247–261

  23. Inverso O, Trubiani C (2020) Parallel and distributed bounded model checking of multi-threaded programs. In: Proceedings of the 25th ACM SIGPLAN symposium on principles and practice of parallel programming, pp 202–216

  24. Jurkowiak B, Li CM, Utard G (2001) Parallelizing Satz using dynamic workload balancing. Electron Not Discret Math 9:174–189. https://doi.org/10.1016/S1571-0653(04)00321-X

    Article  MATH  Google Scholar 

  25. Kahsai T, Tinelli C (2011) PKIND: A parallel k-induction based model checker. EPTCS 72. https://doi.org/10.4204/EPTCS.72.6

  26. Kroening D, Tautschnig M (2014) Cbmc–c bounded model checker. In: International conference on tools and algorithms for the construction and analysis of systems. Springer, pp 389–391

  27. Lahiri SK, Qadeer S (2008) Back to the future: revisiting precise program verification using SMT solvers. In: POPL 08: Proceedings 35th ACM SIGPLAN-SIGACT symposium on principles of programming languages. ACM, pp 171–182

  28. Lal A, Qadeer S (2013) Reachability modulo theories. In: Proceedings of Reachability problems—7th international workshop, RP 2013, Uppsala, Sweden, September 24–26, 2013, pp 23–44

  29. Lal A, Qadeer S (2014) Powering the static driver verifier using corral. In: Proceedings of the 22nd ACM SIGSOFT international symposium on foundations of software engineering, (FSE-22), Hong Kong, China, November 16–22, 2014, pp 202–212

  30. Lal A, Qadeer S, Lahiri SK (2012) A solver for reachability modulo theories. In: Proceedings of computer aided verification—24th international conference, CAV 2012, Berkeley, CA, USA, July 7–13, pp 427–443. https://github.com/boogie-org/corral/

  31. Marescotti M, Gurfinkel A, Hyvärinen AEJ, Sharygina N (2017) Designing parallel PDR. In: Proceedings of the 17th conference on formal methods in computer-aided design, FMCAD 17. FMCAD Inc, pp 156–163

  32. Marescotti M, Hyvärinen A, Sharygina N (2018) SMTS: distributed, visualized constraint solving. In: Barthe G, Sutcliffe G, Veanes M (eds) LPAR-22. 22nd International conference on logic for programming, artificial intelligence and reasoning, EPiC series in computing, vol 57, pp 534–542. EasyChair. https://doi.org/10.29007/fhgn. https://easychair.org/publications/paper/k7BQ

  33. Martins R, Manquinho V, Lynce I (2010) Improving search space splitting for parallel SAT solving. 2010 22nd IEEE International Conference on Tools with Artificial Intelligence 1:336–343. https://doi.org/10.1109/ICTAI.2010.56

    Article  Google Scholar 

  34. Microsoft (2004) Static driver verifier. http://msdn.microsoft.com/en-us/library/windows/hardware/ff552808(v=vs.85).aspx

  35. Microsoft (2004) Static driver verifier benchmarks. https://github.com/boogie-org/sdvbench

  36. Wintersteiger CM, Hamadi Y, Moura L (2009) A concurrent portfolio approach to SMT solving. In: Proceedings of the 21st international conference on computer aided verification, CAV 09. Springer, pp 715–720

  37. Zhang H, Bonacina MP, Hsiang J (1996) PSATO: a distributed propositional prover and its application to quasigroup problems. J Symbol Comput 21(4):543–560. https://doi.org/10.1006/jsco.1996.0030

    Article  MathSciNet  MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Prantik Chatterjee.

Additional information

Publisher's Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Chatterjee, P., Roy, S., Diep, B.P. et al. Distributed bounded model checking. Form Methods Syst Des (2022). https://doi.org/10.1007/s10703-021-00385-1

Download citation

  • Received:

  • Accepted:

  • Published:

  • DOI: https://doi.org/10.1007/s10703-021-00385-1

Navigation