Results 1  10
of
67
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 356 (59 self)
 Add to MetaCart
(Show Context)
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
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 44 (20 self)
 Add to MetaCart
(Show Context)
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
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 26 (19 self)
 Add to MetaCart
(Show Context)
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
Encapsulating NonDeterminism in Functional Logic Computations
 JOURNAL OF FUNCTIONAL AND LOGIC PROGRAMMING
, 2004
"... ..."
On the tighter integration of functional and logic programming
, 2007
"... Abstract. The integration of functional and logic programming is a well developed field of research. We discuss that the integration could be improved significantly in two separate aspects: sharing computations across nondeterministic branching and the declarative encapsulation of logic search. We ..."
Abstract

Cited by 23 (3 self)
 Add to MetaCart
(Show Context)
Abstract. The integration of functional and logic programming is a well developed field of research. We discuss that the integration could be improved significantly in two separate aspects: sharing computations across nondeterministic branching and the declarative encapsulation of logic search. We then present a formal approach which shows how these improvements can be realized and prove the soundness of our approach. 1
A Semantics for Tracing Declarative MultiParadigm Programs
 In Proceedings of the 6th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming (PPDP’04
, 2004
"... We introduce the theoretical basis for tracing lazy functional logic computations in a declarative multiparadigm language like Curry. Tracing computations is a difficult task due to the subtleties of the underlying operational semantics which combines laziness and nondeterminism. In this work, we ..."
Abstract

Cited by 22 (13 self)
 Add to MetaCart
(Show Context)
We introduce the theoretical basis for tracing lazy functional logic computations in a declarative multiparadigm language like Curry. Tracing computations is a difficult task due to the subtleties of the underlying operational semantics which combines laziness and nondeterminism. In this work, we define an instrumented operational semantics that generates not only the computed values and bindings but also an appropriate data structure—a sort of redex trail—which can be used to trace computations at an adequate level of abstraction. In contrast to previous approaches, which rely solely on a transformation to instrument source programs, the formal definition of a tracing semantics improves the understanding of the tracing process. Furthermore, it allows us to formally prove the correctness of the computed trail. A prototype implementation of a tracer based on this semantics demonstrates the usefulness of our approach.
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 20 (17 self)
 Add to MetaCart
(Show Context)
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
KiCS2: A New Compiler from Curry to Haskell
 IN PROC. OF THE 20TH INTERNATIONAL WORKSHOP ON FUNCTIONAL AND (CONSTRAINT) LOGIC PROGRAMMING (WFLP 2011
, 2011
"... In this paper we present our first steps towards a new system to compile functional logic programs of the source language Curry into purely functional Haskell programs. Our implementation is based on the idea to represent nondeterministic results as values of the data types corresponding to the res ..."
Abstract

Cited by 19 (11 self)
 Add to MetaCart
(Show Context)
In this paper we present our first steps towards a new system to compile functional logic programs of the source language Curry into purely functional Haskell programs. Our implementation is based on the idea to represent nondeterministic results as values of the data types corresponding to the results. This enables the application of various search strategies to extract values from the search space. We show by several benchmarks that our implementation can compete with or outperform other existing implementations of Curry.
A simple rewrite notion for calltime choice semantics
 In Proc. Principles and Practice of Declarative Programming, ACM Press
, 2007
"... Nonconfluent and nonterminating rewrite systems are interesting from the point of view of programming. In particular, existing functional logic languages use such kind of rewrite systems to define possibly nonstrict nondeterministic functions. The semantics adopted for nondeterminism is callti ..."
Abstract

Cited by 19 (5 self)
 Add to MetaCart
Nonconfluent and nonterminating rewrite systems are interesting from the point of view of programming. In particular, existing functional logic languages use such kind of rewrite systems to define possibly nonstrict nondeterministic functions. The semantics adopted for nondeterminism is calltime choice, whose combination with nonstrictness is not a trivial issue that has been addressed from a semantic point of view in the Constructorbased Rewriting Logic (CRWL) framework. We investigate here how to express calltime choice and nonstrict semantics from a point of view closer to classical rewriting. The proposed notion of rewriting uses an explicit representation for sharing with letconstructions and is proved to be equivalent to the CRWL approach. Moreover, we relate this letrewriting relation (and hence CRWL) with ordinary rewriting, providing in particular soundness and completeness of letrewriting with respect to rewriting for a class of programs which are confluent in a certain semantic sense.
Term rewriting for access control
 In Proc. DBSec’2006, volume 4127 of LNCS
, 2006
"... Abstract. We demonstrate how access control models and policies can be represented by using term rewriting systems, and how rewriting may be used for evaluating access requests and for proving properties of an access control policy. We focus on two kinds of access control models: discretionary model ..."
Abstract

Cited by 15 (4 self)
 Add to MetaCart
(Show Context)
Abstract. We demonstrate how access control models and policies can be represented by using term rewriting systems, and how rewriting may be used for evaluating access requests and for proving properties of an access control policy. We focus on two kinds of access control models: discretionary models, based on access control lists (ACLs), and rolebased access control (RBAC) models. For RBAC models, we show that we can specify several variants, including models with role hierarchies, and constraints and support for security administrator review querying. 1