Language-Theoretic Abstraction Refinement
Language-Theoretic Abstraction Refinement
复制标题
语言理论抽象细化
DOI:
10.1007/978-3-642-28872-2_25
复制
发表时间:
2012
期刊:
影响因子:
--
通讯作者:
R. Meyer
中科院分区:
文献类型:
--
作者:
Zhenyue Long;Georgel Calin;R. Majumdar;R. Meyer
We give a language-theoretic counterexample-guided abstraction refinement (CEGAR) algorithm for the safety verification of recursive multi-threaded programs. First, we reduce safety verification to the (undecidable) language emptiness problem for the intersection of context-free languages. Initially, our CEGAR procedure overapproximates the intersection by a context-free language. If the overapproximation is empty, we declare the system safe. Otherwise, we compute a bounded language from the overapproximation and check emptiness for the intersection of the context free languages and the bounded language (which is decidable). If the intersection is non-empty, we report a bug. If empty, we refine the overapproximation by removing the bounded language and try again. The key idea of the CEGAR loop is the language-theoretic view: different strategies to get regular overapproximations and bounded approximations of the intersection give different implementations. We give concrete algorithms to approximate context-free languages using regular languages and to generate bounded languages representing a family of counterexamples. We have implemented our algorithms and provide an experimental comparison on various choices for the regular overapproximation and the bounded underapproximation.