Non-determinism in functional languages
The Computer Journal - Special issue on formal methods: part 1
Nondeterminism in algebraic specifications and algebraic programs
Nondeterminism in algebraic specifications and algebraic programs
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Admissible graph rewriting and narrowing
JICSLP'98 Proceedings of the 1998 joint international conference and symposium on Logic programming
A Rewriting Logic for Declarative Programming
ESOP '96 Proceedings of the 6th European Symposium on Programming Languages and Systems
TOY: A Multiparadigm Declarative System
RtA '99 Proceedings of the 10th International Conference on Rewriting Techniques and Applications
Canonical Forms and Unification
Proceedings of the 5th Conference on Automated Deduction
A demand-driven narrowing calculus with overlapping definitional trees
Proceedings of the 5th ACM SIGPLAN international conference on Principles and practice of declaritive programming
The call-by-need lambda calculus
Journal of Functional Programming
A simple rewrite notion for call-time choice semantics
Proceedings of the 9th ACM SIGPLAN international conference on Principles and practice of declarative programming
Operational semantics for declarative multi-paradigm languages
Journal of Symbolic Computation
Multi-paradigm declarative languages
ICLP'07 Proceedings of the 23rd international conference on Logic programming
On a tighter integration of functional and logic programming
APLAS'07 Proceedings of the 5th Asian conference on Programming languages and systems
Rewriting and call-time choice: the HO case
FLOPS'08 Proceedings of the 9th international conference on Functional and logic programming
Overlapping rules and logic variables in functional logic programs
ICLP'06 Proceedings of the 22nd international conference on Logic Programming
Natural narrowing for general term rewriting systems
RTA'05 Proceedings of the 16th international conference on Term Rewriting and Applications
Transformation and debugging of functional logic programs
A 25-year perspective on logic programming
Hi-index | 0.00 |
In a recent work we have proposed let -rewriting, a simple one-step relation close to ordinary term rewriting but able, via local bindings, to express sharing of computed values. In this way, let -rewriting reflects the call-time choice semantics for non-determinism adopted by modern functional logic languages, where programs are rewrite systems possibly non-confluent and non-terminating. In this paper we extend that work providing a notion of let -narrowing which is adequate for call-time choice as proved by soundness and completeness results of let -narrowing with respect to let -rewriting. Completeness is based on a lifting lemma for let -rewriting similar to Hullot's lifting lemma for ordinary rewriting and narrowing. Our work copes with first order, left linear, constructor-based rewrite systems with no other restrictions about confluence, termination or presence of extra variables in right-hand sides of rules.