Summary
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.
Similar content being viewed by others
References
America P, de Bakker J: Designing equivalent semantic models for process creation. Theor Comput Sci 60(2):109–176 (1988)
Apt, KR, Francez N, de Roever WP: A proof system for communicating sequential processes. ACM TOPLAS 2(3):359–385 (1980)
Apt KR: Ten years of hoare's logic: a survey — Part 1. ACM TOPLAS 3(4):431–483 (1981)
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)
Belz FC, Luckham DC: A new approach to prototyping Adabased hardware/software systems. In: Tri-Ada '90 Conference Proceedings (December 1990)
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–48
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–179
Clint M, Hoare CAR: Program proving: jumps and functions. Acta Inf 1:214–224 (1972)
Clint M.: Program proving: coroutines. Acta Inf 2:50–63 (1973)
Cook SA: Soundness and completeness of an axiom system for program verification. SIAM J Comput 7(1):70–90 (1978)
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 Oslo
Dahl OJ: Time sequences as a tool for describing program behaviour. Tech Rep 48, Institute of Informatics, University of Oslo, 1979
Ehrig, H, Mahr B: Fundamentals of algebraic specification 1. Springer, Berlin Heidelberg New York 1985
Francez N, Lehman D, Pnueli A: A linear history semantics for languages for distributed programming. Theor Comput Sci 32:25–46 (1984)
Gerth R, de Roever WP: A proof system for concurrent Ada programs. Sci Comput Program 4:159–204 (1984)
Guttag JV, Horning, JJ: The algebraic specification of abstract data types. Acta Inf 10:27–52 (1978)
Hesselink WH: A mathematical approach to nondeterminism in data types. ACM TOPLAS 10(1):87–117 (1988)
Hoare CAR: An axiomatic basis for computer programming. Commun ACM 12 (10):576–580 (1969)
Hoare CAR: Communicating sequential processes. Commun ACM 21(8):666–677 (1978)
Hoare CAR: Communicating sequential processes. Prentice-Hall, London 1985
Levin GM, Gries D: A proof technique for communicating sequential processes. Acta Inf 15:281–302 (1981)
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)
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 University
McGettrick AD: Program verification using Ada. Cambridge Computer Science Texts. Cambridge University Press, Cambridge 1982
Meldal S: An axiomatic semantics for nested concurrency. BIT 26(2):164–174 (1986)
Meldal S: Partial correctness of exits from concurrent structures. BIT, 26(3):295–302 (1986)
Meldal S: Language elements for hierarchical abstraction in concurrent structures. Tech Rep 102, Research Report in Informatics, Institute of Informatics, University of Oslo, 1986
Meldal S: Axiomatic semantics of access type tasks in Ada. Tech Rep 100, Research Report in Informatics, Institute of Informatics, University of Oslo, 1986
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–134
Meldal S: Extending CSP with termination independent process activation. Tech Rep 37, Department of Informatics, University of Bergen, 1989
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, 1989
Nipkow T: Non-deterministic data types: models and implementations. Acta Inf 22:629–661 (1986)
Owe O: Notes on partial correctness. Tech Rep 26, Research Reports in Informatics, Institute of Informatics, University of Oslo, 1977
Owicki S, Gries D: An axiomatic proof technique for parallel programs. Acta Inf 6:319–340 (1976)
Schlichting RD, Schneider FB: Using message passing for distributed programming: proof rules and disciplines. ACM TOPLAS 6(3):402–431 (1984)
Soundararajan N, Dahl OJ: Partial correctness semantics of CSP. Tech Rep 66, Research Report in Informatics, Institute of Informatics, University of Oslo, 1982
Soundararajan N: A proof technique for parallel programs. Theor Comput Sci 31:13–29 (1984)
Reference Manual for the Ada Programming Language, U.S. Department of Defense, ANSI/MIL-STD-1815A, 1983
Wirsing M: Algebraic specification. Tech Rept MIP-8914, Universität Passau, 1989
Author information
Authors and Affiliations
Additional information
Sigurd Meldal is professor of informatics at the University of Bergen. He is interested in techniques and tools based on formal methods for development of concurrent software. His current foci are the investigation of algebraic approaches to nondeterminism, and the participation in the design of a concurrent specification, prototyping and implementation language. The latter supplements formal proof with support for run time control of consistency between concurrent systems as specified and as implemented. Meldal received his cand. real. (1982) and dr. scient. (1986) degrees in informatics from the University of Oslo.
This research was supported by a grant from the Norwegian Research Council for Science and the Humanities, by the Defense Advanced Research Projects Agency/Information Systems Technology Office under the office of Naval Research contract N00014-90-J1232, by the Air Force Office of Scientific Research under Grant AFOSR83-0255 and by a Fulbright Scholarship from the US Educational Foundation in Norway
Rights and permissions
About this article
Cite this article
Meldal, S. A complete axiomatic semantics of spawning. Distrib Comput 5, 159–174 (1991). https://doi.org/10.1007/BF02252958
Received:
Accepted:
Issue Date:
DOI: https://doi.org/10.1007/BF02252958