Non-determinism in functional languages
The Computer Journal - Special issue on formal methods: part 1
A call-by-need lambda calculus
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
A non-deterministic call-by-need lambda calculus
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
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
Functional Programming
ICALP '95 Proceedings of the 22nd International Colloquium on Automata, Languages and Programming
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
Implementing Declarative Parallel Bottom-Avoiding Choice
SBAC-PAD '02 Proceedings of the 14th Symposium on Computer Architecture and High Performance Computing
Interaction nets with McCarthy's amb: properties and applications
Nordic Journal of Computing
Secrets of the Glasgow Haskell Compiler inliner
Journal of Functional Programming
Algorithm + strategy = parallelism
Journal of Functional Programming
On the representation of McCarthy's amb in the π-calculus
Theoretical Computer Science - Expressiveness in concurrency
Congruence of Bisimulation in a Non-Deterministic Call-By-Need Lambda Calculus
Electronic Notes in Theoretical Computer Science (ENTCS)
Normal Form Simulation for McCarthy's Amb
Electronic Notes in Theoretical Computer Science (ENTCS)
Diagrams for meaning preservation
RTA'03 Proceedings of the 14th international conference on Rewriting techniques and applications
Observational Semantics for a Concurrent Lambda Calculus with Reference Cells and Futures
Electronic Notes in Theoretical Computer Science (ENTCS)
RTA '08 Proceedings of the 19th international conference on Rewriting Techniques and Applications
Correctly translating concurrency primitives
Proceedings of the 2009 ACM SIGPLAN workshop on ML
Closures of may-, should- and must-convergences for contextual equivalence
Information Processing Letters
Similarity implies equivalence in a class of non-deterministic call-by-need lambda calculi
Information and Computation
On generic context lemmas for higher-order calculi with sharing
Theoretical Computer Science
Information Processing Letters
A contextual semantics for concurrent Haskell with futures
Proceedings of the 13th international ACM SIGPLAN symposium on Principles and practices of declarative programming
Correctness of program transformations as a termination problem
IJCAR'12 Proceedings of the 6th international joint conference on Automated Reasoning
Conservative Concurrency in Haskell
LICS '12 Proceedings of the 2012 27th Annual IEEE/ACM Symposium on Logic in Computer Science
Correctness of an STM Haskell implementation
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
We present a higher-order call-by-need lambda calculus enriched with constructors, case expressions, recursive letrec expressions, a seq operator for sequential evaluation and a non-deterministic operator amb that is locally bottom-avoiding. We use a small-step operational semantics in the form of a single-step rewriting system that defines a (non-deterministic) normal-order reduction. This strategy can be made fair by adding resources for book-keeping. As equational theory, we use contextual equivalence (that is, terms are equal if, when plugged into any program context, their termination behaviour is the same), in which we use a combination of may-and must-convergence, which is appropriate for non-deterministic computations. We show that we can drop the fairness condition for equational reasoning, since the valid equations with respect to normal-order reduction are the same as for fair normal-order reduction. We develop a number of proof tools for proving correctness of program transformations. In particular, we prove a context lemma for both may-and must-convergence that restricts the number of contexts that need to be examined for proving contextual equivalence. Combining this with so-called complete sets of commuting and forking diagrams, we show that all the deterministic reduction rules and some additional transformations preserve contextual equivalence. We also prove a standardisation theorem for fair normal-order reduction. The structure of the ordering ≤c is also analysed, and we show that Ω is not a least element and ≤c already implies contextual equivalence with respect to may-convergence.