Skip to main content
Log in

P — A logic — a compositional proof system for distributed programs

  • Published:
Distributed Computing Aims and scope Submit manuscript

Summary

This paper describes a compositional proof system called P-A logic for establishing weak total correctness and weak divergence correctness of CSP-like distributed programs with synchronous and asynchronous communication. Each process in a network is specified using logical assertions in terms of a presuppositionPre and an affirmationAff as a triple {Pre}S{Aff}. For purely sequential programs, these triples reduce to the familiar Hoare triples. In distributed programs, P-A triples allow the behaviour of a process to be specified in the context of assumptions about its communications with the other processes in the network. Safety properties of process communications, and progress properties such as finiteness and freedom from divergence can be proved. An extension of P-A logic allowing proof of deadlock freedom is outlined. Finally, proof rules for deriving some liveness properties of a program from its P-A logic specification are discussed; these properties have the form “Q untilR”, whereQ, R are assertions over communication traces. Other liveness properties may be derived from these properties using the rules of temporal logic.

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

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Institutional subscriptions

Similar content being viewed by others

References

  1. Apt KR, Francez N, de Roever WP: A proof system for communicating sequential processes. ACM Trans Progr Lang Syst 2(3):359–384 (1980)

    Google Scholar 

  2. Alpern B, Schneider FB: Defining liveness. Inf Process Lett 21:177–180 (1985)

    MathSciNet  Google Scholar 

  3. Barringer H, Kuiper R, Pnueli A: A compositional temporal approach to CSP-like languages. In: Neuhold EJ (ed) Proc of the IFIP conference: the role of abstract models in computer science, Vienna. North Holland, Amsterdam 1985, pp 207–227

    Google Scholar 

  4. Brookes SD, Roscoe AW: An improved failures model for communicating sequential processes. In: Lect Notes Comput Sci, vol 197, Springer 1984

  5. Enderton HB: A mathematical introduction to logic. Academic Press, New York 1972

    Google Scholar 

  6. Francez N, Pnueli A: A proof method for cyclic programs. Acta Inf 9:138–158 (1978)

    MathSciNet  Google Scholar 

  7. Gries D: The science of programming. Springer, Berlin Heidelberg New York 1981

    Google Scholar 

  8. Hoare CAR: Communicating sequential processes. Commun ACM 21(8):666–667 (1978)

    Article  MATH  MathSciNet  Google Scholar 

  9. Hoare CAR: A calculus for the total correctness of communicating processes. Sci Comp Progr 1 (1,2):49–72 (1981)

    MATH  MathSciNet  Google Scholar 

  10. Hoare CAR: Communicating sequential processes. Prentice Hall, Englewood Cliffs, New Jersey 1985

    Google Scholar 

  11. INMOS Ltd.: The Occam programming manual. Prentice-Hall 1983

  12. Jones CB: Specification and design of (parallel) programs. In: Mason REA (ed) Information Processing 83. North-Holland, pp 321–331 1983

  13. Jonsson B: A model and proof system for asynchronous networks. In: Proc 4th ACM Symp on Principles of Distributed Computing, Minaki, Canada (1985)

  14. Lamport L: ‘Sometime’ is sometimes ‘not never’: on the temporal logic of programs. In: 7th ACM Symp on Principles of Programming Languages, Las Vegas 1980, pp 174–185

  15. Levin GM, Gries D: A proof technique for communicating sequential processes. Acta In 15:281–302 (1981)

    MathSciNet  Google Scholar 

  16. Misra J, Chandy KM: Proofs of networks of processes. IEEE Trans SE 7(4):417–426 (1981)

    MathSciNet  Google Scholar 

  17. Misra J, Chandy KM, Smith T: Proving safety and liveness of communicating processes with examples. In: Proc ACM SIGACT-SIGOPS Symp on Principles of Distributed Computing (1982)

  18. Nguyen V, Gries D, Owicki S: A model and temporal logic proof system for networks of processes. In: Proc 12th ACM Symp on Principles of Programming Languages (1985), pp 121–131

  19. Owicki S: Axiomatic proof techniques for parallel programs. Ph.D. Thesis, Cornell University (1975)

  20. Pandya P: ‘Proving layers closed’. Tech Rep CS-87/28, Computer Science Group, TIFR (1987)

  21. Pandya P: Compositional Verification of Distributed Programs. Ph.D. Thesis. University of Bombay (1988)

  22. Pandya P: Some comments on the assumption-commitment framework for compositional verification of distributed programs. In: de Bakker JW, de Roever WP, Rozenberg G (eds) Stepwise refinement of distributed systems. Lect Notes Comput Sci, vol 430. Springer, Berlin Heidelberg New York 1990, pp 622–640

    Google Scholar 

  23. Pnueli A: Application of temporal logic to the specification and verification of reactive system: a survey of current trends: In: de Bakker JW, de Roever WP, Rozenberg G (eds) Current trends in concurrency. Lect Notes Comput Sci., vol 224. Springer, Berlin Heidelberg New York 1984, pp 510–584

    Google Scholar 

  24. Plotkin GD: An operational semantics for CSP. In: Proc IFIP Working Conference: formal description of programming concepts, Garmisch-Partenkirchen. North-Holland 1983, pp 199–225

  25. de Roever WP: The quest for compositionality — a survey of assertion based proof systems for concurrent programs, Part-I. In: Neuhold EJ (ed) Proc of the IFIP conference: the role of abstract models in computer science, Vienna. North Holland, Amsterdam 1985

    Google Scholar 

  26. Soundararajan N: Correctness proofs of CSP programs. Theor Comput Sci 24(2):131–141 (1983)

    Article  MATH  MathSciNet  Google Scholar 

  27. Soundararajan N: Total correctness of CSP programs. Acta Inf 23:193–215 (1986)

    MATH  MathSciNet  Google Scholar 

  28. Widom J, Gries D, Schneider FB: Completeness and incompleteness of trace-based network proof systems. In: Proc of 14 ACM Symp on Principles of Programming Languages, Munich (1987)

  29. Zwiers J, de Roever WP, van Emde Boas P: Compositionality and concurrent networks: soundness and completeness of a proof system. In: Proc 12th ICALP. Lect Notes Comput Sci, vol 194. Springer, Berlin Heidelberg New York, pp 509–519

  30. Zwiers J: Compositionality, concurrency and partial correctness. Lect Notes Comput Sci, vol 321. Springer, Berlin Heidelberg New York 1989

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Additional information

Paritosh Kulin Pandya received his Master's degree in Computer Science from the Indian Institute of Technology, Kanpur in 1982, and a Ph.D. from the Tata Institute of Fundamental Research in 1988 where he is currently employed. He has worked as a Research Officer in the Programming Research Group of the Oxford University from 1988 to 1991.

Mathai Joseph has since 1985 been professor of Computer Science at the University of Warwick where he leads a group working on developing formal techniques for specifying and implementing realtime and fault-tolerant systems.

Supported in part by Visiting Fellowships awarded by the Science and Engineering Research Council (research grant GR/D 90918) and the British Council

Rights and permissions

Reprints and permissions

About this article

Cite this article

Pandya, P.K., Joseph, M. P — A logic — a compositional proof system for distributed programs. Distrib Comput 5, 37–54 (1991). https://doi.org/10.1007/BF02311231

Download citation

  • Received:

  • Accepted:

  • Issue Date:

  • DOI: https://doi.org/10.1007/BF02311231

Key words

Navigation