期刊文献+

A Shape Graph Logic and A Shape System 被引量:5

A Shape Graph Logic and A Shape System
原文传递
导出
摘要 Analysis and verification of pointer programs are still difficult problems so far. This paper uses a shape graph logic and a shape system to solve these problems in two stages. First, shape graphs at every program point are constructed using an analysis tool. Then, they are used to support the verification of other properties (e.g., orderedness). Our prototype supports automatic verification of programs manipulating complex data structures such as splay trees, treaps, AVL trees and AA trees, etc. The proposed shape graph logic, as an extension to Hoare logic, uses shape graphs directly as assertions. It can be used in the analysis and verification of programs manipulating mutable data structures. The benefit using shape graphs as assertions is that it is convenient for acquiring the relations between pointers in the verification stage. The proposed shape system requires programmers to provide lightweight shape declarations in recursive structure type declarations. It can help rule out programs that construct shapes deviating from what programmers expect (reflected in shape declarations) in the analysis stage. As a benefit, programmers need not provide specifications (e.g., pre-/post-conditions, loop invariants) about pointers. Moreover, we present a method doing verification in the second stage using traditional Hoare logic rules directly by eliminating aliasing with the aid of shape graphs. Thus, verification conditions could be discharged by general theorem provers. Analysis and verification of pointer programs are still difficult problems so far. This paper uses a shape graph logic and a shape system to solve these problems in two stages. First, shape graphs at every program point are constructed using an analysis tool. Then, they are used to support the verification of other properties (e.g., orderedness). Our prototype supports automatic verification of programs manipulating complex data structures such as splay trees, treaps, AVL trees and AA trees, etc. The proposed shape graph logic, as an extension to Hoare logic, uses shape graphs directly as assertions. It can be used in the analysis and verification of programs manipulating mutable data structures. The benefit using shape graphs as assertions is that it is convenient for acquiring the relations between pointers in the verification stage. The proposed shape system requires programmers to provide lightweight shape declarations in recursive structure type declarations. It can help rule out programs that construct shapes deviating from what programmers expect (reflected in shape declarations) in the analysis stage. As a benefit, programmers need not provide specifications (e.g., pre-/post-conditions, loop invariants) about pointers. Moreover, we present a method doing verification in the second stage using traditional Hoare logic rules directly by eliminating aliasing with the aid of shape graphs. Thus, verification conditions could be discharged by general theorem provers.
出处 《Journal of Computer Science & Technology》 SCIE EI CSCD 2013年第6期1063-1084,共22页 计算机科学技术学报(英文版)
基金 supported by the National Natural Science Foundation of China under Grant Nos.61003043,61170018 the National High Technology Research and Development 863 Program of China under Grant No.2012AA010901-2 the Postdoctoral Science Foundation of China under Grant No.2012M521250
关键词 shape graph logic program verification shape analysis automated theorem proving loop invariant inference shape graph logic, program verification, shape analysis, automated theorem proving, loop invariant inference
  • 相关文献

参考文献30

  • 1Paulson L C. Isabelle: A Generic Theorem Prover. Springer- Verlag Berlin, 1994.
  • 2Nanevski A, Morrisett G, Shinnar A, Govereau P, Birkedal L. Ynot: Dependent types for imperative programs. In Proc. the 13th ACM SIGPLAN Int. Conf. Functional Programming, September 2008, pp.229-240.
  • 3Barnett M, M. Leino K R, Schulte W. The spec# program- ming system: An overview. In Proc. Int. Conf. Construction and Analysis of Safe, Secure and Interoperable Smart Devices (CASSIS), March 2004, pp.49-69.
  • 4Flanagan C, Rustan K, Lillibridge Met al. Extended static checking for Java. In Proc. the ACM SIGPLAN 2002 Conf. Programming Language Design and Implementation, June 2002, pp.234-245.
  • 5Berdine J, Calcagno C, O'Hearn P W. Smallfoot: Modular automatic assertion checking with separation logic. In Proc. the 4th Int. Syrup. Formal Methods for Components and Objects, Nov. 2005, pp.115-137.
  • 6Distefano D, Parkinson M. jStar: Towards practical veri- fication for Java. In Proc. the 23rd ACM SIGPLAN Int. Conf. Object-Oriented Programming, Systems, Languages, and Applications, Oct. 2008, pp.213-226.
  • 7Li Z P, Zhang Y, Chen Y Y, Meng J C. Automated the- orem proving for theory of shape graphs and its appli- cation in program verification. Technical Report, USTC- Yale Joint Research Center for High-Confidence Software, http://kyhcs.ustcsz.edu.cn/SGL, Nov. 2012.
  • 8Chen Y Y, Li Z P, Wang Z F, Hua B J. A pointer logic for pointer program verification. Chinese Journal of Soft- ware, 2010, 21(3): 124-137. (Chinese, English Version at http://kyhcs.ustcsz.edu.cn/-zpli/pl.pdf).
  • 9Fradet P, Metayer D L. Shape types. In Proc. the ACM SIGPLAN-SIGACT Syrup. Principles of Programming Lan- guages, Jan. 1997, pp.27-39.
  • 10de Moura L D, Bjorner N. Z3: An efficient SMT solver. In Proc. the 14th Int. Conf. Tools and Algorithms for the Construction and Analysis of Systems, Mar. 29-Apr. 6, 2008, pp.337-340.

同被引文献52

  • 1唐稚松,赵琛.一种面向软件工程的时序逻辑语言[J].软件学报,1994,5(12):1-16. 被引量:15
  • 2朱雪阳.双重软件体系结构描述框架XYZ/ADL[J].计算机研究与发展,2007,44(9):1485-1494. 被引量:3
  • 3Ben Ari M, Pnueli A, Manna M. The temoral logic of branching time [J]. Acta Informatica, 1981, 20 (3) : 207- 226.
  • 4Huth M, Ryan M. Logic in Computer Science: Modelling and Reasoning about System [M]. Cambridge, UK: Cambridge University Press, 2004.
  • 5Kwiatkowska M. Model checking for probability and time: From theory to practice [C]//Proc of the 18th IEEE Syrup on Logic in Computer Science. Piscataway, NJ: IEEE, 2003: 351-360.
  • 6Panangaden P. Labelled Markov Processes [M]. London: Imperial College Press, 2009.
  • 7Clarke E M, Grumberg O, Peled D A. Model Checking [M]. Cambridge, MA: MIT Press, 1999.
  • 8Burcb J R, Clarke E M, McMillan K L, eta[. Symbolic model checking: 10x states and beyond [J]. Information and Computation, 1992, 98(2): 142-170.
  • 9Alur R, Courcourbetis C, Dill D. Model checking for real- time systems [C] //Proc of the 5th Syrup on I,ogic in Computer Science. Piscataway, NJ: IEEE, 1990:414-425.
  • 10Ball T, Maiumdar R, Millstein T D, et al. Automatic predicate abstraction of C programs [C] // Proc of the 22nd ACM SIGPLAN Conf on Programming Language Design and Implementation. New York.. ACM, 2001:203-213.

引证文献5

二级引证文献4

相关作者

内容加载中请稍等...

相关机构

内容加载中请稍等...

相关主题

内容加载中请稍等...

浏览历史

内容加载中请稍等...
;
使用帮助 返回顶部