Results 1 -
8 of
8
Pruning in Logic Programming
- University of Melbourne
, 1995
"... The logic programming community has a love--hate relationship with operators for pruning the search space of logic programs such as cut, commit, once, conditionals and variations on these. Pruning operators typically are not declarative, result in incompleteness and/or unsoundness, decrease readabil ..."
Abstract
-
Cited by 9 (0 self)
- Add to MetaCart
The logic programming community has a love--hate relationship with operators for pruning the search space of logic programs such as cut, commit, once, conditionals and variations on these. Pruning operators typically are not declarative, result in incompleteness and/or unsoundness, decrease readability and flexibility of code and make program analysis and transformation more difficult. Despite this, nearly all non-trivial Prolog programs contain cuts, nearly all more recent logic programming languages have similar pruning operators and many languages insist on pruning operators in every clause. In practice, logic programming is less logical than functional programming. Why it this so? Do we really need pruning operators? Can we have sufficiently powerful pruning operators which do not destroy the declarative semantics of programs? How are pruning operators related to logic, modes, functions and lazy evaluation? This paper attempts to answer some of these questions. Keywords: cut, soft ...
Declarative Debugging in Gödel
, 1995
"... Declarative debugging is a method of debugging characterized by locating coding errors in a program using knowledge of the program's intended interpretation alone. A declarative debugger (GraDE) for Godel is presented which handles all of Godel's syntax together with support for abstract data types ..."
Abstract
-
Cited by 8 (0 self)
- Add to MetaCart
Declarative debugging is a method of debugging characterized by locating coding errors in a program using knowledge of the program's intended interpretation alone. A declarative debugger (GraDE) for Godel is presented which handles all of Godel's syntax together with support for abstract data types and coroutining. GraDE builds a computation tree for the program and goal, then works with this tree in a flexible way. The soundness and completeness of the debugger is proved. The performance of two well known approaches, top-down and divide-and-query, are compared on practical programs. GraDE also allows users to control the search method directly thus eliminating an automated search method. The implementation of G r aDE in Godel is discussed and proposals are put forward for further work.
Comparing Negation in Logic Programming and in Prolog
- Meta-logics and Logic Programming
, 1995
"... We compare here two uses of negation -- in logic programming and in Prolog. As in Prolog negation is defined by means of meta-programming facilities and the cut operator, this requires a careful reexamination of the assumptions about the underlying syntax and a precise definition of the computationa ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
We compare here two uses of negation -- in logic programming and in Prolog. As in Prolog negation is defined by means of meta-programming facilities and the cut operator, this requires a careful reexamination of the assumptions about the underlying syntax and a precise definition of the computational processes involved. After taking care of these matters we establish a formal result showing an equivalence in appropriate sense between these two uses of negation. This result allows us to argue about correctness of various known Prolog programs which use negation by reasoning about the corresponding general logic programs. AMS Subject Classification (1991): 68Q40, 68T15. CR Subject Classification (1991): F.3.2., F.4.1, H.3.3, I.2.3. Keywords & Phrases: Meta-variables, negation, logic programming, Prolog. Note: This research was partly supported by the ESPRIT Basic Research Action 6810 (Compulog 2). This paper will appear in K.R. Apt and F. Turini (editors), Meta-programming in Logic P...
Effective Meta-programming in Declarative Languages
, 1998
"... Declarative meta-programming is vital, since it is the most promising means by which programs can be made to reason about other programs. A metaprogram is a program that takes another program, called the object program, as data. A declarative programming language is a programming language based on a ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
Declarative meta-programming is vital, since it is the most promising means by which programs can be made to reason about other programs. A metaprogram is a program that takes another program, called the object program, as data. A declarative programming language is a programming language based on a logic that has a model theory. A meta-program operates on a representation of an object...
Pruning the Search Space of Logic Programs
- In Proc. ELP'96
, 1996
"... . We analyse the use of pruning operators for reducing the search space of logic programming computations. The synthesis of a few key choices arising in the implementation of pruning operators allows us to compare alternative pruning strategies at a suitably abstract level. In this perspective, ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
. We analyse the use of pruning operators for reducing the search space of logic programming computations. The synthesis of a few key choices arising in the implementation of pruning operators allows us to compare alternative pruning strategies at a suitably abstract level. In this perspective, we examine the commit operator featured by the language Godel. 1 Introduction Logic programming languages rely on the idea that programs can be seen as firstorder theories, and computations as deductions from them [6]. The declarative flavour of the resulting programming style derives from the fact that the logic of the program can be specified (i.e., what the program has to compute) without specifying the control of the program (i.e., how the search space is visited). On the other hand, the developments of the idea of programming with logic have outlined several pragmatic reasons why programmers may need to have some control over the search for solutions in a logic programming computati...
Logic + Control revisited: an interpreter for Godel programs
- Advances in Logic Programming Theory
, 1994
"... 1 We develop a simple interpreter for programs of the new logic programming language Godel. The definition provides a clean interface between logical and control components for execution of Godel programs. The construction is given in abstract terms which cover the general logic programming paradig ..."
Abstract
- Add to MetaCart
1 We develop a simple interpreter for programs of the new logic programming language Godel. The definition provides a clean interface between logical and control components for execution of Godel programs. The construction is given in abstract terms which cover the general logic programming paradigm and allow for concurrency. The formalization directly reflects the intuitive procedural understanding of programs, but is formulated at the level of abstract search spaces and proceeds in a modular fashion. This combination of procedural and abstract features, made possible by use of Gurevich 's notion of evolving algebras, provides a tool for mathematical--- machine and proof system independent---description and analysis of design decisions for logic programming languages; it also lays the ground for provably correct stepwise refinements, through a hierarchy of specifications at lower levels, down to implementations. 1 Introduction J.W.Lloyd and P.Hill (1992) have proposed the new gener...
Cs-R9468 1994
"... We compare here two uses of negation -- in logic programming and in Prolog. As in Prolog negation is defined by means of meta-programming facilities and the cut operator, this requires a careful reexamination of the assumptions about the underlying syntax and a precise definition of the computatio ..."
Abstract
- Add to MetaCart
We compare here two uses of negation -- in logic programming and in Prolog. As in Prolog negation is defined by means of meta-programming facilities and the cut operator, this requires a careful reexamination of the assumptions about the underlying syntax and a precise definition of the computational processes involved. After taking care of these matters we establish a formal result showing an equivalence in appropriate sense between these two uses of negation. This result allows us to argue about correctness of various known Prolog programs which use negation by reasoning about the corresponding general logic programs. AMS Subject Classification (1991): 68Q40, 68T15. CR Subject Classification (1991): F.3.2., F.4.1, H.3.3, I.2.3. Keywords & Phrases: Meta-variables, negation, logic programming, Prolog. Note: This research was partly supported by the ESPRIT Basic Research Action 6810 (Compulog 2). This paper will appear in K.R. Apt and F. Turini (editors), Meta-programming in Logic Programming, The MIT Press. 1.
Declarative Semantics for Pruning Operators in Logic Programming
, 1994
"... Stable models, a concept from autoepistemic logic, have been recently proposed to define the semantics of logic programs with negation. A program may have several stable models, and this multiplicity can be exploited to characterize "on't care" nondeterminism, such as that arising from pruning o ..."
Abstract
- Add to MetaCart
Stable models, a concept from autoepistemic logic, have been recently proposed to define the semantics of logic programs with negation. A program may have several stable models, and this multiplicity can be exploited to characterize "on't care" nondeterminism, such as that arising from pruning operators. In the (bottom-up) context of deductive databases, a semantics for the nondeterministic choice construct was given by Sacca and Zaniolo. In this paper, we extend their approach to handle the cut-tike pruning operators in the top-down evaluation context, including the one-of and commit operators.

