A Declarative Alternative to "Assert" in Logic Programming

The problem with the standard means by which Prolog programs are extended — assert — is that the construct is not semantically well-behaved. A more elegant alternative (adopted, for example, in λProlog) is implication with its intuitionistic meaning, but the assumptions so added to a logic program are of limited applicability. We propose a new construct rule, which combines the declarative semantics of implication with some of the power of assert. Operationally, rule provides for the extension of the logic program with results that deductively follow from that program. rule, used in conjunction with higher-order programming techniques such as continuationpassing style, allows the natural and declarative formulation of a whole class of logic programs which previously required assert. Example applications include memoization, partial evaluation combined with reflection, resolution, ML type inference, and explanation-based learning.

[1]  Dale Miller,et al.  A Logical Analysis of Modules in Logic Programming , 1989, J. Log. Program..

[2]  Gopalan Nadathur,et al.  Towards a WAM Model for Lambda-Prolog , 1989, NACLP.

[3]  Michael Kifer,et al.  HiLog: A First-Order Semantics for Higher-Order Logic Programming Constructs , 1989, NACLP.

[4]  Frank Pfenning,et al.  Higher-order and modal logic as a framework for explanation-based generalization , 2004, Machine Learning.

[5]  Scott Dietzen,et al.  A language for higher-order explanation-based learning , 1992 .

[6]  Robin Milner,et al.  Definition of standard ML , 1990 .

[7]  R. Fritzson,et al.  Adding forward chaining and truth maintenance to Prolog , 1989, [1989] Proceedings. The Fifth Conference on Artificial Intelligence Applications.

[8]  John C. Reynolds,et al.  Definitional Interpreters for Higher-Order Programming Languages , 1972, ACM '72.

[9]  Dale A. Miller,et al.  AN OVERVIEW OF PROLOG , 1988 .

[10]  L. Thorne McCarty,et al.  Expressing Database Queries with Intuitionistic Logic , 1989, NACLP.

[11]  Gopalan Nadathur,et al.  Uniform Proofs as a Foundation for Logic Programming , 1991, Ann. Pure Appl. Log..

[12]  Dov M. Gabbay,et al.  N-Prolog: An Extension of Prolog with Hypothetical Implications I , 1984, J. Log. Program..

[13]  David Scott Warren,et al.  A Logic-based Language for Database Updates , 1988, Foundations of Deductive Databases and Logic Programming..

[14]  John Hannan,et al.  Enriching a Meta-Language With Higher-Order Features , 1988 .

[15]  Richard A. O'Keefe,et al.  Efficient Implementation of a Defensible Semantics for Dynamic PROLOG Code , 1987, International Conference on Logic Programming.

[16]  David Scott Warren,et al.  Database Updates in Pure Prolog , 1984, FGCS.

[17]  Leon Sterling,et al.  The Art of Prolog - Advanced Programming Techniques , 1986 .