Introduction to Functional Programming
Introduction to Functional Programming
A Functional Language for the Specification of Complex Tree Transformations
ESOP '88 Proceedings of the 2nd European Symposium on Programming
Higher Order Matching for Program Transformation
FLOPS '99 Proceedings of the 4th Fuji International Symposium on Functional and Logic Programming
Towards Correct, Efficient and Reusable Transformational Developments
KORSO - Methods, Languages, and Tools for the Construction of Correct Software
Linear Interpolation for the Higher-Order Matching Problem
TAPSOFT '97 Proceedings of the 7th International Joint Conference CAAP/FASE on Theory and Practice of Software Development
Efficient Second-Order Matching
RTA '96 Proceedings of the 7th International Conference on Rewriting Techniques and Applications
The complexity of unification.
The complexity of unification.
Tractable and intractable second-order matching problems
COCOON'99 Proceedings of the 5th annual international conference on Computing and combinatorics
Program transformation by templates based on term rewriting
PPDP '05 Proceedings of the 7th ACM SIGPLAN international conference on Principles and practice of declarative programming
Program optimizations and transformations in calculation form
GTTSE'05 Proceedings of the 2005 international conference on Generative and Transformational Techniques in Software Engineering
Hi-index | 0.89 |
Second-order patterns, together with second-order matching, enable concise specification of program transformation, and have been implemented in several program transformation systems. However, second-order matching in general is nondeterministic, and the matching algorithm is so expensive that the matching is NP-complete. It is orthodox to impose constraints on the form of higher-order patterns so as to obtain the desirable matches satisfying certain properties such as decidability and finiteness. In the context of unification, Miller's higher-order patterns have a single most-general unifier. In this paper, we relax the restriction of his patterns without changing determinism in the context of matching instead of unification. As a consequence, our deterministic second-order patterns cover a wide class of useful patterns for program transformation. The time-complexity of our deterministic matching algorithm is linear in the size of a term for a fixed pattern.