-
题名形状图理论的定理证明
被引量:4
- 1
-
-
作者
张昱
陈意云
李兆鹏
-
机构
中国科学技术大学计算机科学与技术学院
中国科学技术大学苏州研究院软件安全实验室
-
出处
《计算机学报》
EI
CSCD
北大核心
2016年第12期2460-2480,共21页
-
基金
国家“八六三”高技术研究发展计划项目基金(2012AA010901)
国家自然科学基金(61170018,61229201)资助~~
-
文摘
验证操作易变数据结构的指针程序仍面临很多挑战.数据结构中严重的指针别名显著地复杂化对操作这些结构的程序的推理.为分析和验证操作易变数据结构的指针程序,文中提出了形状图逻辑.形状图是描述程序中静态声明的堆指针变量和动态分配的结构体中指针域变量的指向的一种有向图,能准确表达指针的有效性和指针之间的相等性,可用于判断两个访问表达式是否是别名.形状图逻辑是Hoare逻辑的一种扩展,是一种直接将形状图作为程序中指针断言集的程序逻辑.该文研究形状图的等价理论和蕴含理论以及它们的判定方法和应用.首先,把形状图及其等价规则和蕴含规则分别类比为代数项及其等式规则和重写规则,像研究代数规范的理论那样来研究形状图理论.该文定义了形状图的语法理论和语义理论,定义了形状图重写系统及其终止性、局部合流性和合流性,然后得到基于形状图重写的形状图等价判定和蕴含判定的方法.其次,提出循环不变形状图和递归函数前后形状图的自动推断方法.借助形状图理论的判定方法,该文把一个基于抽象解释的推断循环不变式的一般方法改编成推断循环不变形状图的方法.由于计算终止的递归函数总有非递归的出口,可以先通过非递归路径得到函数的后形状图的初值,然后再在递归路径上迭代求解.从而,可以像推断循环不变形状图那样来推断递归函数的前后形状图.第三,参照Nelson-Oppen框架,提出形状图理论和整数理论组合的一种判定方法.对易变数据结构,除了关心数据结构各节点是否连成预定的形状外,往往还关心数据在这些节点间的排列等特性,它们不能脱离易变数据结构的形状特征而单独验证.为此,所提出的组合判定方法针对这类程序的验证条件的特点,利用程序分析阶段得到的形状图对验证条件的前件中的符号断言按形状图的节点分组;然后运用整数理论为各节点推导出尽可能多的性质;最后才交由定理证明器Z3去自动验证.这种方式有效地避免验证条件证明过程的不终止.基于形状图逻辑以及文中的工作,我们所开发的程序验证系统原型减轻了自动定理证明器的负担,并且能验证易变数据结构上较为复杂的程序,如有序循环双向链表、二叉排序树、伸展树、树堆、二叉平衡树和AA树的插入和删除函数.
-
关键词
形状图逻辑
形状分析
程序验证
自动定理证明
循环不变式的推断
-
Keywords
shape graph logic
shape analysis
program verification
automated theorem proving
loop-invariant inference
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-
-
题名指针类型递归函数前后形状图的自动推断
被引量:3
- 2
-
-
作者
宋艳辉
李兆鹏
陈意云
-
机构
中国科学技术大学计算机科学与技术学院
中国科学科技大学苏州研究院软件安全实验室
-
出处
《小型微型计算机系统》
CSCD
北大核心
2014年第4期759-764,共6页
-
基金
国家自然科学基金项目(61170018
61003043
61229201)资助
-
文摘
在一个基于形状图逻辑的自动程序验证原型系统上,设计与实现了指针类型递归函数前后形状图的自动推断方法.该方法类似于循环不变形状图的推断方法,区别在于它首先沿着函数的非递归路径,从函数入口的函数前形状图推断函数出口的函数后形状图的初值,然后沿着函数的递归路径对函数后形状图进行迭代求解.本文还设计了上述自动推断方法中需要用到的形状图之间蕴涵关系的判定方法.本文方法使得原型系统扩展到能够自动验证指针类型的递归函数.
-
关键词
程序验证
形状图逻辑
形状分析
递归函数
不变式的自动推断
-
Keywords
program verification
shape graph logic
shape analysis
recursive functions
invariant inference
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-
-
题名二叉树程序循环不变形状图的自动推断
被引量:2
- 3
-
-
作者
李云龙
罗奇鸣
陈意云
-
机构
中国科学技术大学计算机科学与技术学院
中国科大先进技术研究院中国科大-国创高可信软件工程中心
-
出处
《小型微型计算机系统》
CSCD
北大核心
2017年第5期913-918,共6页
-
基金
国家自然科学基金项目(61170018
61229201)资助
-
文摘
在一个基于形状图逻辑的C语言程序自动验证系统上,设计并实现了二叉树形状程序的循环不变形状图的自动推断方法.该方法与单链表程序循环不变形状图的推断方法的区别在于通过增加二叉树形状的等价和蕴含规则,使得在形状图的演算时支持二叉树中不确定方向的展开和折叠.此外,为了解决形状图变换规则变化给循环不变形状图推断带来的问题,还设计了算法用以判断在推断循环不变形状图的过程中是否使用新增的规则,并将判断算法融合到循环不变形状图推断流程中.本文方法使得系统支持自动推断二叉树指针程序的循环不变形状图.
-
关键词
程序验证
形状图逻辑
形状分析
二叉树
循环不变形状图的自动推断
-
Keywords
program verification
shape graph logic
shape analysis
binary tree
automatic inference of loop-invariant shape graphs
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-
-
题名安全C语言验证器中形状系统的形状检查方法
被引量:1
- 4
-
-
作者
孙科
罗奇鸣
李薛剑
陈意云
-
机构
中国科学技术大学计算机科学与技术学院
-
出处
《小型微型计算机系统》
CSCD
北大核心
2019年第1期133-140,共8页
-
基金
国家自然科学基金项目(61170018
61229201)资助
-
文摘
在一个基于霍尔逻辑和形状图逻辑的C语言自动验证器中,设计并实现了对形状图中所含易变数据结构的形状检查方法.本工作在验证器的形状系统中实现了显式形状检查与隐式形状检查,并通过引入不同的形状级别,使验证器能够根据不同的严格程度及时发现程序中不符合形状定义的易变数据结构,避免对形状图逻辑的相关演算造成影响.此外,为分解易变数据结构中不同指针域带来的复杂性,形状检查方法引入了三阶段处理框架:形状分割、形状分析及形状推断,分别实现形状图的预处理,针对指针指向与节点类型等方面进行分析,以及根据相关规则推断易变数据结构的形状级别.
-
关键词
程序验证
形状图逻辑
形状系统
形状检查
-
Keywords
program verification
shape graph logic
shape system
shape checking
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-
-
题名一个程序验证器的设计和实现
被引量:11
- 5
-
-
作者
张志天
李兆鹏
陈意云
刘刚
-
机构
中国科学技术大学计算机科学技术学院
中国科学技术大学苏州研究院软件安全实验室
-
出处
《计算机研究与发展》
EI
CSCD
北大核心
2013年第5期1044-1054,共11页
-
基金
国家自然科学基金项目(61170018
61003043)
-
文摘
形式验证是提高软件可信程度的重要方法,基于逻辑推理对程序性质进行严格的自动证明是当前的研究热点,但尚无可供工业界使用的产品,其根源在于自动定理证明方面的困难.介绍在通过程序分析建立起各程序点的形状图的基础上,如何利用形状图提供的信息来支持程序验证的方法.提出一种利用形状图信息来消除访问路径别名,使得指针程序中非指针部分的性质仍然可以用Hoare逻辑来进行验证的方法,并证明了该方法的可靠性.还提出一种在不使用自定义谓词的情况下,易变数据结构上数据性质的描述和验证方法.另外,介绍所设计并实现的基于上述方法的PointerC语言的程序验证器的原型.它不仅能自动验证操作易变数据结构程序的性质,也能自动验证使用一维数组的程序的性质.
-
关键词
程序验证
HOARE逻辑
形状图逻辑
程序分析
分离逻辑
-
Keywords
program verification
Hoare logic~ shape graph logic
program analysis
separation logic
-
分类号
TP301
[自动化与计算机技术—计算机系统结构]
-
-
题名断言语言支持自定义谓词的程序验证器原型
被引量:3
- 6
-
-
作者
徐文义
陈意云
李兆鹏
-
机构
中国科学技术大学计算机科学与技术学院
中国科学技术大学苏州研究院软件安全实验室
-
出处
《小型微型计算机系统》
CSCD
北大核心
2013年第7期1482-1486,共5页
-
基金
国家自然科学基金项目(61003043
61170018)资助
-
文摘
基于逻辑推理的方法进行程序验证是形式化程序验证的研究热点.目前的自动验证工具为了保证自动性,对描述程序性质的断言语言都有较多限制,导致程序的某些递归性质难以用断言语言表述.本文在一个面向指针程序、基于先前自行设计的形状图逻辑、依赖于自动定理证明工具Z3的自动程序验证原型系统上,通过在断言语言中引入自定义谓词来增强断言语言的表达能力,使得该原型系统不仅能自动验证含操作易变数据结构的程序的性质,也能自动验证一些不含指针的程序的性质.
-
关键词
程序验证
HOARE逻辑
形状图逻辑
程序分析
自定义谓词
-
Keywords
software safety
hoare logic
user-defined predicates
verification
prover
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-