Research topics in functional programming
A natural semantics for lazy evaluation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A call-by-need lambda calculus
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
NSL '94 Proceedings of the first workshop on Non-standard logics and logical aspects of computer science
Lambda calculus with explicit recursion
Information and Computation
Discrimination by parallel observers: the algorithm
Information and Computation
Erratic fudgets: a semantic theory for an embedded coordination language
Science of Computer Programming - Special issue on coordination languages and architectures
TACS '97 Proceedings of the Third International Symposium on Theoretical Aspects of Computer Software
The call-by-need lambda calculus
Journal of Functional Programming
The call-by-need lambda calculus
Journal of Functional Programming
On generic context lemmas for higher-order calculi with sharing
Theoretical Computer Science
A contextual semantics for concurrent Haskell with futures
Proceedings of the 13th international ACM SIGPLAN symposium on Principles and practices of declarative programming
Hi-index | 0.00 |
Call-by-need lambda calculi with letrec provide a rewriting-based operational semantics for (lazy) call-by-name functional languages. These calculi model the sharing behavior during evaluation more closely than let-based calculi that use a fixpoint combinator. However, currently the knowledge about correctness w.r.t. observational equivalence of modifying the sharing in letrec-based calculi is full of gaps. In this paper we develop a new proof method based on a calculus on infinite trees, generalizing the parallel 1-reduction, for showing correctness of instantiation operations. We demonstrate the method in the small calculus LR? and show that copying at compile-time can be done without restrictions. We also show that the call-by-need and call-by-name strategies are equivalent w.r.t. contextual equivalence. A consequence is correctness of all the transformations like instantiation, inlining, specialization and common subexpression elimination in LRλ. The result for LRλ also gives an answer to unresolved problems in several papers and thus contributes to the knowledge about deterministic calculi with letrec. The method also works for a calculus with case and constructors, and also with parallel or. We are also confident that the method scales up for proving correctness of copy-related transformations in nondeterministic lambda calculi if restricted to "deterministic" subterms.