A relational approach to strictness analysis for higher-order polymorphic functions
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Concurrent programming: principles and practice
Concurrent programming: principles and practice
Parametricity and local variables
Journal of the ACM (JACM)
ALGOL-like languages (v.2)
From Algol to polymorphic linear lambda-calculus
Journal of the ACM (JACM)
Syntactic control of interference
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The Theory and Practice of Concurrency
The Theory and Practice of Concurrency
Syntactic Control of Inference, Part 2
ICALP '89 Proceedings of the 16th International Colloquium on Automata, Languages and Programming
On the Semantics of Fair Parallelism
Proceedings of the Abstract Software Specifications, 1979 Copenhagen Winter School
CSL '92 Selected Papers from the Workshop on Computer Science Logic
The semantics of local storage, or what makes the free-list free?(Preliminary Report)
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A category-theoretic approach to the semantics of programming languages
A category-theoretic approach to the semantics of programming languages
A semantics for concurrent separation logic
Theoretical Computer Science
A model of cooperative threads
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Electronic Notes in Theoretical Computer Science (ENTCS)
Full Abstraction Without Synchronization Primitives
Electronic Notes in Theoretical Computer Science (ENTCS)
Hi-index | 0.00 |
We consider a parallel Algol-like language, combining procedures with shared-variable parallelism. Procedures permit encapsulation of common parallel programming idioms. Local variables provide a way to restrict interference between parallel commands. The combination of local variables, procedures, and parallelism supports a form of concurrent object-oriented programming. We provide a denotational semantics for this language, simultaneously adapting possible worlds to the parallel setting and generalizing transition traces to the procedural setting. This semantics supports reasoning about safety and liveness properties of parallel programs, and validates a number of natural laws of program equivalence based on noninterference properties of local variables. The semantics also validates familiar laws of functional programming. We also provide a relationally parallel semantics. This semantics supports standard methods of reasoning about representational independence, adapted to shared-variable programs. The clean design of the programming language and its semantics shows that procedures and shared-variable parallelism can be combined smoothly.