Using message passing for distributed programming: proof rules and disciplines
ACM Transactions on Programming Languages and Systems (TOPLAS)
A proof system for concurrent ADA programs
Science of Computer Programming
A linear-history semantics for languages for distributed programming
Theoretical Computer Science
Communicating sequential processes
Communicating sequential processes
Non-deterministic data types: models and implementations
Acta Informatica
Task sequencing language for specifying distributed Ada systems
Proc. of the CRAI Workshop on Software Factories and Ada on System development and Ada
A mathematical approach to nondeterminism in data types
ACM Transactions on Programming Languages and Systems (TOPLAS)
Designing equivalent semantic models for process creation
Theoretical Computer Science
Specifying Ada tasking using patterns of behavior
Proceedings of the Twenty-First Annual Hawaii International Conference on Software Track
A new approach to prototyping Ada-based hardware/software systems
TRI-Ada '90 Proceedings of the conference on TRI-ADA '90
A Proof System for Communicating Sequential Processes
ACM Transactions on Programming Languages and Systems (TOPLAS)
Ten Years of Hoare's Logic: A Survey—Part I
ACM Transactions on Programming Languages and Systems (TOPLAS)
Communicating sequential processes
Communications of the ACM
An axiomatic basis for computer programming
Communications of the ACM
Reference Manual for the ADA Programming Language
Reference Manual for the ADA Programming Language
Program Verification Using ADA
Program Verification Using ADA
Fundamentals of Algebraic Specification I
Fundamentals of Algebraic Specification I
On the Algebraic Specification of Nondeterministic Programming Languages
CAAP '81 Proceedings of the 6th Colloquium on Trees in Algebra and Programming
Hi-index | 0.00 |
In modern imperative languages there are two commonly occurring ways to activate concurrently running tasks, splitting (cobegin... coend) and spawning. 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.