Program Derivation by Correctness Enhacements

Relative correctness is the property of a program to be more-correct than another program with respect to a given specification. Among the many properties of relative correctness, that which we found most intriguing is the property that program P' refines program P if and only if P' is more-correct than P with respect to any specification. This inspires us to reconsider program derivation by successive refinements: each step of this process mandates that we transform a program P into a program P' that refines P, i.e. P' is more-correct than P with respect to any specification. This raises the question: why should we want to make P' more-correct than P with respect to any specification, when we only have to satisfy specification R? In this paper, we discuss a process of program derivation that replaces traditional sequence of refinement-based correctness-preserving transformations starting from specification R by a sequence of relative correctness-based correctness-enhancing transformations starting from abort.

[1]  Lauretta O. Osho,et al.  Axiomatic Basis for Computer Programming , 2013 .

[2]  Eric C. R. Hehner A Practical Theory of Programming , 1993, Texts and Monographs in Computer Science.

[3]  Shuvendu K. Lahiri,et al.  Differential assertion checking , 2013, ESEC/FSE 2013.

[4]  R. Geoff Dromey,et al.  Program development by inductive stepwise refinement , 1985, Softw. Pract. Exp..

[5]  Sam Blackshear,et al.  Verification modulo versions: towards usable verification , 2014, PLDI.

[6]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[7]  Rupak Majumdar,et al.  Quantifying Conformance Using the Skorokhod Metric , 2015, CAV.

[8]  Wolfram Kahl,et al.  Relational Methods in Computer Science , 1997, Advances in Computing Sciences.

[9]  Thomas Ball,et al.  Modular and verified automatic program repair , 2012, OOPSLA '12.

[10]  Harrie de Swart,et al.  Relational Methods in Computer Science , 2003, Lecture Notes in Computer Science.

[11]  John McCarthy,et al.  Mathematical Theory of Computation , 1991 .

[12]  Krishnendu Chatterjee,et al.  Quantitative Temporal Simulation and Refinement Distances for Timed Systems , 2015, IEEE Transactions on Automatic Control.

[13]  David Gries,et al.  The Science of Programming , 1981, Text and Monographs in Computer Science.

[14]  Richard Banach,et al.  Retrenchment, Refinement, and Simulation , 2000, ZB.