【24h】

Automatic Predicate Abstraction of C Programs

机译:C程序的自动谓词抽象

获取原文

摘要

Model checking has been widely successful in validating and debugging designs in the hardware and protocol domains. However, state-space explosion limits the applicability of model checking tools, so model checkers typically operate on abstractions of systems. Recently, there has been significant interest in applying model checking to software. For infinite-state systems like software, abstraction is even more critical. Techniques for abstracting software are a prerequisite to making software model checking a reality. We present the first algorithm to automatically construct a predicate abstraction of programs written in an industrial programming language such as C, and its implementation in a tool - C2BP. The C2BP tool is part of the SLAM toolkit, which uses a combination of predicate abstraction, model checking, symbolic reasoning, and iterative refinement to statically check temporal safety properties of programs. Predicate abstraction of software has many applications, including detecting program errors, synthesizing program invariants, and improving the precision of program analyses through predicate sensitivity. We discuss our experience applying the C2BP predicate abstraction tool to a variety of problems, ranging from checking that list-manipulating code preserves heap invariants to finding errors in Windows NT device drivers.
机译:在硬件和协议域中,模型检查已成功地验证和调试了设计。但是,状态空间爆炸限制了模型检查工具的适用性,因此模型检查器通常在系统的抽象上运行。最近,人们非常关注将模型检查应用于软件。对于像软件这样的无限状态系统,抽象更为关键。软件抽象技术是使软件模型检查成为现实的先决条件。我们提出了第一个自动构建以工业编程语言(例如C)编写的程序的谓词抽象的算法,以及该算法在工具C2BP中的实现。 C2BP工具是SLAM工具包的一部分,该工具包结合使用谓词抽象,模型检查,符号推理和迭代提炼来静态检查程序的时间安全性。软件的谓词抽象具有许多应用程序,包括检测程序错误,合成程序不变式以及通过谓词敏感性提高程序分析的精度。我们讨论了将C2BP谓词抽象工具应用于各种问题的经验,从检查列表操作代码是否保留堆不变性到发现Windows NT设备驱动程序中的错误,一应俱全。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号