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
A natural semantics for lazy evaluation
POPL '93 Proceedings of the 20th 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
Journal of the ACM (JACM)
Functional and constraint logic programming
Constraints in computational logics
A Rewriting Logic for Declarative Programming
ESOP '96 Proceedings of the 6th European Symposium on Programming Languages and Systems
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
New completeness results for lazy conditional narrowing
PPDP '04 Proceedings of the 6th ACM SIGPLAN international conference on Principles and practice of declarative programming
Operational semantics for declarative multi-paradigm languages
Journal of Symbolic Computation
Evaluation strategies for functional logic programming
Journal of Symbolic Computation
Overlapping rules and logic variables in functional logic programs
ICLP'06 Proceedings of the 22nd international conference on Logic Programming
Call pattern analysis for functional logic programs
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
Inductively Sequential Term-Graph Rewrite Systems
ICGT '08 Proceedings of the 4th international conference on Graph Transformations
A flexible framework for programming with non-deterministicfunctions
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Logic-Based Program Synthesis and Transformation
Narrowing for First Order Functional Logic Programs with Call-Time Choice Semantics
Applications of Declarative Programming and Knowledge Management
A Technique to Build Debugging Tools for Lazy Functional Logic Languages
Electronic Notes in Theoretical Computer Science (ENTCS)
Purely functional lazy non-deterministic programming
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Programming with singular and plural non-deterministic functions
Proceedings of the 2010 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Rewriting and call-time choice: the HO case
FLOPS'08 Proceedings of the 9th international conference on Functional and logic programming
A relation algebraic semantics for a lazy functional logic language
RelMiCS'08/AKA'08 Proceedings of the 10th international conference on Relational and kleene algebra methods in computer science, and 5th international conference on Applications of kleene algebra
Transformation and debugging of functional logic programs
A 25-year perspective on logic programming
A semantics for lazy assertions
Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation
Transforming functional logic programs into monadic functional programs
WFLP'10 Proceedings of the 19th international conference on Functional and constraint logic programming
KiCS2: a new compiler from Curry to Haskell
WFLP'11 Proceedings of the 20th international conference on Functional and constraint logic programming
Purely functional lazy nondeterministic programming
Journal of Functional Programming - Dedicated to ICFP 2009
Contracts and specifications for functional logic programming
PADL'12 Proceedings of the 14th international conference on Practical Aspects of Declarative Languages
Hi-index | 0.00 |
Non-confluent and non-terminating rewrite systems are interesting from the point of view of programming. In particular, existing functional logic languages use such kind of rewrite systems to define possibly non-strict non-deterministic functions. The semantics adopted for non-determinism is call-time choice, whose combination with non-strictness is not a trivial issue that has been addressed from a semantic point of view in the Constructor-based Rewriting Logic (CRWL) framework. We investigate here how to express call-time choice and non-strict semantics from a point of view closer to classical rewriting. The proposed notion of rewriting uses an explicit representation for sharing with let-constructions and is proved to be equivalent to the CRWL approach. Moreover, we relate this let-rewriting relation (and hence CRWL) with ordinary rewriting, providing in particular soundness and completeness of let-rewriting with respect to rewriting for a class of programs which are confluent in a certain semantic sense.