2000
DOI: 10.1145/347476.347484
|View full text |Cite
|
Sign up to set email alerts
|

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… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
132
0
17

Year Published

2002
2002
2016
2016

Publication Types

Select...
7

Relationship

3
4

Authors

Journals

citations
Cited by 170 publications
(152 citation statements)
references
References 52 publications
0
132
0
17
Order By: Relevance
“…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.…”
Section: Forward Reachmentioning
confidence: 99%
See 1 more Smart Citation
“…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.…”
Section: Forward Reachmentioning
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.…”
Section: Related Workmentioning
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.…”
Section: Compilationmentioning
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.…”
Section: Functional Logic Programming and Currymentioning
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.…”
Section: Functional Logic Programming and Currymentioning
confidence: 99%