Search NASASearch

NASA NTRS · 20150011436

Analyzing Array Manipulating Programs by Program Transformation

Abstract

We explore a transformational approach to the problem of verifying simple array-manipulating programs. Traditionally, verification of such programs requires intricate analysis machinery to reason with universally quantified statements about symbolic array segments, such as "every data item stored in the segment A[i] to A[j] is equal to the corresponding item stored in the segment B[i] to B[j]." We define a simple abstract machine which allows for set-valued variables and we show how to translate programs with array operations to array-free code for this machine. For the purpose of program analysis, the translated program remains faithful to the semantics of array manipulation. Based on our implementation in LLVM, we evaluate the approach with respect to its ability to extract useful invariants and the cost in terms of code size.

Explore related subjects

Keep this discovery

Explore connections, maps & timelines

BibTeXRIS

Cornish, J. Robert M., Gange, Graeme, Navas, Jorge A., Schachte, Peter, Sondergaard, Harald, Stuckey, Peter J.. 2014-09-09. Analyzing Array Manipulating Programs by Program Transformation. https://ntrs.nasa.gov/citations/20150011436

Cite the original work for its findings. Save a collection to share your selection of sources.