首页> 外文期刊>Fundamenta Informaticae >Program Verification using Constraint Handling Rules and Array Constraint Generalizations
【24h】

Program Verification using Constraint Handling Rules and Array Constraint Generalizations

机译:使用约束处理规则和数组约束归纳进行程序验证

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

摘要

The transformation of constraint logic programs (CLP programs) has been shown to be an effective methodology for verifying properties of imperative programs. By following this methodology, we encode the negation of a partial correctness property of an imperative program progas a predicate incorrect defined by a CLP program T, and we show that prog is correct by transforming T into the empty program (and thus incorrect does not hold) through the application of semantics preserving transformation rules. We can also show that prog is incorrect by transforming T into a program with the fact incorrect (and thus incorrect does hold). Some of the transformation rules perform replacements of constraints that are based on properties of the data structures manipulated by the program prog. In this paper we show that Constraint Handling Rules (CHR) are a suitable formalism for representing and applying constraint replacements during the transformation of CLP programs. In particular, we consider programs thatmanipulate integer arrays and we present a CHR encoding of a constraint replacement strategy based on the theory of arrays. We also propose a novel generalization strategy for constraints on integer arrays that combines CHR constraint replacements with various generalization operators on integer constraints, such as widening and convex hull. Generalization is controlled by additional constraints that relate the variable identifiers in the imperative program prog and the CLP representation of their values. The method presented in this paper has been implemented and we have demonstrated its effectiveness on a set of benchmark programs taken from the literature.
机译:约束逻辑程序(CLP程序)的转换已被证明是一种验证命令式程序属性的有效方法。通过遵循这种方法,我们对命令式程序的部分正确性的否定进行编码,从而对由CLP程序T定义的谓词不正确进行加乘,并通过将T转换为空程序来证明prog是正确的(因此不正确不成立) ),通过应用语义保留转换规则。我们还可以通过将T转换为具有错误事实的程序来证明prog是错误的(因此,错误确实成立了)。一些转换规则基于程序编操作的数据结构的属性来执行约束的替换。在本文中,我们表明约束处理规则(CHR)是在CLP程序转换过程中表示和应用约束替换的合适形式。特别地,我们考虑操纵整数数组的程序,并基于数组理论提出约束替换策略的CHR编码。我们还针对整数数组的约束提出了一种新颖的泛化策略,该策略将CHR约束替换与整数约束(例如加宽和凸包)上的各种泛化运算符结合在一起。泛化由附加的约束控制,这些约束将命令式程序prog中的变量标识符及其值的CLP表示相关联。本文介绍的方法已经实施,我们已经从文献中选取了一套基准程序来证明了其有效性。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号