2000 # A needed narrowing strategy

**Abstract:** The narrowing relation over terms constitutes the basis of the most important operational semantics of languages that integrate functional and logic programming paradigms. It also plays an important role in the definition of some algorithms of unification modulo equational theories that are defined by confluent term rewriting systems. Due to the inefficiency of simple narrowing, many refined narrowing strategies have been proposed in the last decade. This paper presents a new narrowing strategy that is optimal…

Help me understand this report

Search citation statements

Paper Sections

Select...

2

1

1

1

Citation Types

0

126

0

17

Year Published

2002

2016

Publication Types

Select...

7

Relationship

3

4

Authors

Journals

(143 citation statements)

0

126

0

17

“…Forward Reach uses lazy narrowing in order to generate inputs e ciently. Lazy narrowing is a concept from functional logic programming [2,7] and can be described as the natural extension of a non-strict semantics to a language with free variables. Free variables are only bound when their value is required for evaluation to proceed.…”

confidence: 99%

“…Forward Reach uses lazy narrowing in order to generate inputs e ciently. Lazy narrowing is a concept from functional logic programming [2,7] and can be described as the natural extension of a non-strict semantics to a language with free variables. Free variables are only bound when their value is required for evaluation to proceed.…”

confidence: 99%

“…We introduce and compare two particularly relevant theories to ours. In their seminal work, Antoy et al [2] established the soundness and completeness of the related notion of needed narrowing, and the optimality of needed narrowing within a restricted domain. However, whereas our formalisation is based on extending a small-step semantics, theirs is based on classical rewrite systems.…”

confidence: 99%

“…We compile each definitional tree into a sequence of virtual machine instructions. Because a definitional tree is a high-level abstraction for the definition of a sound, complete and theoretically efficient narrowing strategy [6], mapping this strategy into virtual machine instructions increases our confidence in both the correctness and the efficiency of the execution. The notation for the variant of definitional trees we use is summarized in Figure 3.…”

confidence: 99%

“…An appropriate notion of "need" is a subtle point in the presence of a nondeterministic choice, e.g., a typical computation step, since the need of an argument might depend on the choice itself. [4] proposes a needed narrowing strategy to solve this problem. This strategy is optimal w.r.t.…”

confidence: 99%

“…Since it is based on an optimal evaluation strategy [4], Curry can be considered a generalization of concurrent constraint programming [36] with a lazy (optimal) evaluation strategy. Furthermore, Curry also offers features for application programming like modules, monadic I/O, encapsulated search [27], ports for distributed programming [22], libraries for GUI [23] and HTML programming [24] etc.…”

confidence: 99%