DocumentCode :
3341610
Title :
Model-Checking C Programs against JML-like Specification Language
Author :
Sakai, Masayuki ; Maruchi, Kohei ; Imai, Tetsuro
Author_Institution :
Syst. Eng. Lab., Toshiba Corp., Kawasaki, Japan
Volume :
1
fYear :
2012
fDate :
4-7 Dec. 2012
Firstpage :
174
Lastpage :
183
Abstract :
Model checkers achieved a great success in verification of control-flow properties such as reach ability of error states, but few of them are capable of handling data structural properties such as ``the procedure preserves the sorted ness of linked lists´´. On the other hand, specification languages like Java Modeling Language (JML) can express such property, and deductive verification tools like Spec# and Frama-C can prove properties expressed in such language. But these tools in general do not produce counter-examples when the proof attempts fails. This paper proposes a bounded model checker CForge and its specification language, aiming in the middle of these two approaches. The language has JML-like syntax extended with C-specific constructs and is designed to be suited for model checking. This allows writing data structural properties neatly using quantifiers, relational operations, etc., while enjoying the benefit of model checkers. As an experiment, we wrote specifications for ten programs, each of which contained one non-trivial bug such as a sorting failure, wrong manipulation of a linked list, etc. and checked them using CForge. CForge detected seven out of the ten bugs. The result shows that our language and tool are capable of specifying and checking complex properties.
Keywords :
C language; Java; formal verification; program debugging; specification languages; C program; C-specific construct; CForge bounded model checker; Frama-C verification tool; JML; JML-like specification language; Java modeling language; Spec++ verification tool; bug detection; control-flow property verification; data structural property; model checking; quantifiers; relational operation; sorting failure; Computer bugs; Encoding; Finite impulse response filter; Java; Model checking; Software; Writing; JML; bounded model checking; fat pointer; formal methods; relational logic; software model checking; specification language;
fLanguage :
English
Publisher :
ieee
Conference_Titel :
Software Engineering Conference (APSEC), 2012 19th Asia-Pacific
Conference_Location :
Hong Kong
ISSN :
1530-1362
Print_ISBN :
978-1-4673-4930-7
Type :
conf
DOI :
10.1109/APSEC.2012.68
Filename :
6462652
Link To Document :
بازگشت