Academia.edu no longer supports Internet Explorer.
To browse Academia.edu and the wider internet faster and more securely, please take a few seconds to upgrade your browser.
1989, Proceedings of the fourth international conference on Functional programming languages and computer architecture - FPCA '89
This paper addresses the declarative and computational issues of incorporating set abstraction into functional and logic programming languages. The main results are the following: (i) Relative set abstraction can combine a lazy higher-order functional programming with not only first-order Horn logic, but also with a useful subset of higher-order Horn logic. Sets, as well as functions, can be treated as first-class objects. (ii) Angelic powerdomains provide the semantic foundation. These are compatible with lazy evaluation and are well-defined over elements from even non-flat (higher-order) domains. (iii) A new computation rule, more efficient than the parallel-outermost rule, is developed and shown to be a correct computation rule. (A simple left-most rule is not adequate for this language.) (iv) Optimizations incorporating ideas from narrowing and resolution greatly improve the efficiency of the interpreter, while maintaining correctness.
1989
This dissertation addresses the problem of incorporating into lazy higher-order functional programming the relational programming capability of Horn logic. The language design is based on set abstraction, a feature whose denotational semantics has until now not been rigorously defined. A novel approach is taken in constructing an operational semantics directly from the denotational description. The main results of this dissertation are: (i) Relative set abstraction can combine lazy higher-order functional programming with not only first-order Horn logic, but also with a useful subset of higherorder Horn logic. Sets, as well as functions, can be treated as first-class objects. (ii) Angelic powerdomains provide the semantic foundation for relative set abstraction. (iii) The computation rule appropriate for this language is a modified paralleloutermost, rather than the more familiar left-most rule. (iv) Optimizations incorporating ideas from narrowing and resolution greatly improve the...
Journal of Functional Programming, 1992
The integration of functional and logic programming languages has been a topic of great interest in the last decade. Many proposals have been made, yet none is completely satisfactory especially in the context of higher order functions and lazy evaluation. This paper addresses these shortcomings via a new approach:domain theoryas a common basis for functional and logic programming. Our integrated language remains essentially within the functional paradigm. The logic programming capability is provided byset abstraction(via Zermelo-Frankel set notation), using the Herbrand universe as a set abstraction generator, but for efficiency reasons our proposed evaluation procedure treats this generator's enumeration parameter as a logical variable. The language is defined in terms of (computable) domain-theoretic constructions and primitives, using the lower (or angelic) powerdomain to model the set abstraction facility. The result is a simple, elegant and purely declarative language that...
1987
\Ve propose a new approach to the integration of functional and logic languages, based on a theory of unification and set-valued functions. A set-valued function maps a tuple of input sets into an output set. We describe a language called Setlog which illustrates this approach, and give its model-theoretic, fixed-point, and operational semantics. The model-theoretic semantics and fixed-point semantics resemble that of Horn logic. The operational semantics uses outermost reduction (for set-valued functions) and unification (for terms). '\Ve establish the correctness of the operational semantics through soundness and completeness proofs. ._. .. t This research is sup"porte•d by a grant DCR-'8603609 froin the Na-tiOiial Science Faun~ dation and. contract
Lecture Notes in Computer Science, 1987
ever, existing approaches treat sets as lists for the sake of efficiency~ and thereby sacrifice a simple declarative semantics. In this paper, we present a novel language based on sets and equations, where sets are treated as sets, consistent with their semantics. The language is called SEL, for Set-Equation Language. Equations are assumed to define a confluent rewriting system when oriented left to right. Sets are defined in terms of their subsets; these rules define a nonconfiuent rewriting system when oriented left to right. We show examples of programs in this language, and provide an operational Semantics for such programs. Programs are executed by innermost reduction, which may be nondeterministic or deterministic. Nondeterministic reduction is used when one of the elements of a set is desired. Deterministic reduction is used to simplify a term via an equation or to obtain all the elements of a set. The correctness of the operational semantics is also established.
Lecture Notes in Computer Science, 1997
Experiences with functional programming revealed that higher-order concept leads to powerful and succinct programming. Functional logic programming, an approach to integrate functional and logic programming, would naturally be expected to incorporate the notion of higher-order-ness. Little has been investigated how to incorporate higher-order-ness in functional logic programming.
Artificial Intelligence …, 2003
2007
The integration of functional and logic programming is a well developed field of research. We discuss that the integration could be improved significantly in two separate aspects: sharing computations across non-deterministic branching and the declarative encapsulation of logic search. We then present a formal approach which shows how these improvements can be realized and prove the soundness of our approach.
Journal of Computer and System Sciences, 1991
RASLAN, 2007
In the paper we introduce an interpreter of the Transperent Intensional Logic (TIL), namely the TIL-Script language, its design and implementation. TIL is a brainchild of the Czech logician Pavel Tichý and in many ways a revolutionary logical system. The work on the TIL-Script project is being pursued by the team of undergraduate students. The paper we provide is a brief review of the TIL-Script syntax.
2000
The possibility of translating logic programs into functional ones has long been a subject of investigation. Common to the many approaches is that the original logic program, in order to be translated, needs to be well-moded and this has led to the common understanding that these programs can be considered to be the "functional part" of logic programs. As a consequence of this it has become widely accepted that "complex" logical variables, the possibility of a dynamic selection rule, and general properties of non-well-moded programs are exclusive features of logic programs. This is not quite true, as some of these features are naturally found in lazy functional languages. We readdress the old question of what features are exclusive to the logic programming paradigm by defining a simple translation applicable to a wider range of logic programs, and demonstrate that the current circumscription is unreasonably restrictive.
Science of Computer Programming, 1995
In this paper we present a new programming technique for lazy functional programming languages. The technique is embedded in a programming methodology which is based on divide and conquer: the division of problems into subproblems. Such a division will be represented by a call graph.
We develop an e ective model for higher-order functional-logic programming by re ning higher-order narrowing calculi. The re nements reduce the high degree of non-determinism in narrowing calculi, utilizing properties of functional(-logic) programs. These include convergent and left-linear rewrite rules. All re nements can be combined to a narrowing strategy which generalizes call-by-need as in functional programming. Furthermore, we consider conditional rewrite rules which are often convenient for programming applications.
Theoretical Computer Science, 1989
A denotationaf semantics for the A-calculus is described. The semantics is cotinuationbased, and so reflects the order in which expressions are evaluated. It provides a means by which lazy functional languages can be better understood.
2000
We present a higher-order functional/logic language, ROSE. The programs of ROSE are made up of conditional constructor based term rewriting systems. The conditions in the rules can optionally be committing. The operational semantics of the language is conditional narrowing, augmented to deal with committing conditions. The major innovation of the language is the use of committing guards and backtracking to
Lecture Notes in Computer Science, 1995
Using higher-order functions is standard practice in functional programming, but most functional logic programming languages that have been described in the literature lack this feature. The natural way to deal with higher-order functions in the framework of ( rst-order) term rewriting is through so-called applicative term rewriting systems. In this paper we argue that existing calculi for lazy narrowing either do not apply to applicative systems or handle applicative terms very ineciently. We propose a new lazy narrowing calculus for applicative term rewriting systems and prove its completeness.
We present a high-level transformation scheme to translate lazy functional logic programs into pure Haskell programs. This transformation is based on a recent proposal to efficiently implement lazy non-deterministic computations in Haskell into monadic style. We build on this work and define a systematic method to transform lazy functional logic programs into monadic programs with explicit sharing. This results in a transformation scheme which produces high-level and flexible target code. For instance, the target code is parametric w.r.t. the concrete evaluation monad. Thus, different monad instances could, for example, define different search strategies (e.g., depth-first, breadth-first, parallel). We formally describe the basic compilation scheme and some useful extensions.
In this paper we propose a new generic scheme CF LP (D), intended as a logical and semantic framework for lazy Constraint Functional Logic Programming over a parametrically given constraint domain D. As in the case of the well known CLP (D) scheme for Constraint Logic Programming, D is assumed to provide domain specific data values and constraints. CF LP (D) programs are presented as sets of constrained rewrite rules that define the behaviour of possibly higher order and/or non-deterministic lazy functions over D. As the main novelty w.r.t. previous related work, we present a Constraint Rewriting Logic CRW L(D) which provides a declarative semantics for CF LP (D) programs. This logic relies on a new formalization of constraint domains and program interpretations, which allows a flexible combination of domain specific data values and user defined data constructors, as well as a functional view of constraints.
Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages - POPL '92, 1992
Although there is considerable experience in using languages that combine the functional and logic programming paradigms, the problem of providing an adequate semantic foundation for such languages has remained open. In an earlier paper, we solved this problem for rst-order languages by reducing the problem to that of solving simultaneous xpoint equations involving closure operators over a Scott domain and showing that the resulting semantics was fully abstract with respect to the operational semantics 3]. These results showed that the rst-order fragment could be viewed as a language of incremental de nition of data structures through constraint intersection. The problem for higher-order languages remained open, in part because higher-order functions can interact with logic variables in complicated ways to give rise to behavior reminiscent of own variables in Algol-60. We solve this problem in this paper. We show that in the presence of logic variables, higher-order functions may be modeled extensionally as closure operators on function graphs ordered in a way reminiscent of the ordering on extensible records in studies of inheritance 1]. We then extend the equation solving semantics of the rst-order subset to the full language, and prove the usual soundness and adequacy theorems for this semantics. These results show that a higher-order functional language with logic variables can be viewed as a language of incremental de nition of functions.
Lecture Notes in Computer Science, 2006
Program slicing is a well-known technique that has been widely used for debugging in the context of imperative programming.
Loading Preview
Sorry, preview is currently unavailable. You can download the paper by clicking the button above.