• 中国计算机学会会刊
  • 中国科技核心期刊
  • 中文核心期刊

J4 ›› 2010, Vol. 32 ›› Issue (9): 76-80.doi: 10.3969/j.issn.1007130X.2010.

• 论文 • 上一篇    下一篇

基于QBF的循环不变式构造技术

陈石坤1,李舟军2   

  1. (1.国防科学技术大学计算机学院,湖南 长沙 410073;2.北京航空航天大学计算机学院,北京 100191)
  • 收稿日期:2010-03-10 修回日期:2010-06-20 出版日期:2010-09-02 发布日期:2010-09-02
  • 作者简介:陈石坤(1980),男,云南陆良人,博士,研究方向为信息安全和软件验证;李舟军,博士,教授,研究方向为高可信软件技术、网络与信息安全技术、智能信息处理技术。
  • 基金资助:

    国家自然科学基金资助项目(60703075,90718017);教育部高等学校博士学科点专项基金资助项目(20070006055)

Constructing Program Invariants Based on QBF

CHEN Shikun1,LI Zhoujun2   

  1. (1.School of Computer Science,National University of Defense Technology,Changsha 410073;
    2.School of Computer Science,Beihang University,Beijing 100083,China)
  • Received:2010-03-10 Revised:2010-06-20 Online:2010-09-02 Published:2010-09-02

摘要:

构造循环不变式是程序验证的核心问题之一。主流的循环不变式构造方法通常假设程序中的变量在无限数域上取值,然而程序执行过程中变量都是用有限长度的位向量来表示,无限数域上的循环不变式在有限数域的程序中可能不再是不变式,反之亦然。针对这一问题,本文给出一种基于QBF求解的构造有限数域上循环不变式的方法。该方法可用于构造类型丰富的不变式,包括线性(或多项式)等式(或不等式)不变式,支持加、减、乘、除、移位、位操作等,允许不变式中出现量词。本文也例证了该方法在程序终止性证明、循环上界分析、程序正确性证明等方面的应用价值。

关键词: 程序验证, 循环不变式, 带量词的布尔公式

Abstract:

Constructing loop invariants is one of the key problems of program verification. Stateoftheart approaches to invariant generation usually assume that program variables are evaluated over infinite domains such as rational or integer. Actually,during the execution of a program,all variables are expressed using bitvectors with a limited width and evaluated over finite domains. Many invariants suitable for infinite domains may be invalid in finite domains,and vice versa. This paper proposes an approach based on QBF (Quantified Boolean Formula) to construct invariants for programs whose variables are evaluated over finite domains. It can be used to discover a rich class of invariants including linear (or polynomial) equality (or inequality) invariants involving such operations as addition,multiplication,division,shift,bitwise operation,even quantifiers. And we also exemplify the usefulness of this approach in the termination analysis,the bound analysis and the  verification of correctness.

Key words: program verification;loop Invariant;QBF