Distributed Computing

, Volume 5, Issue 3, pp 159–174 | Cite as

A complete axiomatic semantics of spawning

  • Sigurd Meldal


In modern imperative languages there are two commonly occurring ways to activate concurrently running tasks,splitting (cobegin...coend) andspawning. The programming language Ada makes use of both forms of task activation. We present a formal system for verifying partial correctness specifications of Ada tasks activated by spawning. The system is based upon a view of tasks as histories of events. We show how the mindset of splitting may be applicable when developing a formal system for reasoning about spawning. The resultant proof system is compositional, and a robust extension of partial correctness proof systems for sequential constructs. A transition model is given for spawning, and the proof system is proven complete in the sense of Cook [10] relative to this model, under certain reasonable assumptions. The specific proof rules given apply to a subset of Ada without real-time and distributed termination. Our approach to task verification applies to other imperative languages besides Ada, and the essential parts of our methodology are applicable to other formal systems besides those based on partial correctness reasoning.

Key words

Partial correctness Distributed systems Modularity Ada tasking Non-determinism 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    America P, de Bakker J: Designing equivalent semantic models for process creation. Theor Comput Sci 60(2):109–176 (1988)Google Scholar
  2. 2.
    Apt, KR, Francez N, de Roever WP: A proof system for communicating sequential processes. ACM TOPLAS 2(3):359–385 (1980)Google Scholar
  3. 3.
    Apt KR: Ten years of hoare's logic: a survey — Part 1. ACM TOPLAS 3(4):431–483 (1981)Google Scholar
  4. 4.
    Ashcroft EA, Clint M, Hoare CAR: Remarks on “Program proving: jumps and functions by M. Clint and C.A.R. Hoare”. Acta Inf 6:317–318 (1976)Google Scholar
  5. 5.
    Belz FC, Luckham DC: A new approach to prototyping Adabased hardware/software systems. In: Tri-Ada '90 Conference Proceedings (December 1990)Google Scholar
  6. 6.
    de Boer FS: A proof rule for process creation. In: Wirsing M (ed). Formal description of programming concepts — III. IFIP, North Holland, Amsterdam 1987, pp 23–48Google Scholar
  7. 7.
    Broy M, Wirsing M: On the algebraic specification of nondeterministic programming languages. In: Astesiano, E., Böhm, C (eds) Proceedings of the 6th CAAP. Lect Notes Comput Sci, Vol 112. Springer, Berlin Heidelberg New York 1981, pp 162–179Google Scholar
  8. 8.
    Clint M, Hoare CAR: Program proving: jumps and functions. Acta Inf 1:214–224 (1972)Google Scholar
  9. 9.
    Clint M.: Program proving: coroutines. Acta Inf 2:50–63 (1973)Google Scholar
  10. 10.
    Cook SA: Soundness and completeness of an axiom system for program verification. SIAM J Comput 7(1):70–90 (1978)Google Scholar
  11. 11.
    Dahl OJ: Can program proving be practical? In:Amirchahy M, Neel D (eds) Les Fondements de la Programmation. CCE-CREST, IRIA 1978, pp. 56–115. Also in: Research Reports in Informatics no. 33, Institute of Informatics, University of OsloGoogle Scholar
  12. 12.
    Dahl OJ: Time sequences as a tool for describing program behaviour. Tech Rep 48, Institute of Informatics, University of Oslo, 1979Google Scholar
  13. 13.
    Ehrig, H, Mahr B: Fundamentals of algebraic specification 1. Springer, Berlin Heidelberg New York 1985Google Scholar
  14. 14.
    Francez N, Lehman D, Pnueli A: A linear history semantics for languages for distributed programming. Theor Comput Sci 32:25–46 (1984)Google Scholar
  15. 15.
    Gerth R, de Roever WP: A proof system for concurrent Ada programs. Sci Comput Program 4:159–204 (1984)Google Scholar
  16. 16.
    Guttag JV, Horning, JJ: The algebraic specification of abstract data types. Acta Inf 10:27–52 (1978)Google Scholar
  17. 17.
    Hesselink WH: A mathematical approach to nondeterminism in data types. ACM TOPLAS 10(1):87–117 (1988)Google Scholar
  18. 18.
    Hoare CAR: An axiomatic basis for computer programming. Commun ACM 12 (10):576–580 (1969)Google Scholar
  19. 19.
    Hoare CAR: Communicating sequential processes. Commun ACM 21(8):666–677 (1978)Google Scholar
  20. 20.
    Hoare CAR: Communicating sequential processes. Prentice-Hall, London 1985Google Scholar
  21. 21.
    Levin GM, Gries D: A proof technique for communicating sequential processes. Acta Inf 15:281–302 (1981)Google Scholar
  22. 22.
    London RL, Guttag JV, Horning JJ, Lampson BW, Mitchell JG, Popek GJ: Proof rules for the programming language Euclid. Acta Inf 10(1):1–26 (1978)Google Scholar
  23. 23.
    Luckham DC, Helmbold DP, Meldal S, Bryan DL, Haberler MA: Task sequencing language for specifying distributed Ada systems. In: Habermann, AN, Montanari U (eds) System development and Ada, Proceedings of the CRAI Workshop on Software Factories and Ada. Springer, Berlin Heidelberg New York 1986, pp 249–305. Also in technical report no. CSL-TR-87-334, Stanford UniversityGoogle Scholar
  24. 24.
    McGettrick AD: Program verification using Ada. Cambridge Computer Science Texts. Cambridge University Press, Cambridge 1982Google Scholar
  25. 25.
    Meldal S: An axiomatic semantics for nested concurrency. BIT 26(2):164–174 (1986)Google Scholar
  26. 26.
    Meldal S: Partial correctness of exits from concurrent structures. BIT, 26(3):295–302 (1986)Google Scholar
  27. 27.
    Meldal S: Language elements for hierarchical abstraction in concurrent structures. Tech Rep 102, Research Report in Informatics, Institute of Informatics, University of Oslo, 1986Google Scholar
  28. 28.
    Meldal S: Axiomatic semantics of access type tasks in Ada. Tech Rep 100, Research Report in Informatics, Institute of Informatics, University of Oslo, 1986Google Scholar
  29. 29.
    Meldal S, Luckham, D.C., Haberler MA: Specifying Ada tasking using patterns of behavior. In: Shriver, BD (ed) Proceedings of the 21st Annual Hawaii International Conference on System Sciences. IEEE Computer Society Press 1988, pp 129–134Google Scholar
  30. 30.
    Meldal S: Extending CSP with termination independent process activation. Tech Rep 37, Department of Informatics, University of Bergen, 1989Google Scholar
  31. 31.
    Meldal S: An abstract axiomatization of pointer types. In: Shriver BD (ed) Proceedings of the 22nd Annual Hawaii International Conference on System Sciences. IEEE Computer Society Press, 1989Google Scholar
  32. 32.
    Nipkow T: Non-deterministic data types: models and implementations. Acta Inf 22:629–661 (1986)Google Scholar
  33. 33.
    Owe O: Notes on partial correctness. Tech Rep 26, Research Reports in Informatics, Institute of Informatics, University of Oslo, 1977Google Scholar
  34. 34.
    Owicki S, Gries D: An axiomatic proof technique for parallel programs. Acta Inf 6:319–340 (1976)Google Scholar
  35. 35.
    Schlichting RD, Schneider FB: Using message passing for distributed programming: proof rules and disciplines. ACM TOPLAS 6(3):402–431 (1984)Google Scholar
  36. 36.
    Soundararajan N, Dahl OJ: Partial correctness semantics of CSP. Tech Rep 66, Research Report in Informatics, Institute of Informatics, University of Oslo, 1982Google Scholar
  37. 37.
    Soundararajan N: A proof technique for parallel programs. Theor Comput Sci 31:13–29 (1984)Google Scholar
  38. 38.
    Reference Manual for the Ada Programming Language, U.S. Department of Defense, ANSI/MIL-STD-1815A, 1983Google Scholar
  39. 39.
    Wirsing M: Algebraic specification. Tech Rept MIP-8914, Universität Passau, 1989Google Scholar

Copyright information

© Springer-Verlag 1991

Authors and Affiliations

  • Sigurd Meldal
    • 1
  1. 1.Department of InformaticsUniversity of BergenBergenNorway

Personalised recommendations