Abstract
AbstractLoop abstraction is a central technique for program analysis, because loops can cause large state-space representations if they are unfolded. In many cases, simple tricks can accelerate the program analysis significantly. There are several successful techniques for loop abstraction, but they are hard-wired into different tools and therefore difficult to compare and experiment with. We present a framework that allows us to implement different loop abstractions in one common environment, where each technique can be freely switched on and off on-the-fly during the analysis. We treat loops as part of the abstract model of the program, and use counterexample-guided abstraction refinement to increase the precision of the analysis by dynamically activating particular techniques for loop abstraction. The framework is independent from the underlying abstract domain of the program analysis, and can therefore be used for several different program analyses. Furthermore, our framework offers a sound transformation of the input program to a modified, more abstract output program, which is unsafe if the input program is unsafe. This allows loop abstraction to be used by other verifiers and our improvements are not ‘locked in’ to our verifier. We implemented several existing approaches and evaluate their effects on the program analysis.
Publisher
Springer International Publishing
Cited by
3 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Software Verification with CPAchecker 3.0: Tutorial and User Guide;Lecture Notes in Computer Science;2024-09-13
2. CEGAR-PT: A Tool for Abstraction by Program Transformation;2023 38th IEEE/ACM International Conference on Automated Software Engineering (ASE);2023-09-11
3. Cooperative Verification: Towards Reliable Safety-Critical Systems (Invited Talk);Proceedings of the 8th ACM SIGPLAN International Workshop on Formal Techniques for Safety-Critical Systems;2022-11-29