MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

  Chapter 11 Towards Full Prolog

Download:
Download as a PDF | Download as a PS
unknown authors
http://www.cwi.nl/~apt/constraints/ch11.ps
Add To MetaCart

Abstract:

So far we have dealt only with a small fragment of Prolog which is hardly adequate for programming. In this chapter we discuss various other features of Prolog and explain their meaning and use. Some of these features have also been studied from the program correctness point of view. This study has always taken place by considering appropriate extensions of logic programming. The exposition of these developments and of the application of the resulting theories to verification of Prolog programs would require another hundred or so pages and thus would make this book inappropriate for a one semester course. Moreover, the correctness aspects of these Prolog programs have not been studied in a systematic fashion. Therefore we limit ourselves to providing necessary pointers to the literature. We begin our presentation by discussing in the next section the cut operator. In Section 11.2 we explain its use by presenting programs that deal with sets. Next, in Section 11.3 we discuss Prolog facilities that allow us to collect all solutions to a query. In Section 11.4, we introduce an interesting feature of Prolog--- metavariables and explain their use. We also explain there how these two features---cut and meta-variables--- allow us to define some other control facilities in Prolog. In Section 11.5 we introduce negation in Prolog and illustrate its use by means of simple programs. Negation is an important facility because it allows us to write simpler and shorter programs and because it provides a readily available computational interpretation of non-monotonic reasoning, an important branch of common-sense reasoning, an area of artificial intelligence. We illustrate these uses of negation in Section 11.6, where we present a number of programs that deal with directed graphs and in Section 11.7, where we explain the modelling of non-monotonic reasoning. In the subsequent two sections we study various meta-level built-ins. These are built-ins that allow us to access, compare or modify the syntactic entities out of which the programs are built. In particular, in Section 11.8 we deal with the builtins that allow us to inspect, compare and decompose terms and in Section 11.9 we

Citations

1224 Some philosophical problems from the standpoint of arti cial intelligence – McCarthy, Hayes - 1969
1126 The Stable Model Semantics for Logic Programming – Gelfond, Lifschitz - 1988
787 Negation as Failure – Clark - 1978
557 Towards a theory of Declarative Knowledge – Apt, Blair, et al. - 1988
556 The Art of Prolog – Sterling, Shapiro - 1986
332 Logic for problem solving – Kowalski - 1974
230 Nonmonotonic logic and temporal projection – Hanks, McDermott - 1987
218 Logic programming and negation: A survey – Apt, Bol - 1994
200 Unfounded sets and well-founded semantics for general logic programs – Gelder, Ross, et al. - 1991
164 Acyclic programs – Apt, Bezem - 1991
119 Reasoning about termination of pure PROLOG programs – Apt, Pedreschi - 1993
118 Negation as failure using tight derivations for general logic programs – Gelder - 1986
100 Amalgamating language and metalanguage in logic programming – Bowen, Kowalski - 1982
94 Signed data dependencies in logic programs – Kunen - 1989
60 Analysis of meta-programs – Hill, Lloyd - 1989
56 A Mathematical Definition of Full Prolog – Borger, Rosenzweig - 1994
53 Denotational and Operational Semantics for Prolog – Debray, Mishra - 1988
52 Stepwise Development of Operational and Denotational Semantics for PROLOG – Jones, Mycroft - 1984
32 K.: A New Definition of SLDNF-Resolution – Apt, Doets - 1994
27 Prolog: The Standard – Deransart, Ed-Dbali, et al. - 1996
27 Schreye. Why untyped non-ground meta-programming is not (much of) a problem – Martens, De - 1995
24 Proving termination properties of Prolog programs: a semantic approach – Baudinet - 1992
22 A Kripke-Kleene semantics for general logic programs – Fitting - 1985
21 Negation-as-failure as an approach to the Hanks and McDermott problem – Evans - 1989
18 Operational and Denotational Semantics of Prolog – Arbab, Berry - 1987
18 Two semantics for definite meta-programs, using the non-ground representation – Martens, Schreye - 1995
17 A new SLDNF-tree – Martelli, Tricomi - 1992
14 Program verification and prolog – Apt - 1995
12 A methodology for proving termination of logic programs – Wang, Shyamasundar - 1994
9 User's guide to DECsystem-10 Prolog – Pereira, Pereira, et al. - 1978
9 Verification of Metainterpreters – Pedreschi, Ruggieri - 1997
8 A formalization of metaprogramming for real – Levi, Ramundo - 1993
7 An operational formal definition of Prolog – Deransart, Ferrand - 1987
6 A declarative approach for firstorder built-in’s – Apt, Marchiori, et al. - 1994
5 Correctness of the vanilla meta-interpreter and ambivalent syntax – Kalsbeek - 1995
3 Meta-variables in logic programming, or in praise of ambivalent syntax – APT, BEN-ELIYAHU - 1996
3 A perfect logic for reasoning about action – Elkan - 1989
3 A prescribed cut for Prolog that ensures soundness – Lilly, Bryant - 1992
2 Comparing negation in logic programming and in Prolog – Apt, Teusink - 1995