形状图逻辑和形状系统.PDFVIP

  • 6
  • 0
  • 约6.26万字
  • 约 25页
  • 2017-06-05 发布于四川
  • 举报
形状图逻辑和形状系统

形状图逻辑和形状系统 (中国科学技术大学 计算机科学与技术学院,安徽 合肥 230026) (中国科学技术大学 苏州研究院软件安全实验室,江苏 苏州215123) 摘要:指针程序的分析和验证一直是个难题,本文用形状图逻辑和形状系统来解决其中的困难,并 采取先用形状分析构建各程序点的形状图,再借助形状图进行其它性质验证的两阶段方式完成指针程序的 验证。所实现的系统原型可自动验证使用splay tree, treap, AVL tree 和 AA tree等数据结构的程序。 本文提出一种直接把形状图作为程序中指针断言的形状图逻辑。它是Hoare逻辑的一种扩展,可用于 对操作易变数据结构的指针程序的分析和验证。用形状图表示指针断言的好处是,便于程序验证阶段获取 所需的指针信息。其次,提出形状系统概念。它要求程序员在声明递归结构体的类型时,指明其指针域参 与构建的数据结构的形状,在形状分析阶段的形状检查据此排除所构建的形状偏离程序员期望的程序。其 好处是可免去程序员为程序验证提供有关指针的函数前后条件和循环不变式。此外,还提出利用形状图来 消除访问路径别名,让程序验证阶段对形状以外性质的验证仍用Hoare逻辑的规则进行推理的方法。该方 法使得程序验证阶段生成的验证条件仍可以用通常的定理证明器来证明。 关键词: 形状图逻辑、形状系统、程序验证、形状分析、指针逻辑 1、引言 随着国家、社会和日常生活对软件系统的依赖程度日益增长,复杂软件系统的正确、 安全(包括safety和security )和可靠等对安全攸关的基础设施和应用是至关重要的。安全 攸关软件的高可信成了保障国家安全、保持经济可持续发展和维护社会稳定的必要条件。 形式验证是提高软件可信程度的重要方法。粗略地说,软件的形式验证有两种途径。 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] 。虽然这些 工具已在实验室研发出来,但是尚无可供工业界使用的产品问世。究其原因,根源在于自 动定理证明方面的困难。因为不管是验证条件的证明、循环不变式的推断、访问路径(访 问堆变量的表达式)的别名判断、断言语言的表达能力和领域专用逻辑的设计等,最终都 受到自动定理证明器的能力的影响。 在研究自动定理证明技术的同时,也应该考虑怎样降低对自动定理证明器的能力的期 望。例如,设计新的编程语言机制来提高合法程序的门槛,以排除部分有逻辑错误的程 序。还有,采用程序分析方法来收集程序信息,用所得信息来支持程序验证。这些都有可 能减轻自动定理证明器的负担。本文介绍在指针程序验证方法的研究中,我们采用先形状 分析,后程序验证所取得的进展。 1 第一,提出一种把形状图直接作为指针相等断言集以及指针有效性断言集的方法,并 基于此设计出形状图逻辑。形状图逻辑是Hoare逻辑的一种扩展,主要增加了对指针操作语 句的推理规则。该逻辑可用于操作易变数据结构的指针程序的分析和验证。 基于对指针算术运算和取地址运算( )等的限制,本文的形状图可以精确表达相应 程序点指针(包括静态声明的指针和动态分配的结构体变量中的域指针)之间的相等关

文档评论(0)

1亿VIP精品文档

相关文档