Abstract
A programming calculus is presented which will yield programs with simple, suitable, and safe concurrency.
The program design consists of three steps:
-
(1)
specification of a finite problem by a pre/post condition pair
-
(2)
formal refinement of a totally correct solution which can be implemented sequentially
-
(3)
declaration of program properties which allow relaxations in sequencing (→ concurrency)
For infinite problems programs can be executed repeatedly without correctness problems. For the choice of refinement formal guidelines can be used.
The derived solutions have the following properties:
-
(a)
dynamic concurrency — processes do not have to be statically declared
-
(b)
only correct concurrency can be specified — exclusion is not explicitly programmed
-
(c)
conditional concurrency — no conditional delays
-
(d)
stepwise proofs of parallel correctness without auxiliary variables
-
(e)
simply derived freedom from deadlock and starvation without appealing to a fair scheduler
Research supported by the Social Sciences and Humanities Research Council of Canada
Preview
Unable to display preview. Download preview PDF.
References
Conway, M.E. A Multiprocessor System Design AFIPS FJCC 24 (1963), 139–146
Dijkstra, E.W. Co-operating Sequential Processes in "Programming Languages", F. Genuys (Ed.), Academic Press, 1968, 43–112
Dijkstra, E.W. A Discipline of Programming Prentice-Hall, Series in Automatic Computation, 1976, 217 p.
Good, D.I.; Cohen, R.M.; Keeton-Williams, J. Principles of Proving Concurrent Programs in Gypsy Proc. Principles of Programming Languages 1979, 42–52
Gries, D. An Exercise in Proving Parallel Programs Correct Comm. ACM 20, 12 (Dec 77), 921–930 Corrigendum: Comm. ACM 21, 12 (Dec 78), 1048
Gries, D.; Levin, G. Assignment and Procedure Call Proof Rules ACM TOPLAS 2, 4 (Oct 80), 564–579
Hehner, E.C.R. do considered od: A Contribution to the Programming Calculus Acta Informatica 11 (1979), 287–304
Hoare, C.A.R. An Axiomatic Basis for Computer Programming Comm. ACM 12, 10 (Oct 69), 576–580, 583
Hoare, C.A.R. Parallel Programming: An Axiomatic Approach Computer Languages 1, 2 (June 75), 151–160
Hoare, C.A.R. Communicating Sequential Processes Comm. ACM 21, 8 (Aug 78), 666–677
Holt, R.C. Some Deadlock Properties of Computer Systems ACM Computing Surveys 4, 3 (Sept 72), 179–196
Knuth, D.E. The Art of Computer Programming, Vol. 2: Seminumerical Algorithms Addison-Wesley, 1969, 624 p.
Lamport, L. Proving the Correctness of Multiprocess Programs IEEE Trans. on Soft. Eng. SE-3, 2 (Mar 77), 125–143
Owicki, S.S.; Gries, D. An Axiomatic Proof Technique for Parallel Programs I Acta Informatica 6 (1976), 319–340
Owicki, S.S.; Gries, D. Verifying Properties of Parallel Programs: An Axiomatic Approach Comm. ACM 19, 5 (May 76), 279–285
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1981 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Lengauer, C., Hehner, E.C.R. (1981). A methodology for programming with concurrency. In: Brauer, W., et al. Conpar 81. CONPAR 1981. Lecture Notes in Computer Science, vol 111. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0105123
Download citation
DOI: https://doi.org/10.1007/BFb0105123
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-10827-6
Online ISBN: 978-3-540-38715-2
eBook Packages: Springer Book Archive