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
.