形状系统及其应用 - 苏州研究院.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
形状系统及其应用 - 苏州研究院

形状图逻辑和形状系统 (中国科学技术大学 计算机科学与技术学院,安徽 合肥 230026??) (中国科学技术大学 苏州研究院软件安全实验室,江苏 苏州215123) 摘要:指针程序的分析和验证一直是个难题,本文用形状图逻辑和形状系统来解决其中的困难,并采取先用形状分析构建各程序点的形状图,再借助形状图进行其它性质验证的两阶段方式完成指针程序的验证。所实现的原型系统可自动验证使用splay tree, treap, AVL tree 和 AA tree等数据结构的程序。 本文提出一种直接把形状图作为程序中指针断言的形状图逻辑。它是Hoare逻辑的一种扩展,可用于对操作易变数据结构的指针程序的分析和验证。用形状图表示指针断言的好处是,便于程序验证阶段获取所需的指针信息。其次,提出形状系统概念。它要求程序员在声明递归结构体的类型时,指明其指针域参与构建的数据结构的形状,在形状分析阶段的形状检查据此排除所构建的形状偏离程序员期望的程序。其好处是可免去程序员为程序验证提供有关指针的函数前后条件和循环不变式。此外,还提出利用形状图来消除访问路径别名,让程序验证阶段对形状以外性质的验证仍用Hoare逻辑的规则进行推理的方法。该方法使得程序验证阶段生成的验证条件仍可以用通常的定理证明器来证明。 关键词: 形状图逻辑、形状系统、程序验证、形状分析、1、引言软件的依赖程度日益增长The first approach is model checking, which consists of a systematically exhaustive exploration of the mathematical model。模型检测方法已经在工业界逐步得到应用。The second approach is logical inference. It consists of using a formal version of mathematical reasoning about software systems, usually using theorem proving software such as Isabelle/HOL[1] or Coq[2] theorem provers. 在这种途径中,大部分的研究围绕采用某种演算来产生验证条件,然后用某个定理证明器来证明验证条件,如Ynot[3]、Spec#[4]和ESC/Java[5]。有些研究依靠符号计算及其过程中的定理证明来避免验证条件生成步骤,如smallfoot[6]和jStar[7]。还有的研究采用经严格证明的变换,从抽象规范逐步求精得到具体程序,如Perfect Developer[8]。虽然这些工具已在实验室研发出来,但是尚无可供工业界使用的产品问世。究其原因,根源在于自动定理证明方面的困难。因为不管是验证条件的证明、循环不变式的推断、访问路径(访问堆变量的表达式)的别名判断、断言语言的表达能力和领域专用逻辑的设计等,最终都受到自动定理证明器的能力的影响。 在研究自动定理证明技术的同时,也应该考虑怎样降低对自动定理证明器的能力的期望。例如,设计新的编程语言机制来提高合法程序的门槛,以排除部分有逻辑错误的程序。还有,采用程序分析方法来收集程序信息,用所得信息来支持程序验证。这些都有可能减轻自动定理证明器的负担。本文介绍在指针程序验证方法的研究中,我们采用先形状分析,后程序验证所取得的进展。 第一,提出一种把形状图直接作为指针相等断言集的方法,并基于此设计出形状图逻辑。形状图逻辑是Hoare逻辑的一种扩展,主要增加了对指针操作语句的推理规则。该逻辑可用于操作易变数据结构的指针程序的分析和验证。 基于对指针算术运算和取地址运算()等的限制,本文的形状图可以精确表达相应程序点指针(包括静态声明的指针和动态分配的结构体变量中的域指针)之间的相等关系,并可用来查询访问路径的别名等。在形状分析和程序验证两阶段都把形状图看成图形表示的指针相等断言集,并都用形状图逻辑来进行推理。形状分析阶段主要用其中指针操作语句的规则来构建各程序点的形状图;程序验证阶段则利用形状图提供的信息来验证形状以外的其他程序性质,如二叉树的有序性。可以说,这是把指针性质的证明从程序验证中剥离出来,先行在形状分析阶段完成。两个阶段都采用形状图逻辑有利于整个程序逻辑的可靠性的证明。 用形状图作为指针相等断言的好处是,便于分析时从指针操作语句之前的指针断言集获得其后的指针断言集,也便于程序验证时获取所需的指针信息。例如,指向节点的指针是否多于1个(用于防止内存泄漏),2条访问路径是否互为别名(用于消除访问路径别名)。 第二,提出形状系统概念,粗略地说它类似于类型系统。本文为一个类C小语言PointerC设计一种形状系统,它包括所

文档评论(0)

zhuwo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档