安全C语言程序验证器原型的研发经验与成果.pptVIP

  • 1
  • 0
  • 约9.07千字
  • 约 25页
  • 2019-07-02 发布于天津
  • 举报

安全C语言程序验证器原型的研发经验与成果.ppt

中国科大安全语言程序验证器的研发报告人陈意云中国科学技术大学程序验证器简介对一个文件称为模块验证的数据流程图对各模块连接验证的有用信息语法分析和类型检查代码和标注的中间表示代码及其注释中的标注验证条件验证条件生成器自动定理证明器验证条件及其证明情况各验证条件是否得证有助于排错的信息用户界面工具简单的验证实例二分查找代码白色标注绿色初步的辅助排错功能改动代码原是初步的辅助排错功能改动代码原是发现断言证明不了初步的辅助排错功能辅助排错信息红色的和分别表示相关断言在蕴涵式后件的和个分支中未能证明初步的

* * * * * * * * * * * * * * * * * * 中国科大 安全C语言程序验证器的研发 报告人:陈意云 中国科学技术大学 0551 yiyun@ /~yiyun/ 程序验证器简介 对一个.c文件(称为模块)验证的数据流程图 对各模块连接 验证的有用信息 语法分析和 类型检查 代码和标注 的中间表示 代码及其注 释中的标注 验证条件 验证条件 生成器 自动定理 证明器 验证条件及其证明情况 1. 各验证条件是否得证 2. 有助于排错的信息 用户界面 工具 简单的验证实例:二分查找 int m = 100; typedef int array[100]; array a; /*@requires m==100(\forall integer n:[0..m-2]. a[n]a[n+1]); ensures m == 100 -1 = \result \result = m-1 (\result = 0 a[\result] == val || \result == -1 (\forall integer n:[0.. m-1]. a[n] != val)); */ int bsearch(int val){ int i, j, k; i = 0; j = m-1; /*@loop invariant m==100 0 =i= m -1= j =m-1 (\forall integer n:[0..m-2].a[n] a[n+1]) (j-i = -1 (\forall integer n:[j+1..m-1]. val a[n]) (\forall integer n:[0..i-1]. val a[n]) || j-i == -2 k == i-1 val == a[k]) ; */ while(i = j) { k = i + (j - i)/2; if(val = a[k]) j = k -1; if(val = a[k]) i = k + 1;} if(j - i == -1) k = -1; return k; } * 代码:白色,标注:绿色 初步的辅助排错功能 int m = 100; typedef int array[100]; array a; /*@requires m==100(\forall integer n:[0..m-2]. a[n]a[n+1]); ensures m == 100 -1 = \result \result = m-1 (\result = 0 a[\result] == val || \result == -1 (\forall integer n:[0.. m-1]. a[n] != val)); */ // 改动代码 int bsearch(int val){ int i, j, k; i = 0; j = m-0; // 原是j = m-1 /*@loop invariant m==100 0 =i= m -1= j =m-1 (\forall integer n:[0..m-2].a[n] a[n+1]) (j-i = -1 (\forall integer n:[j+1..m-1]. val a[n]) (\forall integer n:[0..i-1]. val a[n]) || j-i == -2 k == i-1 val == a[k]) ; */ while(i = j) { k = i + (j - i)/2; if(val = a[k]) j = k -1; if(val = a[k]) i = k + 1;} if(j - i == -1) k = -1; return k; } * 初步的辅助排错功能 int m = 100; typedef int array[100]; array a; /*@requires m==100(\forall integer n:[0..m-2]. a[n]a[n+1]); ensures m == 100 -1 = \result \result = m-1

文档评论(0)

1亿VIP精品文档

相关文档