Programming Without Refining

To derive a program for a given specification R means to find an artifact P that satisfies two conditions: P is executable in some programming language; and P is correct with respect to R. Refinement-based program derivation achieves this goal in a stepwise manner by enhancing executability while preserving correctness until we achieve complete executability. In this paper, we argue that it is possible to invert these properties, and to derive a program by enhancing correctness while preserving executability (proceeding from one executable program to another) until we achieve absolute correctness. Of course, this latter process is possible only if we know how to enhance correctness.

[1]  Rui Abreu,et al.  Prioritizing tests for fault localization through ambiguity group reduction , 2011, 2011 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011).

[2]  Andrew M. Gravell,et al.  Refinement Semantics and Loop Rules , 1999, World Congress on Formal Methods.

[3]  Jules Desharnais,et al.  Projecting programs on specifications: Definition and implications , 2017, Sci. Comput. Program..

[4]  Bertrand Meyer,et al.  On Formalism in Specifications , 1985, IEEE Software.

[5]  Jules Desharnais,et al.  Program Derivation by Correctness Enhacements , 2015, Refine@FM.

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

[7]  Ali Mili,et al.  On Faults and Faulty Programs , 2013, RAMiCS.

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

[9]  Lamia Labed Jilani,et al.  Invariant assertions, invariant relations, and invariant functions , 2013, Sci. Comput. Program..

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

[11]  Juris Reinfelds A brief introduction to the derivation of programs , 1986 .

[12]  Ralph-Johan Back,et al.  Refinement Calculus: A Systematic Introduction , 1998 .

[13]  Ali Mili,et al.  Specification methodology: An integrated relational approach , 1986, Softw. Pract. Exp..

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

[15]  Jules Desharnais,et al.  Relational Mathematics for Relative Correctness , 2015, RAMICS.

[16]  Jean-Raymond Abrial,et al.  The B-book - assigning programs to meanings , 1996 .

[17]  Carroll Morgan,et al.  Programming from specifications , 1990, Prentice Hall International Series in computer science.

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