We study how program analysis can be used to: Automatically prove partial correctness of correct programs. Discover, locate, and diagnose bugs in incorrect programs. Specifically, we present an algorithm that analyzes sorting programs that manipulate linked lists. A prototype of the algorithm has been implemented. We show that the algorithm is sufficiently precise to discover that (correct versions) of bubble-sort and insertion-sort procedures do, in fact, produce correctly sorted lists as outputs, and that the invariant "is-sorted" is maintained by list-manipulation operations such as element-insertion, element-deletion, and even destructive list reversal and merging of two sorted lists. When we run the algorithm on erroneous versions of bubble-sort and insertion-sort procedures, it is able to discover and sometimes even locate and diagnose the error.
CITATION STYLE
Lev-Ami, T., Reps, T., Sagiv, M., & Wilhelm, R. (2000). Putting static analysis to work for verification: A case study. In Proceedings of the ACM SIGSOFT 2000 International Symposium on Software Testing and Analysis (pp. 26–38).
Mendeley helps you to discover research relevant for your work.