Specification and refinement in general correctness

We augment B's existing total-correctness semantics of weakest precondition (wp) with a partial-correctness semantics of weakest liberal precondition (wlp). By so doing we achieve a general-correctness semantics for B operations which not only accords more fully with our natural computational intuition, but also extends the essential expressive capability of B's Generalised Substitution Language (GSL) to embrace a whole new class of operations called semi-decidable, whose behaviour cannot be characterised in terms of total correctness alone. The ability to specify semi-decidable operations is important because a desired conventional operation may lend itself to implementation as a concurrent federation of semi-decidable operations co-operating under a mutual "termination pact". Indeed, computational constraints may render this the only viable implementation strategy. We call a generalised substitution invested with our general-correctness semantics an abstract command. Our Abstract Command Language (ACL) is thus syntactically indistinguishable from the GSL, save for the introduction of one new composition operator, concert, expressing a "termination pact" between two concurrent abstract commands.

[1]  Ralph-Johan Back,et al.  Fusion and simultaneous execution in the refinement calculus , 1998, Acta Informatica.

[2]  Edsger W. Dijkstra,et al.  Predicate Calculus and Program Semantics , 1989, Texts and Monographs in Computer Science.

[3]  Cliff B. Jones TANSTAAFL (with partial functions) , 1996 .

[4]  J. Michael Spivey,et al.  The Z notation - a reference manual , 1992, Prentice Hall International Series in Computer Science.

[5]  Annabelle McIver,et al.  Unifying wp and wlp , 1996, Inf. Process. Lett..

[6]  Greg Nelson,et al.  A generalization of Dijkstra's calculus , 1989, ACM Trans. Program. Lang. Syst..

[7]  Carroll Morgan,et al.  Programming from specifications (2nd ed.) , 1994 .

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

[9]  N. Cutland Computability: An Introduction to Recursive Function Theory , 1980 .