[comp.lang.prolog] BibTeX format references to implementing assert and retract

jashley@copper.ucs.indiana.edu (J. Michael Ashley) (09/22/90)

I asked several days ago for references to extending the WAM to accomodate
assert and retract.  A few people replied, and there seemed to be general
interest in the results.  So this is a post of the few references I 
received/located in bibtex format.  An abstract for each reference is
included.

I'm still plenty open to more references.

Cheers.
Mike Ashley
jashley@copper.ucs.indiana.edu

---------------------------

@inproceedings{jwmills:ad,
	author    = {Jonathan Wayne Mills and Kevin A. Buettner},
	title     = {Assertive Demons},
	booktitle = {Logic Programming: Proceedings of the Fifth International
                     Conference and Symposium},
	year      = 1988,
	editor    = {Robert A. Kowalski and Keeneth A. Bowen},
	pages     = {1402--1414},
	publisher = {The MIT Press},

	abstract  = {If the Prolog built-in {\em assert} is implemented in its
		most general form it requires a full compiler and retention of
		the compile-time environment during execution.  Many programs
		do not need this much generality because they assert clauses
		- often ground unit clauses - for only one predicate whose
		functor, arity, arguments' types and possibly even the
		arguments' values are known at compile time.  We categorize
		a family of these {\em simple clauses} in this paper.
		Programs that assert simple clauses compile a clause template
		for each predicate and generate a clause-specific routine
		called an {\em assertive demon}.  At run time the demon copies
		and fills in the template for each clause asserted.  Assertive
		demons either replace the full compiler at run time, or
		limit its use to clauses too complex for the demon to handle.}
}


% This reference suggested by pereira@research.att.com
% It's very good.

@inproceedings{tglindholm:eidsdpc,
	author    = {Timothy G. Lindholm and Richard A. O'Keefe},
	title	  = {Efficient Implementation of a Defensible Semantics for
		     Dynamic Prolog Code},
	booktitle = {Logic Programming: Proceedings of the Fourth International
		     Conference and Symposium},
	year      = 1987,
	editor    = {Jean-Louis Lassez},
	pages     = {21--39},
	publisher = {The MIT Press},

	abstract  = {This paper argues that a coherent semantics for predicates
		manipulating the Prolog database is required if Prolog
		programs are to be easily understood and easily ported.  It
		shows how this can be attained, without sacrificing time
		and efficiency, by extending any WAM-based Prolog 
		implementation.  Statistics are given for local stack
		performance of a commercial Prolog system based on the
		extended WAM architecture, and issues in the contruction of
		a Prolog system based on the extended WAM are discussed.}
}


% This reference suggested by naim@uswest.com
% I'm not interested in indexing right now, but this paper might come in
% handy in the future.

@inproceedings{bdemoen:ipc,
	author    = {Bart Demoen and Andr\'{e} Mari\"{e}n and Alain
		     Callebaut},
	title     = {Indexing Prolog Clauses},
	booktitle = {Logic Programming: Proceedings of the North American
		     Conference 1989},
	year      = 1989,
	editor    = {Ewing L. Lusk and Ross A. Overbeek},
	pages     = {1001--1012},
	publisher = {The MIT Press},

	abstract  = {Indexing of Prolog clauses is an optimization technique
		whose aim is to reduce the number of clauses to be
		tried and avoid the pushing of a choicepoint.  We describe
		here in detail how indexing is implemented in a commercial
		Prolog system for dynamic code.  In BIM_Prolog, dynamic code
		is emulated WAM code, so we assume the reader is familiar
		with the WAM.  The description of indexing for dynamic code
		is thus in terms of generated intermediate code and the
		implementation of this code is in C.  We point out the
		benefits of this approach and give some figures to support
		the choices made.}
}


% This paper is hard to read.  I haven't tried to understand it, since I 
% like the assertive demons proposed by Mills and Buettner, referenced above.

@inproceedings{chenxi:ipcd,
	author    = {Zhang Chenxi and Tzu Yungui and Li Liangliang and
		     Hu Yunfa},
	title     = {An Approach to the Implementation of Prolog Code
		     Database and Source Database in Compiler-based Systems},
	booktitle = {Proceedings of the 1987 Symposium on Logic Programming},
	year      = 1987,
	pages     = {398--405},
	publisher = {Computer Society Press of the IEEE},

	abstract  = {Due to the existence of the built-in predicates that
		that operate on databases, such as assert and retract, in
		the PROLOG language, the management of PROLOG databases is
		an important but difficult problem in a compiler-based
		system.  There are conceptually two PROLOG databases in such
		a system: the Code DataBase (CDB), and the Source DataBase
		(SDB).  In this paper, an approach to the implementation of
		the CDB and SDB in WAM-based systems is described, with
		emphasis being put on the implementation of the CDB.  The
		method for the reclamation of retracted clauses used in
		our approach is the reference counting method.  At the end
		of the paper, we briefly discuss how the predicates that
		operate on databases can be implemented easily with supports
		from the CDB and the SDB.  Though the approach is mainly for
		use in GKD-PROLOG-2 which is a compiler-based system, it can
		be applied to other WAM-based systems with minor modification.}
}