Abstract
The paper presents an attempt to develop a totally correct shared-state parallel program in the style of VDM. Programs are specified by tuples of five assertions (P,R,W,G,E). The pre-condition P, the rely-condition R and the wait-condition W describe assumptions about the environment, while the guar-condition G and the eff-condition E characterise commitments to the implementation.
The pre-, rely- and guar-conditions are closely related to the similarly named conditions in Jones' rely/guarantee method, while the eff-condition corresponds to what Jones calls the post-condition. The wait-condition is supposed to characterise the set of states in which it is safe for the implementation to be blocked; in other words, the set of states in which the implementation, when it becomes blocked, eventually will be released by the environment. The implementation is not allowed to be blocked during the execution of an atomic statement.
Auxiliary variables are introduced to increase the expressiveness. They are used both as a specification tool; to characterise a program that has not yet been implemented, and as a verification tool; to show that a given algorithm satisfies a specific property. However, although it is possible to define historyvariables in this approach, the auxiliary variables may be of any type, and it is up to the user to define the auxiliary structure he prefers. Moreover, the auxiliary structure is only a part of the logic. This means that auxiliary variables do not have to be implemented as if they were ordinary programming variables.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
K. R. Apt, F. S. de Boer, and E. R. Olderog. Proving termination of parallel programs. In W. H. J. Feijen, A. J. M. van Gasteren, D. Gries, and J. Misra, editors, Beauty Is Our Business, A Birthday Salute to Edsger W. Dijkstra. Springer-Verlag, 1990.
R. J. R. Back. A calculus of refinments for program derivations. Acta Informatica, 25:593–624, 1988.
H. Barringer. A Survey of Verification Techniques for Parallel Programs, volume 191 of Lecture Notes in Computer Science. Springer-Verlag, 1985.
H. Barringer, R. Kuiper, and A. Pnueli. Now you may compose temporal logic specifications. In Proc. Sixteenth ACM Symposium on Theory of Computing, pages 51–63, 1984.
K. M. Chandy and J. Misra. Parallel Program Design, A Foundation. Addison-Wesley, 1988.
E. W. Dijkstra. A correctness proof for communicating processes: A small exercise. In Selected Writings on Computing: A Personal Perspective. Springer-Verlag, 1982.
W. P. de Roever. The quest for compositionality, formal models in programming. In F. J. Neuhold and G. Chroust, editors, Proc. IFIP 85, pages 181–205, 1985.
D. Grosvenor and A. Robinson. An evaluation of rely-guarantee. Unpublished Paper, March 1989.
C. B. Jones. Development Methods for Computer Programs Including a Notion of Interference. PhD thesis, Oxford University, 1981.
C. B. Jones. Specification and design of (parallel) programs. In Mason R.E.A., editor, Proc. Information Processing 83, pages 321–331, 1983.
C. B. Jones. Systematic Software Development Using VDM, Second Edition. Prentice-Hall International, 1990.
C. B. Jones and R. C. F. Shaw, editors. Case Studies in Systematic Software Development. Prentice Hall International, 1990.
L. Lamport. A temporal logic of actions. Technical Report 57, Digital, Palo Alto, 1990.
S. Owicki and D. Gries. An axiomatic proof technique for parallel programs. Acta Informatica, 6:319–340, 1976.
N. Soundararajan. A proof technique for parallel programs. Theoretical Computer Science, 31:13–29, 1984.
C. Stirling. A generalization of Owicki-Gries's Hoare logic for a concurrent while language. Theoretical Computer Science, 58:347–359, 1988.
K. Stølen. Development of Parallel Programs on Shared Data-Structures. PhD thesis, University of Manchester, 1990.
K. Stølen. A method for the development of totally correct shared-state parallel programs. Accepted for CONCUR'91, proceedings will appear in Lecture Notes in Computer Science, 1991.
K. Stølen. Proving total correctness with respect to fair (shared-state) parallel languages. In preparation, 1991.
J. C. P. Woodcock and B. Dickinson. Using VDM with rely and guarantee-conditions. Experiences from a real project. In R. Bloomfield, L. Marshall, and R. Jones, editors, Proc. 2nd VDM-Europe Symposium, Lecture Notes in Computer Science 328, pages 434–458, 1988.
Q. Xu and J. He. A theory of state-based parallel programming by refinement:part 1. In J. Morris, editor, Proc. 4th BCS-FACS Refinement Workshop, 1991.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1991 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Stølen, K. (1991). An attempt to reason about shared-state concurrency in the style of VDM. In: Prehn, S., Toetenel, W.J. (eds) VDM'91 Formal Software Development Methods. VDM 1991. Lecture Notes in Computer Science, vol 551. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-54834-3_20
Download citation
DOI: https://doi.org/10.1007/3-540-54834-3_20
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-54834-8
Online ISBN: 978-3-540-46449-5
eBook Packages: Springer Book Archive