I-structures: data structures for parallel computing
ACM Transactions on Programming Languages and Systems (TOPLAS)
Optimal derivations in weak lambda-calculi and in orthogonal term rewriting systems
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The semantic foundations of concurrent constraint programming
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Handbook of theoretical computer science (vol. B)
A natural semantics for lazy evaluation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Optimal reduction in weak-&lgr;-calculus with shared environments
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
A call-by-need lambda calculus
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A theory of bisimulation for the &lgr;-calculus
Acta Informatica
Concurrent programming in ERLANG (2nd ed.)
Concurrent programming in ERLANG (2nd ed.)
Functional computation as concurrent computation
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The reflexive CHAM and the join-calculus
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Improvement in a lazy context: an operational theory for call-by-need
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An Adequate Operational Semantics for Sharing in Lazy Evaluation
ESOP '92 Proceedings of the 4th European Symposium on Programming
Constraints for Free in Concurrent Computation
ACSC '95 Proceedings of the 1995 Asian Computing Science Conference on Algorithms, Concurrency and Knowledge
An Object Calculus for Asynchronous Communication
ECOOP '91 Proceedings of the European Conference on Object-Oriented Programming
On Confluence in the pi-Calculus
ICALP '97 Proceedings of the 24th International Colloquium on Automata, Languages and Programming
The Name Discipline of Uniform Receptiveness (Extended Abstract)
ICALP '97 Proceedings of the 24th International Colloquium on Automata, Languages and Programming
JELIA '96 Proceedings of the European Workshop on Logics in Artificial Intelligence
Process Semantics of Graph Reduction
CONCUR '95 Proceedings of the 6th International Conference on Concurrency Theory
CONCUR '96 Proceedings of the 7th International Conference on Concurrency Theory
Concurrent ML: Design, Application and Semantics
Functional Programming, Concurrency, Simulation and Automated Reasoning: International Lecture Series 1991-1992, McMaster University, Hamilton, Ontario, Canada
A Foundation for Higher-order Concurrent Constraint Programming
CCL '94 Proceedings of the First International Conference on Constraints in Computational Logics
A Confluent Relational Calculus for Higher-Order Programming with Constraints
CCL '94 Proceedings of the First International Conference on Constraints in Computational Logics
CONCUR '96 Proceedings of the 7th International Conference on Concurrency Theory
The call-by-need lambda calculus
Journal of Functional Programming
The call-by-need lambda calculus
Journal of Functional Programming
A concurrent lambda calculus with futures
Theoretical Computer Science - Applied semantics
A concurrent lambda calculus with futures
FroCoS'05 Proceedings of the 5th international conference on Frontiers of Combining Systems
The attributed pi-calculus with priorities
Transactions on Computational Systems Biology XII
Hi-index | 0.00 |
Indeterminism is typical for concurrent computation. If several concurrent actors compete for the same resource then at most one of them may succeed, whereby the choice of the successful actor is indeterministic. As a consequence, the execution of a concurrent program may be nonconfluent. Even worse, most observables (termination, computational result, and time complexity) typically depend on the scheduling of actors created during program execution. This property contrast concurrent programs from purely functional programs. A functional program is uniformly confluent in the sense that all its possible executions coincide modulo reordering of execution steps. In this paper, we investigate concurrent programs that are uniformly confluent and their relation to eager and lazy functional programs. We study uniform confluence in concurrent computation within the applicative core of the π-calculus which is widely used in different models of concurrent programming (with interleaving semantics). In particular, the applicative core of the π-calculus serves as a kernel in foundations of concurrent constraint programming with first-class procedures (as provided by the programming language Oz). We model eager functional programming in the λ-calculus with weak call-by-value reduction and lazy functional programming in the call-by-need λ-calculus with standard reduction. As a measure of time complexity, we count application steps. We encode the λ-calculus with both above reduction strategies into the applicative core of the π-calculus and show that time complexity is preserved. Our correctness proofs employs a new technique based on uniform confluence and simulations. The strength of our technique is illustrated by proving a folk theorem, namely that the call-by-need complexity of a functional program is smaller than its call-by-value complexity.