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.
Similar content being viewed by others
Notes
Hydra is available in the hydra branch of https://github.com/boogie-org/corral.git.
We disallow main as a special case.
We achieved similar performance with heuristics that explicitly select candidates that divide the proof-relevant callsites equally.
The newer versions of Z3 attempt best-effort unsat core minimization with the core.minimize option.
References
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
Albarghouthi A, Kumar R, Nori AV, Rajamani SK (2012) Parallelizing top-down interprocedural analyses. ACM SIGPLAN Not 47(6):217–228
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
Ball T, Levin V, Rajamani SK (2011) A decade of software model checking with slam. Commun ACM 54(7):68–76
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
Barnett M, Leino KRM, Moskal M, Schulte W (2009) Boogie: an intermediate verification language. https://github.com/boogie-org/boogie/
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Kahsai T, Tinelli C (2011) PKIND: A parallel k-induction based model checker. EPTCS 72. https://doi.org/10.4204/EPTCS.72.6
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
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
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
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
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/
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
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
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
Microsoft (2004) Static driver verifier. http://msdn.microsoft.com/en-us/library/windows/hardware/ff552808(v=vs.85).aspx
Microsoft (2004) Static driver verifier benchmarks. https://github.com/boogie-org/sdvbench
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
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
Author information
Authors and Affiliations
Corresponding author
Additional information
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Rights and permissions
About this article
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
Received:
Accepted:
Published:
DOI: https://doi.org/10.1007/s10703-021-00385-1