62 research outputs found
Basic completion strategies as another application of the Maude strategy language
The two levels of data and actions on those data provided by the separation
between equations and rules in rewriting logic are completed by a third level
of strategies to control the application of those actions. This level is
implemented on top of Maude as a strategy language, which has been successfully
used in a wide range of applications. First we summarize the Maude strategy
language design and review some of its applications; then, we describe a new
case study, namely the description of completion procedures as transition rules
+ control, as proposed by Lescanne.Comment: In Proceedings WRS 2011, arXiv:1204.531
Stack-based Implementation of Narrowing
An abstract stack machine for the implementation of narrowing is presented. On the one hand
From Reduction Machines To Narrowing Machines
Narrowing, the evaluation mechanism of functional logic languages, can be seen as a generalization of reduction, the evaluation mechanism of purely functional languages. The unidirectional pattern matching, which is used for parameter passing in functional languages, is simply replaced by the bidirectional unification known from logic programming languages. We show in this paper, how to extend a reduction machine, that has been designed for the evaluation of purely functional programs to a machine that performs narrowing. The necessary extensions concern the realization of unification and backtracking. The latter has to be incorporated to handle nondeterministic computations. It turns out that the resulting narrowing machine can also be seen as an extension of Warren's Prolog engine [Warren 83]. This extension enables a space efficient handling of nested expressions and embodies an optimized treatment of deterministic computations. As in Warren's machine the central component of the ma..
Relating the Implementation Techniques of Functional and Functional Logic Languages
Functional logic languages are declarative programming languages that integrate the programming paradigms of functional and logic languages within a single framework. They are extensions of functional languages with principles derived from logic programming. Narrowing, the evaluation mechanism of functional logic languages, can be defined as a generalization of reduction, the evaluation mechanism of purely functional languages. The unidirectional pattern matching, which is used for parameter passing in functional languages, is simply replaced by the bidirectional unification known from logic programming languages. We show in this paper, how to extend a reduction machine, that has been designed for the evaluation of purely functional programs to a machine that performs narrowing. The necessary extensions concern the realization of unification and backtracking, for which we fall back upon the methods of Warren's Prolog engine [Warren 83]. The narrowing machine embodies an optimized trea..
- …