TY - GEN
T1 - Intra-module Inference
AU - Lahiri, Shuvendu K.
AU - Qadeer, Shaz
AU - Galeotti, Juan P.
AU - Voung, Jan W.
AU - Wies, Thomas
PY - 2009
Y1 - 2009
N2 - Contract-based property checkers hold the potential for precise, scalable, and incremental reasoning. However, it is difficult to apply such checkers to large program modules because they require programmers to provide detailed contracts, including an interface specification, module invariants, and internal specifications. We argue that given a suitably rich assertion language, modest effort suffices to document the interface specification and the module invariants. However, the burden of providing internal specifications is still significant and remains a deterrent to the use of contract-based checkers. Therefore, we consider the problem of intra-module inference, which aims to infer annotations for internal procedures and loops, given the interface specification and the module invariants. We provide simple and scalable techniques to search for a broad class of desired internal annotations, comprising quantifiers and Boolean connectives, guided by the module specification. We have validated our ideas by building a prototype verifier and using it to verify several properties on Windows device drivers with zero false alarms and small annotation overhead. These drivers are complex; they contain thousands of lines and use dynamic data structures such as linked lists and arrays. Our technique significantly improves the soundness, precision, and coverage of verification of these programs compared to earlier techniques.
AB - Contract-based property checkers hold the potential for precise, scalable, and incremental reasoning. However, it is difficult to apply such checkers to large program modules because they require programmers to provide detailed contracts, including an interface specification, module invariants, and internal specifications. We argue that given a suitably rich assertion language, modest effort suffices to document the interface specification and the module invariants. However, the burden of providing internal specifications is still significant and remains a deterrent to the use of contract-based checkers. Therefore, we consider the problem of intra-module inference, which aims to infer annotations for internal procedures and loops, given the interface specification and the module invariants. We provide simple and scalable techniques to search for a broad class of desired internal annotations, comprising quantifiers and Boolean connectives, guided by the module specification. We have validated our ideas by building a prototype verifier and using it to verify several properties on Windows device drivers with zero false alarms and small annotation overhead. These drivers are complex; they contain thousands of lines and use dynamic data structures such as linked lists and arrays. Our technique significantly improves the soundness, precision, and coverage of verification of these programs compared to earlier techniques.
UR - http://www.scopus.com/inward/record.url?scp=70350220887&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=70350220887&partnerID=8YFLogxK
U2 - 10.1007/978-3-642-02658-4_37
DO - 10.1007/978-3-642-02658-4_37
M3 - Conference contribution
AN - SCOPUS:70350220887
SN - 3642026575
SN - 9783642026577
T3 - Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)
SP - 493
EP - 508
BT - Computer Aided Verification - 21st International Conference, CAV 2009, Proceedings
T2 - 21st International Conference on Computer Aided Verification, CAV 2009
Y2 - 26 June 2009 through 2 July 2009
ER -