Results 1  10
of
31
The Integration of Functions into Logic Programming: From Theory to Practice
 Journal of Logic Programming
, 1994
"... Abstract. Functional logic programming languages combine the most important declarative programming paradigms, and attempts to combine these paradigms have a long history. The declarative multiparadigm language Curry is influenced by recent advances in the foundations and implementation of function ..."
Abstract

Cited by 336 (52 self)
 Add to MetaCart
Abstract. Functional logic programming languages combine the most important declarative programming paradigms, and attempts to combine these paradigms have a long history. The declarative multiparadigm language Curry is influenced by recent advances in the foundations and implementation of functional logic languages. The development of Curry is an international initiative intended to provide a common platform for the research, teaching, and application of integrated functional logic languages. This paper surveys the foundations of functional logic programming that are relevant for Curry, the main features of Curry, and extensions and applications of Curry and functional logic programming. 1
Multiparadigm Declarative Languages
 In Proceedings of the International Conference on Logic Programming (ICLP 2007
, 2007
"... Abstract. Declarative programming languages advocate a programming style expressing the properties of problems and their solutions rather than how to compute individual solutions. Depending on the underlying formalism to express such properties, one can distinguish different classes of declarative l ..."
Abstract

Cited by 38 (17 self)
 Add to MetaCart
Abstract. Declarative programming languages advocate a programming style expressing the properties of problems and their solutions rather than how to compute individual solutions. Depending on the underlying formalism to express such properties, one can distinguish different classes of declarative languages, like functional, logic, or constraint programming languages. This paper surveys approaches to combine these different classes into a single programming language. 1
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 36 (18 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
Functional Logic Programming
"... The evolution of programming languages is the stepwise introduction of abstractions hiding the underlying computer hardware and the details of program execution. Assembly languages introduce mnemonic instructions and symbolic ..."
Abstract

Cited by 28 (17 self)
 Add to MetaCart
The evolution of programming languages is the stepwise introduction of abstractions hiding the underlying computer hardware and the details of program execution. Assembly languages introduce mnemonic instructions and symbolic
Declarative Programming with Function Patterns
 In Proceedings of the International Symposium on Logicbased Program Synthesis and Transformation (LOPSTR’05
, 2005
"... Abstract. We propose an extension of functional logic languages that allows the definition of operations with patterns containing other defined operation symbols. Such “function patterns ” have many advantages over traditional constructor patterns. They allow a direct representation of specification ..."
Abstract

Cited by 20 (15 self)
 Add to MetaCart
Abstract. We propose an extension of functional logic languages that allows the definition of operations with patterns containing other defined operation symbols. Such “function patterns ” have many advantages over traditional constructor patterns. They allow a direct representation of specifications as declarative programs, provide better abstractions of patterns as firstclass objects, and support the highlevel programming of queries and transformation of complex structures. Moreover, they avoid known problems that occur in traditional programs using strict equality. We define their semantics via a transformation into standard functional logic programs. Since this transformation might introduce an infinite number of rules, we suggest an implementation that can be easily integrated with existing functional logic programming systems. 1
A Virtual Machine for Functional Logic Computations
 In Proc. of the 16th International Workshop on Implementation and Application of Functional Languages (IFL 2004
, 2005
"... Abstract. We describe the architecture of a virtual machine for executing functional logic programming languages. A distinguishing feature of our machine is that it preserves the operational completeness of nondeterministic programs by concurrently executing a pool of independent computations. Each ..."
Abstract

Cited by 18 (17 self)
 Add to MetaCart
Abstract. We describe the architecture of a virtual machine for executing functional logic programming languages. A distinguishing feature of our machine is that it preserves the operational completeness of nondeterministic programs by concurrently executing a pool of independent computations. Each computation executes only rootneeded sequential narrowing steps. We describe the machine’s architecture and instruction set, and show how to compile overlapping inductively sequential programs to sequences of machine instructions. The machine has been implemented in Java and in Standard ML. 1
Typelevel Computation Using Narrowing in Ωmega
 PLPV 2006
, 2006
"... Ωmega is an experimental system that combines features of both a programming language and a logical reasoning system. Ωmega is a language with an infinite hierarchy of computational levels. Terms at one level are classified (or typed) by terms at the next higher level. In this paper we report on usi ..."
Abstract

Cited by 15 (0 self)
 Add to MetaCart
Ωmega is an experimental system that combines features of both a programming language and a logical reasoning system. Ωmega is a language with an infinite hierarchy of computational levels. Terms at one level are classified (or typed) by terms at the next higher level. In this paper we report on using two different computational mechanisms. At the value level, computation is performed by reduction, and is largely unconstrained. At all higher levels, computation is performed by narrowing.
A Debugging Scheme for Functional Logic Programs
 Proc. WFLP’2001
, 2002
"... We present a generic scheme for the declarative debugging of functional logic programs which is valid for eager as well as lazy programs. In particular we show that the framework extends naturally some previous work and applies to the most modern lazy strategies, such as needed narrowing. First we a ..."
Abstract

Cited by 13 (7 self)
 Add to MetaCart
We present a generic scheme for the declarative debugging of functional logic programs which is valid for eager as well as lazy programs. In particular we show that the framework extends naturally some previous work and applies to the most modern lazy strategies, such as needed narrowing. First we associate to our pro grams a semantics based on a (continuous) immediate consequence operator, which models computed answers. We show that, given the intended specification of a program 7, it is possible to check the correctness of 7 by a single step of Tn. We consider then a more effective methodology which is based on abstract interpretation: by approximating the intended specification of the success set we derive a finitely terminating diagnosis method, which can be used statically and is parametric w.r.t. to the chosen approximation. In order to correct the bugs, we sketch a preliminary deductive approach which uses exampleguided unfolding. We specialize the incorrect rules w.r.t. sets of positive and negative examples which are gathered (bottomup) during the diagnosis process, so that all refutations of nega tive examples and no refutation of positive examples are excluded. Our debugging framework does not require the user to either provide error symptoms in advance or answer diicult questions concerning program correctness. We extend an implementation of our system to the case of needed narrowing and illustrate it through some examples which demonstrate the practicality of our approach.
Set Functions for Functional Logic Programming
, 2009
"... We propose a novel approach to encapsulate nondeterministic computations in functional logic programs. Our approach is based on set functions that return the set of all the results of a corresponding ordinary operation. A characteristic feature of our approach is the complete separation between a u ..."
Abstract

Cited by 12 (12 self)
 Add to MetaCart
We propose a novel approach to encapsulate nondeterministic computations in functional logic programs. Our approach is based on set functions that return the set of all the results of a corresponding ordinary operation. A characteristic feature of our approach is the complete separation between a usuallynondeterministic operation and its possiblynondeterministic arguments. This separation leads to the first provably orderindependent approach to computing the set of values of nondeterministic expressions. The proof is provided within the framework of graph rewriting in constructorbased systems. We propose an abstract implementation of our approach and prove its independence of the order of evaluation. Our approach solves easily and naturally problems mishandled by current implementations of functional logic languages.
Lazy Context Cloning for NonDeterministic Graph Rewriting
 TERMGRAPH 2006
, 2006
"... We define a rewrite strategy for a class of nonconfluent constructorbased term graph rewriting systems and prove its correctness. Our strategy and its extension to narrowing are intended for the implementation of nonstrict nondeterministic functional logic programming languages. Our strategy is ..."
Abstract

Cited by 11 (7 self)
 Add to MetaCart
We define a rewrite strategy for a class of nonconfluent constructorbased term graph rewriting systems and prove its correctness. Our strategy and its extension to narrowing are intended for the implementation of nonstrict nondeterministic functional logic programming languages. Our strategy is based on a graph transformation, called bubbling, that avoids the construction of large contexts of redexes with distinct replacements, an expensive and frequently wasteful operation executed by competitive complete techniques.