C程序证明策略在Coq中的设计和实现

来源 :中国科学技术大学 | 被引量 : 0次 | 上传用户:allpass001
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
计算机系统已在国防、通讯、金融、能源、交通、医疗等关键领域中得到广泛应用,构建高可信系统已成为世界范围的重要课题。其中操作系统内核的安全可靠性是构建高可信计算机系统的关键,任何一个微小的内核错误都有可能导致整个计算机系统崩溃。形式化程序验证是使用逻辑推理系统来保证计算机程序的正确性,对于规模相对较小而设计复杂的内核程序而言,它是保证其安全可靠的有效方法之一。底层的系统软件大都采用C语言编写,而C程序中的指针操作和系统软件中数据结构间复杂的逻辑关系,使得验证系统软件的程序逻辑的断言语言需要具有足够的表达能力。然而,具有足够表达力的断言语言推理的不可判定性导致推理验证的过程无法完全自动化,而手动验证系统软件需要耗费大量的人力和物力。因此,如何在不牺牲逻辑断言的表达力的前提下,尽可能的提高C程序的验证效率是一个亟待解决的问题。本文通过开发证明策略来提高C程序在定理证明工具Coq中的验证效率。由于人工交互的手动证明在验证复杂系统软件中不可避免,因此在提供自动化支持的过程中同时需要兼顾以下两个方面:一方面,需要尽可能的减少手动证明的工作量;另一方面,当证明策略失败时,能够产生对用户有用的出错提示信息,这样用户可以根据提示信息快速地定位问题所在,或者手动证明那些无法自动证明的命题,或者通过调整规范或代码来完成证明。基于上述考虑,本文开发了一组C程序的实用证明策略,包括自动证明分离逻辑断言之间蕴含关系的证明策略和自动产生验证条件并证明Hoare三元组的证明策略,它们同时兼顾验证效率和易用性。本文工作的主要贡献如下:·本文将数据结构形状相关的领域专用知识(譬如单链表)引入到证明策略的实现中,并对相关归纳谓词做自动展开来减少手动证明的工作量,从而提高C程序的验证效率。·本文通过在证明策略中引入预处理阶段来反馈出错提示信息帮助用户定位自动证明失败的问题所在,这在进行人工交互式证明时极大地提高了证明策略的可用性和易用性。·本文根据上述两个想法在定理证明工具Coq中实现了一组C程序证明策略(约一万行Coq代码),它们能用于全自动的验证一些简单的操作单链表的C程序。
其他文献
Web服务是一种崭新的分布式计算模型,它由一系列相关技术和标准组成,如XML, SOAP, WSDL和UDDI等。Web服务具有完全的平台无关性、语言无关性,其主要目标就是要在现有各种异构
虚拟机管理器(VMM)在软件层实现硬件抽象,将物理资源映射到多个上层客户操作系统中。基于虚拟化的平台布置,比如将Web服务器,应用程序服务器和数据库服务器集合到一台物理计算机
我国的湖泊资源非常丰富,对湖泊的有效管理尤为重要。为实现我国“全面协调可持续发展”的方针,对湖泊监管系统的研究是有重要的现实意义。随着改革开放的不断深入,不法分子在经
随着计算机技术的飞速发展,数字视频产品在日常生活和商用上的应用也越来越广泛。大容量存储技术与网络技术的发展在方便数字视频的复制传播的同时,也为侵权者肆意更改并大量非
随着Internet的普及,企业级网络应用的增长,VPN作为网络安全解决方案的一种,广泛应用于各种企事业单位的异地网络通信。随着VPN的广泛应用,用户对VPN的需求已经从基础的实现安全
网络的快速发展给人们的交流提供了方便,但同时也带来了问题,如果不加以保护网上传输的信息,就有可能被未授权者获得,从而造成巨大的损失。因此,人们必须采取各种机制来保护
蓝牙(Bluetooth)是一种短距离无线通信技术,利用蓝牙可以有效地简化移动设备之间的通信。作为一项新兴的技术,蓝牙以其强有力的技术背景和良好的市场预期,逐渐被业界所接受。
P2P技术,也称对等网络(Peer to Peer)技术,它与客户端/服务器(Client/Server)结构(也就是WWW所采用的结构方式)的一个本质区别是:整个网络结构中不存在中心节点(或中心服务器)。在
随着电网建设的发展,继电保护信号对通道的要求日益提高。目前电力光纤网络受到继保通信行业广泛关注,它依附于电力线路走廊,安全可靠,不受电磁干扰,成为继保通道的首选方案。但利
近年来,包括智能手机和平板电脑在内的移动智能终端发展迅猛,尤其是其在移动通信和多媒体处理上的能力均得到了极大的提升。这些设备均配备有高清摄像头、触摸屏及高性能的处