首页> 外文期刊>Science of Computer Programming >Semantics-based generation of verification conditions via program specialization
【24h】

Semantics-based generation of verification conditions via program specialization

机译:通过程序专业化基于语义的验证条件生成

获取原文
获取原文并翻译 | 示例

摘要

We present a method for automatically generating verification conditions for a class of imperative programs and safety properties. Our method is parametric with respect to the semantics of the imperative programming language, as it generates the verification conditions by specializing, using unfold/fold transformation rules, a Horn clause interpreter that encodes that semantics. We define a multi-step operational semantics for a fragment of the C language and compare the verification conditions obtained by using this semantics with those obtained by using a more traditional small-step semantics. The flexibility of the approach is further demonstrated by showing that it is possible to easily take into account alternative operational semantics definitions for modeling additional language features. We have proved that the verification condition generation takes a number of transformation steps that is linear with respect to the size of the imperative program to be verified. Also the size of the verification conditions is linear with respect to the size of the imperative program. Besides the theoretical computational complexity analysis, we also provide an experimental evaluation of the method by generating verification conditions using the multi-step and the small-step semantics for a few hundreds of programs taken from various publicly available benchmarks, and by checking the satisfiability of these verification conditions by using state-of-the-art Horn clause solvers. These experiments show that automated verification of programs from a formal definition of the operational semantics is indeed feasible in practice.
机译:我们提出了一种自动为一类命令性程序和安全属性生成验证条件的方法。我们的方法相对于命令式编程语言的语义是参数化的,因为它通过使用展开/折叠转换规则专门设计了一种编码该语义的Horn子句解释器来生成验证条件。我们为C语言的一个片段定义了一个多步骤操作语义,并比较了使用此语义获得的验证条件和使用更传统的小步骤语义获得的验证条件。通过显示可以轻松考虑用于对其他语言功能进行建模的替代操作语义定义,可以进一步证明该方法的灵活性。我们已经证明,验证条件生成采取了许多转换步骤,这些步骤相对于要验证的命令程序的大小是线性的。验证条件的大小相对于命令式程序的大小也是线性的。除了理论上的计算复杂度分析外,我们还通过使用多步和小步语义为来自各种公开基准的数百个程序生成验证条件,并检查可满足性来提供该方法的实验评估。这些验证条件通过使用最新的Horn子句求解器来实现。这些实验表明,从操作语义的正式定义中自动验证程序在实践中确实是可行的。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号