Results 1 
6 of
6
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 24 (14 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...
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...
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...
Implementation Issues for Functional Logic Programming
"... Machine Code 1) WAMExtensions: ffl KWAM [BCM89](! KLeaf, outermost resolution)  heap contains structures for produced variables (f(e 1 ; : : : ; e n ) = X) ( = closure)  f(e 1 ; : : : ; e n ) is activated (! forcelist) when X is bound to nonvariable term  literals of forcelist ..."
Abstract
 Add to MetaCart
Machine Code 1) WAMExtensions: ffl KWAM [BCM89](! KLeaf, outermost resolution)  heap contains structures for produced variables (f(e 1 ; : : : ; e n ) = X) ( = closure)  f(e 1 ; : : : ; e n ) is activated (! forcelist) when X is bound to nonvariable term  literals of forcelist proved after unification of clause head  3 different dereferencing mechanisms  force metapredicate ffl AWAM [Ha91](! ALF, normalizing innermost basic narrowing) ffl WAM [NJ89] extension for Prolog, including higher order unification 38 2) Extension of reduction machine by choice points+trail ffl IBAM [KLMR90](! innermost Babel, innermost narrowing) graph based ffl LBAM [MKLR90](! Babel, lazy narrowing) graph based ffl JUMP [CL91] (! innermost/lazy narrowing, needed narrowing for lefttoright uniform rules) extension of (Glasgow Haskell)STGM [PS89] ffl CBAM [KLMR92] extension of LBAM by disequality constraint solving ffl PBAM [KMH92] extension of IBAM for independent and...