VSL Publications

Symbolic Execution for Sequential and Multi-Process Programs with Unbounded Loops

Cite
Stephen F. Siegel and Timothy K. Zirkel, Symbolic Execution for Sequential and Multi-Process Programs with Unbounded Loops. Technical Report UD-CIS-2011/03, Department of Computer & Information Sciences, University of Delaware, January 2011
Abstract
Symbolic execution is a powerful technique for automatically verifying properties of programs. Symbolic techniques have been developed for a variety of classes of assertions, to verify parallel as well as sequential programs, and even to verify functional equivalence of two programs. However, one limitation of these applications is that they typically require that constant (often small) bounds be imposed on the number of loop iterations. We present a generalization of symbolic execution that can reason about loops without bounds. This approach requires a user-provided loop invariant, but is otherwise fully automatic. Most importantly, it generalizes naturally to multi-process message-passing programs, and to verification of functional equivalence. We have realized the technique in the Toolkit for Accurate Scientific Software and demonstrated its effectiveness on several examples.
Downloads
  1. loops_tr_2011.pdf (paper)
  2. loops_tr_2011.tgz (Experimental artifacts)
  3. loops_tr_aug_2011.pdf (updated paper from August 2011)
BibTeX
@TechReport{siegel-zirkel:2011:loops-tr,
  author = "Stephen F. Siegel and Timothy K. Zirkel",
  title = "Symbolic Execution for Sequential and Multi-Process Programs with Unbounded Loops",
  institution = {Department of Computer and Information Sciences, University of Delaware},
  year = {2011},
  number = {UDEL-CIS-2011/03}
}

VSL | Publications