Results 1  10
of
63
An Implementation of Narrowing Strategies
 Journal of the ACM
, 2001
"... This paper describes an implementation of narrowing, an essential component of implementations of modern functional logic languages. These implementations rely on narrowing, in particular on some optimal narrowing strategies, to execute functional logic programs. We translate functional logic progra ..."
Abstract

Cited by 294 (123 self)
 Add to MetaCart
This paper describes an implementation of narrowing, an essential component of implementations of modern functional logic languages. These implementations rely on narrowing, in particular on some optimal narrowing strategies, to execute functional logic programs. We translate functional logic programs into imperative (Java) programs without an intermediate abstract machine. A central idea of our approach is the explicit representation and processing of narrowing computations as data objects. This enables the implementation of operationally complete strategies (i.e., without backtracking) or techniques for search control (e.g., encapsulated search). Thanks to the use of an intermediate and portable representation of programs, our implementation is general enough to be used as a common back end for a wide variety of functional logic languages.
Higherorder narrowing with definitional trees
 Neural Computation
, 1996
"... Functional logic languages with a sound and complete operational semantics are mainly based on narrowing. Due to the huge search space of simple narrowing, steadily improved narrowing strategies have been developed in the past. Needed narrowing is currently the best narrowing strategy for firstord ..."
Abstract

Cited by 78 (23 self)
 Add to MetaCart
Functional logic languages with a sound and complete operational semantics are mainly based on narrowing. Due to the huge search space of simple narrowing, steadily improved narrowing strategies have been developed in the past. Needed narrowing is currently the best narrowing strategy for firstorder functional logic programs due to its optimality properties w.r.t. the length of derivations and the number of computed solutions. In this paper, we extend the needed narrowing strategy to higherorder functions and λterms as data structures. By the use of definitional trees, our strategy computes only incomparable solutions. Thus, it is the first calculus for higherorder functional logic programming which provides for such an optimality result. Since we allow higherorder logical variables denoting λterms, applications go beyond current functional and logic programming languages.
The Tile Model
 PROOF, LANGUAGE AND INTERACTION: ESSAYS IN HONOUR OF ROBIN MILNER
, 1996
"... In this paper we introduce a model for a wide class of computational systems, whose behaviour can be described by certain rewriting rules. We gathered our inspiration both from the world of term rewriting, in particular from the rewriting logic framework [Mes92], and of concurrency theory: among the ..."
Abstract

Cited by 65 (24 self)
 Add to MetaCart
In this paper we introduce a model for a wide class of computational systems, whose behaviour can be described by certain rewriting rules. We gathered our inspiration both from the world of term rewriting, in particular from the rewriting logic framework [Mes92], and of concurrency theory: among the others, the structured operational semantics [Plo81], the context systems [LX90] and the structured transition systems [CM92] approaches. Our model recollects many properties of these sources: first, it provides a compositional way to describe both the states and the sequences of transitions performed by a given system, stressing their distributed nature. Second, a suitable notion of typed proof allows to take into account also those formalisms relying on the notions of synchronization and sideeffects to determine the actual behaviour of a system. Finally, an equivalence relation over sequences of transitions is defined, equipping the system under analysis with a concurrent semantics, ...
Argument Filtering Transformation
 In Proc. 1st PPDP, LNCS 1702
, 1999
"... To simplify the task of proving termination of term rewriting systems, several elimination methods, such as the dummy elimination, the distribution elimination, the general dummy elimination and the improved general dummy elimination, have been proposed. In this paper, we show that the argument lter ..."
Abstract

Cited by 39 (2 self)
 Add to MetaCart
To simplify the task of proving termination of term rewriting systems, several elimination methods, such as the dummy elimination, the distribution elimination, the general dummy elimination and the improved general dummy elimination, have been proposed. In this paper, we show that the argument ltering method combining with the dependency pair technique is essential in all the above elimination methods. We present remarkable simple proofs for the soundness of these elimination methods based on this observation. Moreover, we propose a new elimination method, called the argument ltering transformation, which is not only more powerful than all the other elimination methods but also especially useful to make clear the essential relation hidden behind these methods.
The NarrowingDriven Approach to Functional Logic Program Specialization
 New Generation Computing
, 2002
"... Partial evaluation is a semanticsbased program optimization technique which has been investigated within di#erent programming paradigms and applied to a wide variety of languages. Recently, a partial evaluation framework for functional logic programs has been proposed. ..."
Abstract

Cited by 34 (20 self)
 Add to MetaCart
Partial evaluation is a semanticsbased program optimization technique which has been investigated within di#erent programming paradigms and applied to a wide variety of languages. Recently, a partial evaluation framework for functional logic programs has been proposed.
A 2Categorical Presentation of Term Graph Rewriting
 CATEGORY THEORY AND COMPUTER SCIENCE, VOLUME 1290 OF LNCS
, 1997
"... It is wellknown that a term rewriting system can be faithfully described by a cartesian 2category, where horizontal arrows represent terms, and cells represent rewriting sequences. In this paper we propose a similar, original 2categorical presentation for term graph rewriting. Building on a re ..."
Abstract

Cited by 34 (17 self)
 Add to MetaCart
It is wellknown that a term rewriting system can be faithfully described by a cartesian 2category, where horizontal arrows represent terms, and cells represent rewriting sequences. In this paper we propose a similar, original 2categorical presentation for term graph rewriting. Building on a result presented in [8], which shows that term graphs over a given signature are in onetoone correspondence with arrows of a gsmonoidal category freely generated from the signature, we associate with a term graph rewriting system a gsmonoidal 2category, and show that cells faithfully represent its rewriting sequences. We exploit the categorical framework to relate term graph rewriting and term rewriting, since gsmonoidal (2)categories can be regarded as "weak" cartesian (2)categories, where certain (2)naturality axioms have been dropped.
Overlapping Rules and Logic Variables in Functional Logic Programs
 In Twenty Second International Conference on Logic Programming
, 2006
"... Abstract. Functional logic languages extend purely functional languages with two features: operations defined by overlapping rules and logic variables in both defining rules and expressions to evaluate. In this paper, we show that only one of these features is sufficient in a core language. On the o ..."
Abstract

Cited by 34 (16 self)
 Add to MetaCart
Abstract. Functional logic languages extend purely functional languages with two features: operations defined by overlapping rules and logic variables in both defining rules and expressions to evaluate. In this paper, we show that only one of these features is sufficient in a core language. On the one hand, overlapping rules can be eliminated by introducing logic variables in rules. On the other hand, logic variables can be eliminated by introducing operations defined by overlapping rules. The proposed transformations between different classes of programs not only give a better understanding of the features of functional logic programs but also may simplify implementations of functional logic languages. 1
An Abstract Standardisation Theorem
, 1992
"... The standardisation theorem is a key theorem in the calculus. It implies that any normal form can be reached by the normal order (leftmost outermost) strategy. The theorem states that any reduction may be rearranged in a topdown and lefttoright order. This also holds in orthogonal term rewriting ..."
Abstract

Cited by 28 (5 self)
 Add to MetaCart
The standardisation theorem is a key theorem in the calculus. It implies that any normal form can be reached by the normal order (leftmost outermost) strategy. The theorem states that any reduction may be rearranged in a topdown and lefttoright order. This also holds in orthogonal term rewriting systems (TRS), although the lefttoright order is more subtle. We give a new presentation of the standardisation property by means of four axioms about the residual and nesting relations on redexes. This axiomatic approach provides a better understanding of standardisation, and makes it applicable in other settings, such as dags or interaction networks. We also treat conflicts between redexes (critical pairs in TRS). The axioms include Berry's stability, proving it to be a intrinsic notion of deterministic calculi. 1 Introduction The calculus has two main syntactic theorems. One is the ChurchRosser theorem, which induces uniqueness of normal forms. The second one is the standardisation...