Affiliation:
1. Microsoft Research, Redmond, WA
2. University of California, Los Angeles, CA
Abstract
Predicate abstraction is a technique for creating abstract models of software that are amenable to model checking algorithms. We show how polymorphism, a well-known concept in programming languages and program analysis, can be incorporated in a predicate abstraction algorithm for C programs. The use of polymorphism in predicates, via the introduction of symbolic names for values, allows us to model the effect of a procedure independent of its calling contexts. Therefore, we can safely and precisely abstract a procedure once and then reuse this abstraction across multiple calls and multiple applications containing the procedure. Polymorphism also enables us to handle programs that need to be analyzed in an open environment, for all possible callers. We have proved that our algorithm is sound and have implemented it in the C2BP tool as part of the SLAM software model checking toolkit.
Publisher
Association for Computing Machinery (ACM)
Cited by
21 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. A Correctness and Incorrectness Program Logic;Journal of the ACM;2023-03-25
2. Abstract interpretation repair;Proceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation;2022-06-09
3. Verifying correct usage of context-free API protocols;Proceedings of the ACM on Programming Languages;2021-01-04
4. Verifying equivalence of database-driven applications;Proceedings of the ACM on Programming Languages;2018-01
5. Statistical Model Checking: Past, Present, and Future;Leveraging Applications of Formal Methods, Verification and Validation: Foundational Techniques;2016