Results 1  10
of
14
A Higher Order Rewriting Logic for Functional Logic Programming
, 1997
"... According to a well known conception, programs in a declarative programming language can be viewed as theories in some suitable logic, while computations can be viewed as deductions. In our opinion, there is yet no general assent on the logic to be viewed as the foundation of higher order, lazy func ..."
Abstract

Cited by 24 (1 self)
 Add to MetaCart
According to a well known conception, programs in a declarative programming language can be viewed as theories in some suitable logic, while computations can be viewed as deductions. In our opinion, there is yet no general assent on the logic to be viewed as the foundation of higher order, lazy functional logic languages. In this paper, we argue that a specific rewriting logic can play this role, and we justify the adequacy of our proposal by means of prooftheoretical and modeltheoretical results. Moreover, we present a sound and complete lazy narrowing calculus for goal solving, and we discuss a circuit synthesis problem that illustrates the expressiveness of our approach. This example has been tested in an implemented system. KEYWORDS: Functional logic programming, nondeterministic functions, higherorder rewriting logic, lazy narrowing. 1 Introduction The interest in multiparadigm declarative programming has grown over the last two decades, giving rise to different approaches t...
A Deterministic Lazy Narrowing Calculus
 Journal of Symbolic Computation
, 1998
"... In this paper we study the nondeterminism between the inference rules of the lazy narrowing calculus lnc (Middeldorp et al., 1996). We show that all nondeterminism can be removed without losing the important completeness property by restricting the underlying term rewriting systems to leftlinear ..."
Abstract

Cited by 23 (4 self)
 Add to MetaCart
In this paper we study the nondeterminism between the inference rules of the lazy narrowing calculus lnc (Middeldorp et al., 1996). We show that all nondeterminism can be removed without losing the important completeness property by restricting the underlying term rewriting systems to leftlinear con uent constructor systems and interpreting equality as strict equality. For the subclass of orthogonal constructor systems the resulting narrowing calculus is shown to have the nice property that solutions computed by di erent derivations starting from the same goal are incomparable. 1.
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 15 (4 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.
A proof theoretic approach to failure in functional logic programming
"... How to extract negative information from programs is an important issue in logic programming. Here we address the problem for functional logic programs, from a prooftheoretic perspective. The starting point of our work is CRWL (Constructor based ReWriting Logic), a well established theoretical fram ..."
Abstract

Cited by 9 (5 self)
 Add to MetaCart
How to extract negative information from programs is an important issue in logic programming. Here we address the problem for functional logic programs, from a prooftheoretic perspective. The starting point of our work is CRWL (Constructor based ReWriting Logic), a well established theoretical framework for functional logic programming, whose fundamental notion is that of nonstrict nondeterministic function. We present a proof calculus, CRWLF, which is able to deduce negative information from CRWLprograms. In particular, CRWLF is able to prove ‘finite ’ failure of reduction within CRWL.
Functional logic programming with failure: A setoriented view
 In Proc. LPAR’01
, 2001
"... Abstract. Constructive failure has been proposed recently as a programming construct useful for functional logic programming, playing a role similar to that of constructive negation in logic programming. On the other hand, almost any functional logic program requires the use of some kind of equality ..."
Abstract

Cited by 7 (4 self)
 Add to MetaCart
Abstract. Constructive failure has been proposed recently as a programming construct useful for functional logic programming, playing a role similar to that of constructive negation in logic programming. On the other hand, almost any functional logic program requires the use of some kind of equality test between expressions. We face in this work in a rigorous way the interaction of failure and equality (even for nonground expressions), which is a non trivial issue, requiring in particular the use of disequality conditions at the level of the operational mechanism of constructive failure. As an interesting side product, we develop a novel treatment of equality and disequality in functional logic programming, by giving them a functional status, which is better suited for practice than previous proposals.
Narrowing Failure in Functional Logic Programming
 Proc. 6th Int. Symp. on Functional and Logic Programming (FLOPS’2002), Springer LNCS 2441
, 2002
"... Abstract. Negation as failure is an important language feature within the logic programming paradigm. The natural notion generalizing negation as failure in a functional logic setting is that of finite failure of reduction. In previous works we have shown the interest of using such programming const ..."
Abstract

Cited by 4 (2 self)
 Add to MetaCart
Abstract. Negation as failure is an important language feature within the logic programming paradigm. The natural notion generalizing negation as failure in a functional logic setting is that of finite failure of reduction. In previous works we have shown the interest of using such programming construct when writing functional logic programs, and we have given a logical status to failure by means of proof calculi designed to deduce failures from programs. In this paper we address the problem of the operational mechanism for the execution of functional logic programs using failure. Our main contribution is the proposal of a narrowing relation able to deal with failures, which is constructive in the usual sense of the term in the context of negation, that is, narrowing is able to find substitutions for variables even in presence of failures. As main technical results, we prove correctness and completeness of the narrowing relation with respect to the prooftheoretic semantics. 1
Improving the Efficiency of NonDeterministic Computations
 Upaya Penyysybab Kebijakan Pemerintahan Desa Berbasis Masyarakat Adat, Wisma Lembah Nyiur
, 2001
"... Abstract. Nondeterministic computations greatly enhance the expressive power of functional logic programs, but are often computationally expensive. We analyze two programming techniques that improve the time and memory efficiency of some nondeterministic computations. These techniques rely on the ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
Abstract. Nondeterministic computations greatly enhance the expressive power of functional logic programs, but are often computationally expensive. We analyze two programming techniques that improve the time and memory efficiency of some nondeterministic computations. These techniques rely on the introduction of a new symbol into the signature of a program. In one technique this symbol is a polymorphic defined operation, in the other an overloaded constructor. Our programming techniques may save execution time by reducing the number of steps of a computation, as well as memory occupation, by reducing the number of terms constructed by a computation. We show how to apply our techniques using some examples, and informally reason about their effects. 1
I.: Verification of CRWL Programs with Rewriting Logic
"... Abstract: We present a novel approach to the verification of functionallogic programs. For our verification purposes, equational reasoning is not valid due to the presence of nondeterministic and partial functions. Our approach transforms functionallogic programs into Maude theories and then uses ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
Abstract: We present a novel approach to the verification of functionallogic programs. For our verification purposes, equational reasoning is not valid due to the presence of nondeterministic and partial functions. Our approach transforms functionallogic programs into Maude theories and then uses the Rewriting Logic logical framework to verify properties of the transformed programs. We propose an inductive proving method based on the length of the computation on the Rewriting Logic framework to cope with the nondeterministic and nonterminating aspects of the programs. We illustrate the application of the method on various examples, where we analyze the sequence of steps to be performed by the proof in order to get expertise for the automatization of the process. Then, since the proposed transformation process is also amenable of automatization, we will obtain a tool for proving properties of CRWL programs. Another advantage of our methodology, that distinguish it from other approaches, is that it does not confuse the original functionallogic program with the subjects we want to talk about in the properties, but it allows the equational definition of observations on top of the transformed programs which simplifies the obtained proofs.
Extra Variables Can Be Eliminated from Functional Logic Programs. ENTCS (this volume
"... Programs in modern functional logic languages are rewrite systems following the constructor discipline but where confluence and termination are not required, thus defining possibly non strict and nondeterministic functions. While in practice and in some theoretical papers rewrite rules can contain ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
Programs in modern functional logic languages are rewrite systems following the constructor discipline but where confluence and termination are not required, thus defining possibly non strict and nondeterministic functions. While in practice and in some theoretical papers rewrite rules can contain extra variables in right hand sides, some other works and techniques do not consider such possibility. We address in this paper the question of whether extra variables can be eliminated in such kind of functional logic programs, proving the soundness and completeness of an easy solution that takes advantage of the possibility of nonconfluence. Although the focus of the paper is mainly theoretical, we give some first steps towards the practical usability of the technique.
FunctionalLogic Parsers In TOY
, 1998
"... Parsing has been a traditional workbench for showing the virtues of declarative programming. Both logic and functional programming claim the ability of writing parsers in a natural and concise way. We address here the task from a functionallogic perspective. By modelling parsers as nondeterministi ..."
Abstract
 Add to MetaCart
Parsing has been a traditional workbench for showing the virtues of declarative programming. Both logic and functional programming claim the ability of writing parsers in a natural and concise way. We address here the task from a functionallogic perspective. By modelling parsers as nondeterministic functions we achieve a very natural manner of building parsers, which combines the nicest properties of the functional and logic approaches. In particular, we are able to easily define within our framework parsers in a style very close to the `monadic parsers' of functional programming, but without any syntactic overhead. In a different direction we show that, if the functionallogic setting permits higherorder patterns while defining functions, parsers can be freely manipulated as data. This allows programming useful metalevel analysis or transformations, like discovering if the grammar corresponding to a given parser is LL(1). Finally, we sketch the potential application to parsing of f...