Results 1  10
of
14
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.
Curry: A Truly Functional Logic Language
, 1995
"... Functional and logic programming are the most important declarative programming paradigms, and interest in combining them has grown over the last decade. However, integrated functional logic languages are currently not widely used. This is due to the fact that the operational principles are not w ..."
Abstract

Cited by 53 (5 self)
 Add to MetaCart
Functional and logic programming are the most important declarative programming paradigms, and interest in combining them has grown over the last decade. However, integrated functional logic languages are currently not widely used. This is due to the fact that the operational principles are not well understood and many different evaluation strategies have been proposed which resulted in many different functional logic languages. To overcome this situation, we propose the functional logic language Curry which can deal as a standard language in this area. It includes important ideas of existing functional logic languages and recent developments, and combines the most important features of functional and logic languages. Thus, Curry can be the basis to combine the currently separated research efforts of the functional and logic programming communities and to boost declarative programming in general. Moreover, since functions provide for more efficient evaluation strategies and ...
A complete narrowing calculus for higherorder functional logic programming
 In Proc. 7th International Symposium on Programming Languages, Implementations, Logics and Programs (PLILP'95
, 1995
"... Abstract. Using higherorder functions is standard practice in functional programming, but most functional logic programming languages that have been described in the literature lack this feature. The natural way to deal with higherorder functions in the framework of ( rstorder) term rewriting is ..."
Abstract

Cited by 19 (4 self)
 Add to MetaCart
Abstract. Using higherorder functions is standard practice in functional programming, but most functional logic programming languages that have been described in the literature lack this feature. The natural way to deal with higherorder functions in the framework of ( rstorder) term rewriting is through socalled applicative term rewriting systems. In this paper we argue that existing calculi for lazy narrowing either do not apply to applicative systems or handle applicative terms very ineciently. We propose a new lazy narrowing calculus for applicative term rewriting systems and prove its completeness. 1
Decidable higherorder unification problems
 AUTOMATED DEDUCTION  CADE12. SPRINGER LNAI 814
, 1994
"... Secondorder unification is undecidable in general. Miller showed that unification of socalled higherorder patterns is decidable and unitary. Weshow that the unification of a linear higherorder pattern s with an arbitrary secondorder term that shares no variables with s is decidable and finitar ..."
Abstract

Cited by 17 (4 self)
 Add to MetaCart
Secondorder unification is undecidable in general. Miller showed that unification of socalled higherorder patterns is decidable and unitary. Weshow that the unification of a linear higherorder pattern s with an arbitrary secondorder term that shares no variables with s is decidable and finitary. A few extensions of this unification problem are still decidable: unifying two secondorder terms, where one term is linear, is undecidable if the terms contain bound variables but decidable if they don't.
A CallbyNeed Strategy for HigherOrder FunctionalLogic Programming
 LOGIC PROGRAMMING. PROC. OF THE 1995 INTERNATIONAL SYMPOSIUM
, 1995
"... We present an approach to truely higherorder functionallogic programming based on higherorder narrowing. Roughly speaking, we model a higherorder functional core language by higherorder rewriting and extend it by logic variables. For the integration of logic programs, conditional rules are suppo ..."
Abstract

Cited by 11 (5 self)
 Add to MetaCart
We present an approach to truely higherorder functionallogic programming based on higherorder narrowing. Roughly speaking, we model a higherorder functional core language by higherorder rewriting and extend it by logic variables. For the integration of logic programs, conditional rules are supported. For solving goals in this framework, we present a complete calculus for higherorder conditional narrowing. We develop several refinements that utilize the determinism of functional programs. These refinements can be combined to a narrowing strategy which generalizes callbyneed as in functional programming, where the dedicated higherorder methods are only used for full higherorder goals. Furthermore, we propose an implementational model for this narrowing strategy which delays computations until needed.
Lazy Narrowing with Simplification
, 1997
"... Languages that integrate functional and logic programming styles with a complete operational semantics are based on narrowing. In order to avoid useless computations, lazy narrowing strategies have been proposed in the past. This paper presents an improvement of lazy narrowing by incorporating dete ..."
Abstract

Cited by 10 (1 self)
 Add to MetaCart
Languages that integrate functional and logic programming styles with a complete operational semantics are based on narrowing. In order to avoid useless computations, lazy narrowing strategies have been proposed in the past. This paper presents an improvement of lazy narrowing by incorporating deterministic simplification steps into lazy narrowing derivations. These simplification steps reduce the search space so that in some cases infinite search spaces are reduced to finite ones. We consider two classes of programs where this strategy can be applied. Firstly, we show soundness and completeness of our strategy for functional logic programs based on ground confluent and terminating rewrite systems. Then, we show similar results for constructorbased weakly orthogonal (not necessarily terminating) rewrite systems. Finally, we demonstrate the improved operational behavior by means of several examples. Since most functional logic languages are based on programs belonging to one of these classes, our result is a significant step to improve the operational semantics of existing functional logic languages.
HigherOrder Narrowing with Convergent Systems
 In 4th Int. Conf. Algebraic Methodology and Software Technology, AMAST '95. Springer LNCS 936
, 1995
"... . Higherorder narrowing is a general method for higherorder equational reasoning and serves for instance as the foundation for the integration of functional and logic programming. We present several refinements of higherorder lazy narrowing for convergent (terminating and confluent) term rewr ..."
Abstract

Cited by 7 (7 self)
 Add to MetaCart
. Higherorder narrowing is a general method for higherorder equational reasoning and serves for instance as the foundation for the integration of functional and logic programming. We present several refinements of higherorder lazy narrowing for convergent (terminating and confluent) term rewrite systems and their application to program transformation. The improvements of narrowing include a restriction of narrowing at variables, generalizing the firstorder case. Furthermore, functional evaluation via normalization is shown to be complete and a partial answer to the eager variable elimination problem is presented. 1 Introduction and Overview Higherorder narrowing is a method for solving higherorder equations modulo a set of rewrite rules. It forms the basis of functionallogic programming and has been extensively studied in the firstorder case, for a survey see [10]. Motivated by functional programming, there exist several higherorder extensions for such languages [7, ...
Towards the uniform implementation of declarative languages
, 1997
"... Current implementation techniques for functional languages differ considerably from those for logic languages. This complicates the development of flexible and efficient abstract machines that can be used for the compilation of declarative languages combining concepts of functional and logic program ..."
Abstract

Cited by 6 (0 self)
 Add to MetaCart
Current implementation techniques for functional languages differ considerably from those for logic languages. This complicates the development of flexible and efficient abstract machines that can be used for the compilation of declarative languages combining concepts of functional and logic programming. We propose an abstract machine, called the JUMPmachine, which systematically integrates the operational concepts needed to implement the functional and logic programming paradigm. The use of a tagless representation for heap objects, which originates from the Spineless Tagless Gmachine, supports the integration of different concepts. In this paper, we provide a functional logic kernel language and show how to translate it into the abstract machine language of the JUMPmachine. Furthermore, we define the operational semantics of the machine language formally and discuss the mapping of the abstract machine to concrete machine architectures. We tested the approach by writing a compiler for the functional logic language GTML. The obtained performance results indicate that the proposed method allows to implement functional logic languages efficiently.
Some Applications of FunctionalLogic Programming
, 1996
"... We show examples for higherorder functional logic programming in which both programming concepts nicely complement each other. These include modeling distributed systems, parsing and hardware synthesis. ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
We show examples for higherorder functional logic programming in which both programming concepts nicely complement each other. These include modeling distributed systems, parsing and hardware synthesis.
HigherOrder FunctionalLogic Programming: A Systematic Development
 In Proc. of the Second Fuji International Workshop on Functional and Logic Programming. World Scientific
, 1997
"... We develop an effective model for higherorder functionallogic programming by refining higherorder narrowing calculi. The refinements reduce the high degree of nondeterminism in narrowing calculi, utilizing properties of functional(logic) programs. These include convergent and leftlinear rewrit ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
We develop an effective model for higherorder functionallogic programming by refining higherorder narrowing calculi. The refinements reduce the high degree of nondeterminism in narrowing calculi, utilizing properties of functional(logic) programs. These include convergent and leftlinear rewrite rules. All refinements can be combined to a narrowing strategy which generalizes callbyneed as in functional programming. Furthermore, we consider conditional rewrite rules which are often convenient for programming applications. 1. Introduction We present a systematic development of a calculus which integrates higherorder functional and logic programming, based on narrowing. Narrowing is a general method for solving equations modulo a set of rewrite rules. Functionallogic languages with a sound and complete operational semantics are mainly based on narrowing. For a survey on the topic we refer to [9]. In our higherorder equational logic we use a rewrite relation due to Nipkow [18],...