Equality in lazy computation systems
Proceedings of the Fourth Annual Symposium on Logic in computer science
PARLE '91 Proceedings on Parallel architectures and languages Europe : volume II: parallel languages: volume II: parallel languages
Research topics in functional programming
Implementing functional languages
Implementing functional languages
Non-determinism in functional languages
The Computer Journal - Special issue on formal methods: part 1
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
Lambda-calculi for (strict) parallel functions
Information and Computation
The lazy Lambda calculus in a concurrency scenario
Information and Computation
A call-by-need lambda calculus
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Nondeterministic extensions of untyped &lgr;-calculus
Information and Computation
Proceedings of the 6th Colloquium, on Automata, Languages and Programming
A Tiny Functional Language with Logical Features
Seminar and Workshop on Declarative Programming
A Semantics for Locally Bottom-Avoiding Choice
Proceedings of the 1992 Glasgow Workshop on Functional Programming
Expressing and Reasoning About Non-Deterministic Functional Programs
Proceedings of the 1989 Glasgow Workshop on Functional Programming
The call-by-need lambda calculus
Journal of Functional Programming
The call-by-need lambda calculus
Journal of Functional Programming
NATURAL EXPERT: a commercial functional programming environment
Journal of Functional Programming
The Implementation of Functional Programming Languages (Prentice-Hall International Series in Computer Science)
Erratic fudgets: a semantic theory for an embedded coordination language
Science of Computer Programming - Special issue on coordination languages and architectures
Erratic Fudgets: A Semantic Theory for an Embedded Coordination Language
COORDINATION '99 Proceedings of the Third International Conference on Coordination Languages and Models
Infinite Unfolding and Transformations of Nondeterministic Programs
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 1
Observational Semantics for a Concurrent Lambda Calculus with Reference Cells and Futures
Electronic Notes in Theoretical Computer Science (ENTCS)
Mathematical Structures in Computer Science
RTA '08 Proceedings of the 19th international conference on Rewriting Techniques and Applications
Congruence of Bisimulation in a Non-Deterministic Call-By-Need Lambda Calculus
Electronic Notes in Theoretical Computer Science (ENTCS)
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
Correctness of program transformations as a termination problem
IJCAR'12 Proceedings of the 6th international joint conference on Automated Reasoning
Infinite Unfolding and Transformations of Nondeterministic Programs
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 1
Hi-index | 0.00 |
In this paper we present a non-deterministic call-by-need (untyped) lambda calculus λnd with a constant choice and a let-syntax that models sharing. Our main result is that λnd has the nice operational properties of the standard lambda calculus: confluence on sets of expressions, and normal order reduction is sufficient to reach head normal form. Using a strong contextual equivalence we show correctness of several program transformations. In particular of lambda-lifting using deterministic maximal free expressions. These results show that λnd is a new and also natural combination of non-determinism and lambda-calculus, which has a lot of opportunities for parallel evaluation.An intended application of λnd is as a foundation for compiling lazy functional programming languages with I/O based on direct calls. The set of correct program transformations can be rigorously distinguished from non-correct ones. All program transformations are permitted with the slight exception that for transformations like common subexpression elimination and lambda-lifting with maximal free expressions the involved subexpressions have to be deterministic ones.