Logic programming with functions and predicates: the language Babel
Journal of Logic Programming
Specialization of lazy functional logic programs
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Term rewriting and all that
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Operational semantics of rewriting with the on-demand evaluation strategy
SAC '00 Proceedings of the 2000 ACM symposium on Applied computing - Volume 2
Lazy rewriting on eager machinery
ACM Transactions on Programming Languages and Systems (TOPLAS)
Modular termination of context-sensitive rewriting
Proceedings of the 4th ACM SIGPLAN international conference on Principles and practice of declarative programming
Context-sensitive rewriting strategies
Information and Computation
Transforming Context-Sensitive Rewrite Systems
RtA '99 Proceedings of the 10th International Conference on Rewriting Techniques and Applications
Termination of (Canonical) Context-Sensitive Rewriting
RTA '02 Proceedings of the 13th International Conference on Rewriting Techniques and Applications
Termination of Context-Sensitive Rewriting
RTA '97 Proceedings of the 8th International Conference on Rewriting Techniques and Applications
Termination of on-demand rewriting and termination of OBJ programs
Proceedings of the 3rd ACM SIGPLAN international conference on Principles and practice of declarative programming
ICFEM '97 Proceedings of the 1st International Conference on Formal Engineering Methods
Hi-index | 0.00 |
In functional languages such as OBJ*, CafeOBJ, and Maude, symbols are given strategy annotations which specify (the order in) which subterms are evaluated. Syntactically, they are given either as lists of natural numbers or as lists of integers associated to function symbols whose (absolute) values refer to the arguments of the corresponding symbol. A positive index enables the evaluation of an argument whereas a negative index means "evaluate on-demand". While strategy annotations containing only natural numbers have been implemented and received some recent investigation endeavor (regarding, e.g., termination and completeness), fully general annotations (also called on-demand strategy annotations), which have been proposed to support laziness in OBJ-like languages, are disappointingly under-explored to date. In this paper, we first point out a number of problems of current proposals for handling on-demand strategy annotations. Then, we propose a solution to these problems which is based on a suitable extension of the E-evaluation strategy of OBJ-like languages (that only considers annotations given as natural numbers) to on-demand strategy annotations. Our strategy incorporates a better treatment of demandness and also exhibits good computational properties; in particular, we show how to use it for computing (head-)normal forms. We also introduce a transformation for proving termination of the new evaluation strategy by using standard techniques.