Journal of Symbolic Computation
Partial evaluation of pattern matching in strings
Information Processing Letters
Deforestation: transforming programs to eliminate trees
Proceedings of the Second European Symposium on Programming
Kernel-LEAF: a logic plus functional language
Journal of Computer and System Sciences
Partial evaluation in logic programming
Journal of Logic Programming
Logic programming with functions and predicates: the language Babel
Journal of Logic Programming
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
Term rewriting and all that
Partial evaluation of functional logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Automated Theorem-Proving for Theories with Simplifiers Commutativity, and Associativity
Journal of the ACM (JACM)
Journal of the ACM (JACM)
The size-change principle for program termination
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The narrowing-driven approach to functional logic program specialization
New Generation Computing - Partial evaluation and program transformation
Definitional Interpreters for Higher-Order Programming Languages
Higher-Order and Symbolic Computation
Partial Evaluation of Computation Process—AnApproach to a Compiler-Compiler
Higher-Order and Symbolic Computation
Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture
Typed Higher-Order Narrowing without Higher-Order Strategies
FLOPS '99 Proceedings of the 4th Fuji International Symposium on Functional and Logic Programming
A Demand Driven Computation Strategy for Lazy Narrowing
PLILP '93 Proceedings of the 5th International Symposium on Programming Language Implementation and Logic Programming
Narrowing Approximations as an Optimization for Equational Logic Programs
PLILP '93 Proceedings of the 5th International Symposium on Programming Language Implementation and Logic Programming
PLILP '97 Proceedings of the9th International Symposium on Programming Languages: Implementations, Logics, and Programs: Including a Special Trach on Declarative Programming Languages in Education
BTA Algorithms to Ensure Termination of Off-Line Partial Evaluation
Proceedings of the Second International Andrei Ershov Memorial Conference on Perspectives of System Informatics
Narrowing Directed by a Graph of Terms
RTA '91 Proceedings of the 4th International Conference on Rewriting Techniques and Applications
Proceedings of the Third International Conference on Algebraic and Logic Programming
Optimal Non-deterministic Functional Logic Computations
ALP '97-HOA '97 Proceedings of the 6th International Joint Conference on Algebraic and Logic Programming
Some Termination Criteria for Narrowing and E-Narrowing
CADE-11 Proceedings of the 11th International Conference on Automated Deduction: Automated Deduction
Homeomorphic embedding for online termination of symbolic methods
The essence of computation
Higher-order narrowing with definitional trees
Journal of Functional Programming
Offline specialisation in Prolog using a hand-written compiler generator
Theory and Practice of Logic Programming
Transformation by interpreter specialisation
Science of Computer Programming - Special issue on program transformation
Specialization of functional logic programs based on needed narrowing
Theory and Practice of Logic Programming
Termination analysis and specialization-point insertion in offline partial evaluation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Size-change termination for term rewriting
RTA'03 Proceedings of the 14th international conference on Rewriting techniques and applications
An offline partial evaluator for curry programs
Proceedings of the 2005 ACM SIGPLAN workshop on Curry and functional logic programming
Ensuring the quasi-termination of needed narrowing computations
Information Processing Letters
Demand analysis with partial predicates
Theory and Practice of Logic Programming
Higher-Order and Symbolic Computation
Preserving Sharing in the Partial Evaluation of Lazy Functional Programs
Logic-Based Program Synthesis and Transformation
A Transformational Approach to Polyvariant BTA of Higher-Order Functional Programs
Logic-Based Program Synthesis and Transformation
Improving offline narrowing-driven partial evaluation using size-change graphs
LOPSTR'06 Proceedings of the 16th international conference on Logic-based program synthesis and transformation
Termination of narrowing in left-linear constructor systems
FLOPS'08 Proceedings of the 9th international conference on Functional and logic programming
Towards scalable partial evaluation of declarative programs
LOPSTR'09 Proceedings of the 19th international conference on Logic-Based Program Synthesis and Transformation
Hi-index | 0.00 |
Narrowing-driven partial evaluation is a powerful technique for the specialization of (first-order) functional and functional logic programs. However, although it gives good results on small programs, it does not scale up well to realistic problems (e.g., interpreter specialization). In this work, we introduce a faster partial evaluation scheme by ensuring the termination of the process offline. For this purpose, we first characterize a class of programs which are quasi-terminating, i.e., the computations performed with needed narrowing—the symbolic computation mechanism of narrowing-driven partial evaluation—only contain finitely many different terms (and, thus, partial evaluation terminates). Since this class is quite restrictive, we also introduce an annotation algorithm for a broader class of programs so that they behave like quasi-terminating programs w.r.t. an extension of needed narrowing. Preliminary experiments are encouraging and demonstrate the usefulness of our approach.