Cooperative Software Verification via Dynamic Program Splitting
Cedric Richter, Marek Chalupa, Marie-Christine Jakobs, Heike Wehrheim
摘要
Cooperative software verification divides the task of software verification among several verification tools in order to increase efficiency and effectiveness. The basic approach is to let verifiers work on different parts of a program and at the end join verification results. While this idea is intuitively appealing, cooperative verification is usually hindered by the fact that program decomposition (1) is often static, disregarding strengths and weaknesses of employed verifiers, and (2) often represents the decomposed program parts in a specific proprietary format, thereby making the use of off-the-shelf verifiers in cooperative verification difficult. In this paper, we propose a novel cooperative verification scheme that we call dynamic program splitting (DPS). Splitting decomposes programs into (smaller) programs, and thus directly enables the use of off-the-shelf tools. In DPS, splitting is dynamically applied on demand: Verification starts by giving a verification task (a program plus a correctness specification) to a verifier <tex xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink"></tex>. Whenever <tex xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink"></tex> finds the current task to be hard to verify, it splits the task (i.e., the program) and restarts verification on subtasks. DPS continues until (1) a violation is found, (2) all subtasks are completed or (3) some user-defined stopping criterion is met. In the latter case, the remaining uncompleted subtasks are merged into a single one and are given to a next verifier <tex xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink"></tex>, repeating the same procedure on the still unverified program parts. This way, the decomposition is steered by what is hard to verify for particular verifiers, leveraging their complementary strengths. We have implemented dynamic program splitting and evaluated it on benchmarks of the annual software verification competition SV-COMP. The evaluation shows that cooperative verification with DPS is able to solve verification tasks that none of the constituent verifiers can solve, without any significant overhead.
问问这篇 Paper
智能体会读完全文。
Lune 把这篇 Paper 索引到了每一个公式,引用它的顶会 Paper 也一样。你提问,回答直接引用原文。
它引用的顶会 Paper6
- Driller: Augmenting Fuzzing Through Selective Symbolic ExecutionNick Stephens, John Grosen, Christopher Salls, Andrew Dutcher 等NDSS 2016 · 被引用 1,021 次
- Parallel and distributed bounded model checking of multi-threaded programsOmar Inverso, Catia TrubianiPPoPP 2020 · 被引用 42 次
- HyDiff: hybrid differential software analysisYannic Noller, Corina S. Pasareanu, Marcel Böhme, Youcheng Sun 等ICSE 2020 · 被引用 37 次
- Modular collaborative program analysis in OPALDominik Helm, Florian Kübler, Michael Reif, Michael Eichberg 等FSE 2020 · 被引用 35 次
- Decomposing Software Verification into Off-the-Shelf Components: An Application to CEGARDirk Beyer, Jan Haltermann, Thomas Lemberger, Heike WehrheimICSE 2022 · 被引用 17 次
相关 Paper
- Decomposing Software Verification using Distributed Summary SynthesisDirk Beyer, Matthias Kettl, Thomas LembergerFSE 2024 · 被引用 3 次
- Software Model Checking via Summary-Guided SearchRuijie Fang, Zachary Kincaid, Thomas RepsOOPSLA 2025
- SATune: A Study-Driven Auto-Tuning Approach for Configurable Software Verification ToolsUgur Koc, Austin Mordahl, Shiyi Wei, Jeffrey S. Foster 等ASE 2021 · 被引用 6 次
- Attend and Represent: A Novel View on Algorithm Selection for Software VerificationCedric Richter, Heike WehrheimASE 2020 · 被引用 11 次
- Non-termination Witnesses and Their ValidationZsófia Ádám, Paulína Ayaziová, Levente Bajczi, Dirk Beyer 等ASE 2025 · 被引用 2 次
