Results 1 
7 of
7
Algebra of logic programming
 International Conference on Logic Programming
, 1999
"... At present, the field of declarative programming is split into two main areas based on different formalisms; namely, functional programming, which is based on lambda calculus, and logic programming, which is based on firstorder logic. There are currently several language proposals for integrating th ..."
Abstract

Cited by 20 (3 self)
 Add to MetaCart
At present, the field of declarative programming is split into two main areas based on different formalisms; namely, functional programming, which is based on lambda calculus, and logic programming, which is based on firstorder logic. There are currently several language proposals for integrating the expressiveness of these two models of computation. In this thesis we work towards an integration of the methodology from the two research areas. To this end, we propose an algebraic approach to reasoning about logic programs, corresponding to the approach taken in functional programming. In the first half of the thesis we develop and discuss a framework which forms the basis for our algebraic analysis and transformation methods. The framework is based on an embedding of definite logic programs into lazy functional programs in Haskell, such that both the declarative and the operational semantics of the logic programs are preserved. In spite of its conciseness and apparent simplicity, the embedding proves to have many interesting properties and it gives rise to an algebraic semantics of logic programming. It also allows us to reason about logic programs in a simple calculational style, using rewriting and the algebraic laws of combinators. In the embedding, the meaning of a logic program arises compositionally from the meaning of its constituent subprograms and the combinators that connect them. In the second half of the thesis we explore applications of the embedding to the algebraic transformation of logic programs. A series of examples covers simple program derivations, where our techniques simplify some of the current techniques. Another set of examples explores applications of the more advanced program development techniques from the Algebra of Programming by Bird and de Moor [18], where we expand the techniques currently available for logic program derivation and optimisation. To my parents, Sandor and Erzsebet. And the end of all our exploring Will be to arrive where we started And know the place for the first time.
Embedding prolog in haskell
 Department of Computer Science, University of Utrecht
, 1999
"... The distinctive merit of the declarative reading of logic programs is the validity ofallthelaws of reasoning supplied by the predicate calculus with equality. Surprisingly many of these laws are still valid for the procedural reading � they can therefore be used safely for algebraic manipulation, pr ..."
Abstract

Cited by 16 (4 self)
 Add to MetaCart
The distinctive merit of the declarative reading of logic programs is the validity ofallthelaws of reasoning supplied by the predicate calculus with equality. Surprisingly many of these laws are still valid for the procedural reading � they can therefore be used safely for algebraic manipulation, program transformation and optimisation of executable logic programs. This paper lists a number of common laws, and proves their validity for the standard (depth rst search) procedural reading of Prolog. They also hold for alternative search strategies, e.g. breadth rst search. Our proofs of the laws are based on the standard algebra of functional programming, after the strategies have been given a rather simple implementation in Haskell. 1
Lazy Rewriting in Logic Programming
, 1992
"... We describe a technique enabling a logic program to perform lazy rewriting. Our technique is based on a transformation of a rewrite system in a set of Horn clauses. We characterize syntactically, in terms of a hierarchical structure of the rewrite rules of an operation, the systems accepted by ou ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
We describe a technique enabling a logic program to perform lazy rewriting. Our technique is based on a transformation of a rewrite system in a set of Horn clauses. We characterize syntactically, in terms of a hierarchical structure of the rewrite rules of an operation, the systems accepted by our transformation and outline a design technique yielding systems with these characteristics. We define our transformation, prove its correctness and other properties, and relate the efficiency of resolution to that of rewriting. Improvements over previous similar results include using a more expressive and more powerful language, generating a more efficient logic program, providing efficient operational completeness, and establishing a tight bound on the length of a resolution as a function of the length of a corresponding reduction sequence. We compare our approach with several related proposals and discuss examples which also show the integration of lazy with eager evaluation and ...
Functional Reading of Logic Programs
"... We propose an embedding of logic programming into lazy functional programming in which each predicate in a Prolog program becomes a Haskell function, in such a way that both the declarative and the procedural reading of the Prolog predicate are preserved. The embedding computes by means of operation ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
We propose an embedding of logic programming into lazy functional programming in which each predicate in a Prolog program becomes a Haskell function, in such a way that both the declarative and the procedural reading of the Prolog predicate are preserved. The embedding computes by means of operations on lazy lists. The state of each step in computation is passed on as a stream of answer substitutions, and all the logic operators of Prolog are implemented by explicit Haskell operators on these streams. The search strategy can be changed by altering the basic types of the embedding and the implementation of these operators. This model results in a perspicuous semantics for logic programs, and serves as a good example of modularisation in functional programming.
An algebraic presentation of predicate logic (extended abstract)
"... Abstract. We present an algebraic theory for a fragment of predicate logic. The fragment has disjunction, existential quantification and equality. It is not an algebraic theory in the classical sense, but rather within a new framework that we call ‘parameterized algebraic theories’. We demonstrate t ..."
Abstract
 Add to MetaCart
Abstract. We present an algebraic theory for a fragment of predicate logic. The fragment has disjunction, existential quantification and equality. It is not an algebraic theory in the classical sense, but rather within a new framework that we call ‘parameterized algebraic theories’. We demonstrate the relevance of this algebraic presentation to computer science by identifying a programming language in which every type carries a model of the algebraic theory. The result is a simple functional logic programming language. We provide a syntaxfree representation theorem which places terms in bijection with sieves, a concept from category theory. We study presentationinvariance for general parameterized algebraic theories by providing a theory of clones. We show that parameterized algebraic theories characterize a class of enriched monads. 1
Towards a Relational Programming Language
, 1995
"... Until recently, the art of deriving computer programs from specification has been performed equationally in a functional calculus. However, it has become evident that a relational calculus affords us a greater degree of expression and flexibility in both specification and proof since a relational ca ..."
Abstract
 Add to MetaCart
Until recently, the art of deriving computer programs from specification has been performed equationally in a functional calculus. However, it has become evident that a relational calculus affords us a greater degree of expression and flexibility in both specification and proof since a relational calculus naturally captures the notions of nondeterminism along with function converses. Unfortunately, no language exists in which we can directly execute relational expressions. Moreover, those candidate languages most likely to support an implementation of a relational calculus suffer from an inelegant or complicated evaluation model. This dissertation examines the suitability of these languages for supporting an implementation of relations and proposes a novel computational strategy for a relational language based on the category theory of relations. CONTENTS i Contents 1 Introduction 1 2 A Calculus of Relations 2 2.1 Basic Relational Operators \Delta \Delta \Delta \Delta \Delta \Del...