From: warren@sbcs.sunysb.edu (David Scott Warren)
Subject: XOLDT System Available
Organization: State University of New York at Stony Brook
Date: Tue, 7 Apr 1992 15:37:00 GMT

I am announcing the XOLDT meta-interpretation system, an
implementation of a tabling (or memoing) meta-interpreter for Prolog
(Cf. Earley Deduction, Extension Tables, OLDT, QSQR, Magic
Templates, etc.). It is freely available by anonymous ftp from
<sbcs.sunysb.edu> (130.245.1.15). (See instructions at the end of
this message.) It is written in Quintus Prolog(TM) and allows
integration of regular Prolog (compiled) execution with the tabling
execution. 

I would suggest that anyone who is interested in goal-directed Horn
clause evaluation strategies that are more finite than SLD will be
interested in this system. With this system, the programmer declares
certain predicates as ``table-d'' and then a table of calls and
answers for such predicates is maintained. With this mechanism one
can guarantee finite (terminating) evaluation of all pure Datalog
programs, indeed all programs with the so-called bounded-term
property. E.g., any definition of transitive closure (in Datalog) is
terminating, and left-recursive DCG's can be correctly handled. 

Available with the XOLDT system are several programs that show how it
can be used. The simplest example is:

	1. A left-recursive grammar: the `standard' definition of
	Expressions. 

The XOLDT system also provides a facility whereby the programmer can
program it to handle constraints. (This is a meta-interpretation
facility and thus the constraint manipulation may be rather
inefficient.) This constraint facility can be used in interesting
ways, and several examples of its use are available. In particular:

	2. An implementation of constructive negation, modified from one 
	posted to the net by Mark Johnson.

	3. An implementation of XOLDTNF, a goal-directed procedure for
	(partially) computing the well-founded semantics of general logic
	programs. It is complete and terminating for nonfloundering Datalog
	programs, assuming all recursive loops include a tabled predicate. 

	4. A simple example of using XOLDT for computing answers to
	``possiblistic programs''. The example can easily be modified to
	compute answers to probablistic or fuzzy programs.

This is an EXPERIMENTAL system. You may take it and use it at your
own risk. No warranties are given or implied. It is implemented as
a meta-interpreter on top of (Quintus) Prolog, and therefore carries
significant overhead. On the other hand, efficiency was not entirely
ignored in its implementation (the tables are indexed, and the
underlying clause indexing of Prolog was used when possible.) 

I would appreciate any feedback (at <warren@cs.sunysb.edu>)
concerning the system and its use. I will try to be responsive to
any comments/requests/bugs/etc. 

	David S. Warren
	Computer Science Department
	SUNY Stony Brook
	Stony Brook, NY 11794-4400 USA
	516-632-8454
	<warren@cs.sunysb.edu>

HOW TO ftp:


 1) Issue FTP command to connect to our ftp server

 ftp sbcs.sunysb.edu or ftp 130.245.1.15

 When asked for Name, respond with "anonymous"
 When asked for Password, respond with "ftp"

 2) Issue change directory command to where the XOLDT system is
 
 cd pub/xoldt
 
 3) Change transfer mode to binary
 
 binary
 
 4) Now retrieve the XOLDT system
 
 get xoldt.tar.Z
 
 5) Exit the ftp program
 
 quit
 
 6) Now uncompress and untar the files
 
 uncompress -c xoldt.tar.Z | tar xvf -

 Note that this command creates a subdirectory xoldt in the current
		directory and uncompresses the files into that directory.
 
 7) (Optional) Remove the compressed XOLDT system

 rm xoldt.tar.Z

 8) If you have done this in your home directory, the pathnames
		hardcoded into the files will work. If not, you
		will have to change some paths.

 9) Have fun with the XOLDT system...


Note that some of these instructions (1-7) apply only to Berkeley derived 
Unix, eg BSD, SunOS, etc.