Results 1 
8 of
8
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 32 (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 Rewriting Logic for Declarative Programming
, 1996
"... . We propose an approach to declarative programming which integrates the functional and relational paradigms by taking possibly nondeterministic lazy functions as the fundamental notion. Programs in our paradigm are theories in a constructorbased conditional rewriting logic. We present proof calcu ..."
Abstract

Cited by 31 (17 self)
 Add to MetaCart
. We propose an approach to declarative programming which integrates the functional and relational paradigms by taking possibly nondeterministic lazy functions as the fundamental notion. Programs in our paradigm are theories in a constructorbased conditional rewriting logic. We present proof calculi and a model theory for this logic, and we prove the existence of free term models which provide an adequate intended semantics for programs. Moreover, we develop a sound and strongly complete lazy narrowing calculus, which is able to support sharing without the technical overhead of graph rewriting and to identify safe cases for eager variable elimination. Keywords: Declarative programming, nondeterministic functions, constructor based rewriting logic, lazy narrowing. 1 Introduction The interest in combining different declarative programming paradigms, especially functional and logic programming, has grown over the last decade; see [10] for a recent survey. The operational semantics o...
Lazy Narrowing with Parametric Order Sorted Types
 Procs. ALPHOA'97, LNCS 1298
, 1997
"... Recently, a model theoretic semantics for lazy functional programming combining parametric and inclusion polymorphism has been proposed in [2]. The aim of the present work is to provide the previous one with the incorporation of a typed lazy narrowing calculus for goal solving which combines laz ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
Recently, a model theoretic semantics for lazy functional programming combining parametric and inclusion polymorphism has been proposed in [2]. The aim of the present work is to provide the previous one with the incorporation of a typed lazy narrowing calculus for goal solving which combines lazy unification, sharing and type checking at runtime. Furthermore, we state soundness and completeness results of the goal solving procedure w.r.t. the typed rewriting calculi presented in [2] which were proved to be also sound and complete w.r.t. the notion of model in [2]. Thus, all theoretical results described there are also preserved in this framework. 1
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...
A Little User Manual for BabLog System
, 1997
"... In this report we present a little user manual for a new implementation of the BabLog System [1]. Briefly we present the new user interface, and remember with some examples the syntax of the language. 1 Introduction BabLog System is a portable implementation of the language HOBabel whose first rel ..."
Abstract
 Add to MetaCart
In this report we present a little user manual for a new implementation of the BabLog System [1]. Briefly we present the new user interface, and remember with some examples the syntax of the language. 1 Introduction BabLog System is a portable implementation of the language HOBabel whose first release was implemented using BIMProlog ([1]). Now, in order to obtain more portability, and to add new capabilities in the user interface, a new release has been developped using SICStus Prolog version 2.1.8, this or a later version lower than 3.0 is required to run the program actually. The implementation is based on narrowing using the strategy proposed in [5], and in has been developped a similar way as it was described in [1]. This paper is also available in: http://mozart.mat.ucm.es/incoming/comprimidos/BIM/manual.ps BabLog is portable to most UNIX machines running Sicstus Prolog 2.18 or later, but lower than 3.0 (this version changes the System library). It provides: ffl The compiler...
Expressivity of Functionallogic Languages and their Implementation
, 1994
"... Machine for functional languages). A graphbased implementation for functional logic languages can be found in the BAM [KLMR90, KLMR92] to implement BABEL. It is worth to mention that current implementations are highly competitive with Prolog implementations. Moreover, the efficiency of functional ..."
Abstract
 Add to MetaCart
(Show Context)
Machine for functional languages). A graphbased implementation for functional logic languages can be found in the BAM [KLMR90, KLMR92] to implement BABEL. It is worth to mention that current implementations are highly competitive with Prolog implementations. Moreover, the efficiency of functional logic programs is often better than their Prolog equivalents taking advantage of the functional structure of the program (what it is not possible in PROLOG). In particular, one possible optimization is the detection of deterministic computations. Following the fact that functions are nonambiguous, the implementation can detect that a function call can only return a single result. In such this situation backtracking is not needed and no more rules are tried after a success in case of failure. In other words, an implicit cut is inserted before the code for the left hand side of the rule. Some speedups of this technique are reported in [KLMR92, Lo91]. 4 Higher Order Higher order functions ca...