Putting static analysis to work for verification: A case study

Tal Lev-Ami, Thomas Reps, Mooly Sagiv, Reinhard Wilhelm

Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

Abstract

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.

Original languageEnglish
Title of host publicationProceedings of the ACM SIGSOFT 2000 International Symposium on Software Testing and Analysis
EditorsM.J. Harrold, M.J. Harrold
Pages26-38
Number of pages13
StatePublished - 2000
EventISSTA 00 Proceedings of the ACM SIGSOFT 2000 International Symposium on Software Testing and Analysis - Portland, OR, United States
Duration: 21 Aug 200024 Aug 2000

Publication series

NameProceedings of the ACM SIGSOFT 2000 International Symposium on Software Testing and Analysis

Conference

ConferenceISSTA 00 Proceedings of the ACM SIGSOFT 2000 International Symposium on Software Testing and Analysis
Country/TerritoryUnited States
CityPortland, OR
Period21/08/0024/08/00

Fingerprint

Dive into the research topics of 'Putting static analysis to work for verification: A case study'. Together they form a unique fingerprint.

Cite this