Program Repair by Stepwise Correctness Enhancement

Nafi Diallo
(NJIT, Newark NJ)
Wided Ghardallou
(FST, Tunis, Tunisia)
Ali Mili
(NJIT, Newark NJ)

Relative correctness is the property of a program to be more-correct than another with respect to a given specification. Whereas the traditional definition of (absolute) correctness divides candidate program into two classes (correct, and incorrect), relative correctness arranges candidate programs on the richer structure of a partial ordering. In other venues we discuss the impact of relative correctness on program derivation, and on program verification. In this paper, we discuss the impact of relative correctness on program testing; specifically, we argue that when we remove a fault from a program, we ought to test the new program for relative correctness over the old program, rather than for absolute correctness. We present analytical arguments to support our position, as well as an empirical argument in the form of a small program whose faults are removed in a stepwise manner as its relative correctness rises with each fault removal until we obtain a correct program.

In Luca Aceto, Adrian Francalanza and Anna Ingolfsdottir: Proceedings First Workshop on Pre- and Post-Deployment Verification Techniques (PrePost 2016), Reykjavík, Iceland, 4th June 2016, Electronic Proceedings in Theoretical Computer Science 208, pp. 1–15.
Published: 25th May 2016.

ArXived at: http://dx.doi.org/10.4204/EPTCS.208.1 bibtex PDF
References in reconstructed bibtex, XML and HTML format (approximated).
Comments and questions to: eptcs@eptcs.org
For website issues: webmaster@eptcs.org