Relative correctness: A bridge between testing and proving

Document Type

Conference Proceeding

Publication Date

1-1-2016

Abstract

Relative correctness is the property of a program to be more- correct than another with respect to a specification. Whereas tradition-Ally we distinguish between two categories of candidate programs, namely correct programs and incorrect programs, relative correctness arranges candidate programs on a partial ordering structure, whose maximal elements are the correct programs. Also, whereas traditionally we deploy proof methods on correct programs to prove their correctness and we de- ploy testing methods on incorrect programs to detect and remove their faults, relative correctness enables us to bridge this gap by showing that we can deploy static analytical methods to an incorrect program to prove that while it may be incorrect, it is still more-correct than another. We are evolving a technique, called debugging without testing, in which we can remove a fault from a program and prove that the new program is more-correct than the original, all without any testing (and its associated uncertainties/ imperfections). Given that there are orders of magnitude more incorrect programs than correct programs in use nowadays, this has the potential to expand the scope of proving methods significantly. Also, relative correctness has other broad implications for testing and proving, which we briefly explore in this paper.

Identifier

84992758968 (Scopus)

Publication Title

Ceur Workshop Proceedings

ISSN

16130073

First Page

141

Last Page

156

Volume

1689

This document is currently not available here.

Share

COinS