Results 1 - 10
of
24
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 21 (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 proof-theoretical and model-theoretical 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, non-deterministic functions, higher-order 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 non-deterministic lazy functions as the fundamental notion. Programs in our paradigm are theories in a constructor-based conditional rewriting logic. We present proof calcu ..."
Abstract
-
Cited by 21 (11 self)
- Add to MetaCart
. We propose an approach to declarative programming which integrates the functional and relational paradigms by taking possibly non-deterministic lazy functions as the fundamental notion. Programs in our paradigm are theories in a constructor-based 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, non-deterministic 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...
Higher-order narrowing
- PROC. NINTH ANNUAL IEEE SYMPOSIUM ON LOGIC IN COMPUTER SCIENCE
, 1994
"... We introduce several approaches for solving higher-order equational problems by higher-order narrowing and give first completeness results. The results apply to higher-order functional-logic programming languages and to higher-order unification modulo a higher-order equational theory. We lift the ge ..."
Abstract
-
Cited by 20 (8 self)
- Add to MetaCart
We introduce several approaches for solving higher-order equational problems by higher-order narrowing and give first completeness results. The results apply to higher-order functional-logic programming languages and to higher-order unification modulo a higher-order equational theory. We lift the general notion of first-order narrowing to so-called higher-order patterns and argue that the full higher-order case is problematic. Integrating narrowing into unification, called lazy narrowing, can avoid these problems and can be adapted to the full higher-order case. For the second-order case, we develop a version where the needed second-order unification remains decidable. Finally we discuss a method that combines both approaches by using narrowing on higher-order patterns with full higher-order constraints.
Extending Constructive Negation for Partial Functions in Lazy Functional-logic 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 9 (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 up-to-date 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, higher-order patterns, partial applications, non-determinism, logical variables, currying, types, lazyness, domain variables, constraints and finite domain pr ..."
Abstract
-
Cited by 8 (1 self)
- Add to MetaCart
This paper describes a proposal to incorporate finite domain constraints in a functional logic system. The proposal integrates functions, higher-order patterns, partial applications, non-determinism, 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 4 (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 Order-Sorted Types
, 1996
"... . In this paper we present the semantics of a functional logic language with parametric and order-sorted polymorphism. Typed programs consist of a polymorphic signature and a set of constructor-based 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 order-sorted polymorphism. Typed programs consist of a polymorphic signature and a set of constructor-based 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. ALP-HOA'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 run-time. 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 3-valued 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 programming-in-the-large discipline of programming, including data abstraction, reusability support and separate compilation. Nowadays, it is widely accepted that object orie...

