Skip to main content

Formalising Dijkstra’s Development Strategy within Stark’s Formalism

  • Conference paper

Part of the book series: Workshops in Computing ((WORKSHOPS COMP.))

Abstract

Dijkstra introduced an enticing development strategy in a paper addressing the readers/ writers problem. This strategy is as follows: one starts with some “stupid” (in the sense that it allows undesirable computations) first try and then tries in subsequent steps to “refine” this stupid try into a better one by eliminating (some) undesirable computations. In a number of steps one strives to get a good (in the sense that it no longer contains undesirable computations) implementation for the problem. Unfortunately this strategy is not very formal. In this paper we try to make it more formal by using Stark’s temporal logic based rely/guarantee formalism. We use this formalism in a special way in order to describe Dijkstra’s development strategy: the part intended to describe the liveness condition is used for the more general purpose of disallowing the undesirable sequences.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. M. Abadi and L. Lamport. The existence of refinement mappings. In Third annual symposium on Logic in Computer Science, pages 165–175, July 1988.

    Chapter  Google Scholar 

  2. E.W. Dijkstra. A tutorial on the split binary semaphore, 1979. EWD 703.

    Google Scholar 

  3. E. Diepstraten and R. Kuiper. Abadi & Lamport and Stark: towards a proof theory for stuttering, dense domains and refinements mappings. In LNCS 430:Proc. of the REX Workshop on Stepwise Refinement of Distributed Systems, Models, Formalisms, Correctness, pages 208–238. Springer-Verlag, 1990.

    Google Scholar 

  4. C.B. Jones. Development methods for computer programs including a notion of interference. PhD thesis, Oxford University Computing Laboratory, 1981.

    Google Scholar 

  5. L. Lamport. What good is temporal logic. In R.E.A. Manson, editor, Information Processing 83: Proc. of the IFIP 9th World Congress, pages 657–668. Elsevier Science Publishers, North Holland, 1983.

    Google Scholar 

  6. L. Lamport. An axiomatic semantics of concurrent programming languages. In K.R. Apt, editor, NATO ASI SERIES, vol. F13: Logics and Models of Concurrent Systems, pages 77–122. Springer-Verlag, January 1985.

    Chapter  Google Scholar 

  7. L. Lamport. A simple approach to specifying concurrent systems. Communications of the ACM, 32 (1): 32–45, January 1989.

    Article  MathSciNet  Google Scholar 

  8. S. Lee, S. Gerhart, and W.-P. de Roever. The evolution of list-copying algorithms and the need for structured program verification. In Proc. of 6th POPL, 1979.

    Google Scholar 

  9. J. Misra, and M. Chandy. Proofs of Networks of Processes. IEEE SE 7 (4), pp. 417–426, 1981.

    MathSciNet  MATH  Google Scholar 

  10. R. Milner. A calculus of Communicating Systems. LNCS 92, Springer-Verlag 1980.

    Google Scholar 

  11. P.R.H. Place, W.G. Wood, and M. Tudball. Survey of formal specification techniques for reactive systems. Technical Report, 1990.

    Google Scholar 

  12. E.W. Stark. Foundations of a Theory of Specification for Distributed Systems. PhD thesis, Massachusetts Inst. of Technology, 1984. Available as Report No. MIT/LCS/TR-342.

    Google Scholar 

  13. E.W. Stark. A Proof Technique for Rely/Guarantee Properties. In LNCS 206: Fifth Conference on Foundations of Software Technology and Theoretical Computer Science, pages 369–391. Springer-Verlag, 1985.

    Google Scholar 

  14. E.W. Stark. Proving entailment between conceptual state specifications. Theoretical Computer Science, 56: 135–154, 1988.

    Article  MathSciNet  MATH  Google Scholar 

  15. J. Zwiers, A. de Bruin, and W.-P. de Roever. A proof system for partial correctness of Dynamic Networks of Processes. In proc. of the conference on logics of programs 1983, LNCS 164, Springer Verlag 1984.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 1992 Springer-Verlag London

About this paper

Cite this paper

Cau, A., Kuiper, R., de Roever, WP. (1992). Formalising Dijkstra’s Development Strategy within Stark’s Formalism. In: Jones, C.B., Shaw, R.C., Denvir, T. (eds) 5th Refinement Workshop. Workshops in Computing. Springer, London. https://doi.org/10.1007/978-1-4471-3550-0_3

Download citation

  • DOI: https://doi.org/10.1007/978-1-4471-3550-0_3

  • Publisher Name: Springer, London

  • Print ISBN: 978-3-540-19752-2

  • Online ISBN: 978-1-4471-3550-0

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics