Refined Modularization for Bounded Model Checking Through Precondition Generation

Marko Kleine Büning, Johannes Meuer, Carsten Sinz

Published: 2022, Last Modified: 15 May 2026ICFEM 2022EveryoneRevisionsBibTeXCC BY-SA 4.0
Abstract: Modularization is a widespread approach to tackle software complexity, not only in development but also in verification. Most approaches are either based on manual specifications, which are labor-intensive for large-scale projects, or on program abstractions that have the potential to create false positives. In this paper, we propose an approach for modular bounded model checking extended by refined modularization based on program abstractions and learning of preconditions. Modules, which consist of subsets of a program’s functions, are extended by including increasingly larger calling contexts. Potentially under-approximated preconditions are generated by enumerating relevant information from bounded model checking generated counterexamples, including memory assignments. These preconditions are then extended through a tree-based learning approach that generalizes the generated data-points. Through substitution of function calls, preconditions are iteratively pushed through the program to eliminate potential false positives. We evaluate our approach on three real-world software projects demonstrating a significant increase in precision.
Loading