An inference-rule-based decision procedure for verification of heap-manipulating programs with mutable data and cyclic data structures (2007)
Cached
Download Links
- [www.cs.ubc.ca]
- [www.cs.ubc.ca]
- [www.cs.ubc.ca]
- DBLP
Other Repositories/Bibliography
| Venue: | In Verification, Model Checking, and Abstract Interpretation (VMCAI ’06), LNCS 4349 |
| Citations: | 12 - 0 self |
BibTeX
@INPROCEEDINGS{Rakamarić07aninference-rule-based,
author = {Zvonimir Rakamarić and Jesse Bingham and Alan J. Hu},
title = {An inference-rule-based decision procedure for verification of heap-manipulating programs with mutable data and cyclic data structures},
booktitle = {In Verification, Model Checking, and Abstract Interpretation (VMCAI ’06), LNCS 4349},
year = {2007},
pages = {106--121},
publisher = {Springer-Verlag}
}
OpenURL
Abstract
Abstract. Research on the automatic verification of heap-manipulating programs (HMPs) — programs that manipulate unbounded linked data structures via pointers — has blossomed recently, with many different approaches all showing leaps in performance and expressiveness. A year ago, we proposed a small logic for specifying predicates about HMPs and demonstrated that an inference-rule-based decision procedure could be performance-competitive, and in many cases superior to other methods known at the time. That work, however, was a proof-ofconcept, with a logic fragment too small to verify most real programs. In this work, we generalize our previous results to be practically useful: we allow the data in heap nodes to be mutable, we allow more than a single pointer field, and we add new primitives needed to verify cyclic structures. Each of these extensions necessitates new or changed inference rules, with the concomitant changes to the proofs and decision procedure. Yet, our new decision procedure, with the more general logic, actually runs as fast as our previous results. With these generalizations, we can automatically verify many more HMP examples, including three small container functions from the Linux kernel. 1







