Results 1  10
of
24
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...
Higherorder narrowing
 PROC. NINTH ANNUAL IEEE SYMPOSIUM ON LOGIC IN COMPUTER SCIENCE
, 1994
"... We introduce several approaches for solving higherorder equational problems by higherorder narrowing and give first completeness results. The results apply to higherorder functionallogic programming languages and to higherorder unification modulo a higherorder equational theory. We lift the ge ..."
Abstract

Cited by 20 (8 self)
 Add to MetaCart
We introduce several approaches for solving higherorder equational problems by higherorder narrowing and give first completeness results. The results apply to higherorder functionallogic programming languages and to higherorder unification modulo a higherorder equational theory. We lift the general notion of firstorder narrowing to socalled higherorder patterns and argue that the full higherorder case is problematic. Integrating narrowing into unification, called lazy narrowing, can avoid these problems and can be adapted to the full higherorder case. For the secondorder case, we develop a version where the needed secondorder unification remains decidable. Finally we discuss a method that combines both approaches by using narrowing on higherorder patterns with full higherorder constraints.
Extending Constructive Negation for Partial Functions in Lazy Functionallogic Languages
 In Proc. ELP’96
, 1996
"... . In this paper the mechanism of Default Rules for narrowingbased languages proposed in [24] is adapted to lazy narrowing. Every partial definition of a function can be completed with a default rule. In a concrete function call, the default rule is applicable when the normal ones determine that ..."
Abstract

Cited by 12 (2 self)
 Add to MetaCart
. In this paper the mechanism of Default Rules for narrowingbased languages proposed in [24] is adapted to lazy narrowing. Every partial definition of a function can be completed with a default rule. In a concrete function call, the default rule is applicable when the normal ones determine that they cannot compute the value of the call. Furthermore, when the goal has variables the evaluation mechanism provides constraints to the variables to make the default rule applicable. Lazy narrowing semantics are extended with the technique of constructive negation [4, 5, 27]. The main advantage is that the coroutining implementation technique described in [5], which is the basis for an efficient implementation, can be fully formalized in our framework. 1 Introduction The integration of different declarative concepts is an active area of research. The expressive power of new declarative languages can be improved by accounting for a mature and uptodate understanding of previously st...
Solving Combinatorial Problems with a Constraint Functional Logic Language
, 2003
"... This paper describes a proposal to incorporate finite domain constraints in a functional logic system. The proposal integrates functions, higherorder patterns, partial applications, nondeterminism, logical variables, currying, types, lazyness, domain variables, constraints and finite domain pr ..."
Abstract

Cited by 9 (1 self)
 Add to MetaCart
This paper describes a proposal to incorporate finite domain constraints in a functional logic system. The proposal integrates functions, higherorder patterns, partial applications, nondeterminism, logical variables, currying, types, lazyness, domain variables, constraints and finite domain propagators.
Declarative Programming with Real Constraints
, 1997
"... . We present a declarative language  CFLP (R)  which enhances functional logic programming with constraint solving capabilities. CFLP (R) features: polymorphic types, nondeterministic functions, lazy evaluation, higher order (even logic) computations, arithmetical constraints over real numbers a ..."
Abstract

Cited by 5 (0 self)
 Add to MetaCart
. We present a declarative language  CFLP (R)  which enhances functional logic programming with constraint solving capabilities. CFLP (R) features: polymorphic types, nondeterministic functions, lazy evaluation, higher order (even logic) computations, arithmetical constraints over real numbers and disequality constraints over syntactic terms. The features of the language are shown by means of examples, attempting to demonstrate the interest of CFLP (R). The execution mechanism of the language results of a simple combination of lazy narrowing (with a sophisticated strategy, as realized in up to date functional logic languages) and constraint solving. The language has been implemented by means of translation of source programs into a Prolog system supporting real constraint solving. This shows the practicability of the proposal. 1 Introduction Constraints play a central role in present days research, development and application of logic programming (LP) languages (see [15] for a sur...
Algebraic Semantics for Functional Logic Programming with Polymorphic OrderSorted Types
, 1996
"... . In this paper we present the semantics of a functional logic language with parametric and ordersorted polymorphism. Typed programs consist of a polymorphic signature and a set of constructorbased conditional rewriting rules for which we define a semantic calculus. The denotational semantics of t ..."
Abstract

Cited by 4 (2 self)
 Add to MetaCart
. In this paper we present the semantics of a functional logic language with parametric and ordersorted polymorphism. Typed programs consist of a polymorphic signature and a set of constructorbased conditional rewriting rules for which we define a semantic calculus. The denotational semantics of the language is based on Scott domains interpreting constructors and functions by monotonic and continuous mappings, respectively, in every instance of the declared type. We prove initiality results for the free ground term algebra. We also prove that the free term algebra with variables is freely generated in the category of models. The semantic calculus is proved to be sound and complete w.r.t. the denotational semantics. As in logic programming, we define the immediate consequence operator, proving that the Hebrand model is the least model of a program. 1 Introduction Type systems have been traditionally considered in functional languages and incorporated as an extension to logic program...
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
Interfacing a Functional Logic Language with a Finite Domain Solver
 11th International Workshop on Functional and (Constraint) Logic Programming
, 2002
"... Abstract. In this paper, we present a straightforward way for interfacing the functional logic language T OY with a finite domain solver. Since T OY programs are compiled to Sicstus Prolog programs, we use the Sicstus ’ finite domain library to allow the expression of a finite domain problem in T OY ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
Abstract. In this paper, we present a straightforward way for interfacing the functional logic language T OY with a finite domain solver. Since T OY programs are compiled to Sicstus Prolog programs, we use the Sicstus ’ finite domain library to allow the expression of a finite domain problem in T OY. Finite domain T OY programs consist of functional logic T OY rules interfaced with constraint Sicstus clauses. This approach allows us to take advantage of the full functionality of Sicstus Prolog constraints.
Tuple Inheritance: A New Kind of Inheritance for (Constraint) Logic Programming
 Proceedings of the 12th International Conference on Logic Programming
, 1995
"... In this paper, we present a new form of inheritance for (constraint) logic programming. This inheritance is informally defined in the following terms: a module inherits from the other one the consequences that are not covered by itself (with respect to a fixed tuple of arguments). A computable appro ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
In this paper, we present a new form of inheritance for (constraint) logic programming. This inheritance is informally defined in the following terms: a module inherits from the other one the consequences that are not covered by itself (with respect to a fixed tuple of arguments). A computable approximation to this definition is studied, based on finite failure. In particular, we define the declarative semantics (based on Kunen's 3valued semantics) and the operational semantics (based on constructive negation). Several examples, showing the usefulness of the proposal are presented, as well as some hints for its implementation. 1 Introduction From the software engineering point of view it is clear that modular facilities are absolutely important in a programming language. Modularity is a key feature to support a programminginthelarge discipline of programming, including data abstraction, reusability support and separate compilation. Nowadays, it is widely accepted that object orie...