[comp.lang.prolog] Forward chaining production systems on Prolog?

yk@a.nl.cs.cmu.edu (Yasusi Kanada) (02/17/89)

There are a lot of backward chaining production systems implemented in
Prolog, because they match the nature of Prolog and it's quite easy to
implement them.  On the other hand, as far as I know, there are rather
few implementation of forward chaining production systems such as OPS5
implemented in Prolog.  The following are the examples.

Coelho, H., and Cotta, J. C.: Prolog by Example, Problem 97, Springer-
Verlag, 1988.

Shintani, T.: A Fast Prolog-Based Production System KORE/IE, Proc. of
the Fifth International Conference and Symposium on Logic Programming,
pp.26-42, 1988.

I know some other references written in Japanese.  Most of them are
naiive implementation.  The second paper above is the only one that
uses RETE-like network, so it's the only one practical.  Do you know
other references?  Thanks in advance.

-Yasusi Kanada
 yk@a.nl.cs.cmu.edu
-- 

finin@hamlet (Tim Finin) (02/19/89)

In article <4302@pt.cs.cmu.edu>, yk@a.nl (Yasusi Kanada) writes:
>There are a lot of backward chaining production systems implemented in
>Prolog, because they match the nature of Prolog and it's quite easy to
>implement them.  On the other hand, as far as I know, there are rather
>few implementation of forward chaining production systems such as OPS5
>implemented in Prolog.  The following are the examples....
>...Do you know other references?  Thanks in advance.

We've devloped one which is described in:
  @inproceedings{Finin89a,
     AUTHOR = "Tim Finin and Rich Fritzson and Dave Matuzsek",
     TITLE = "Adding Forward Chaining and Truth Maintenance to Prolog",
     BOOKTITLE = "IEEE Conference on Artificial Intelligence Applications",
     MONTH = "March",
     YEAR = "1989"}
-- 
 Tim Finin			finin@prc.unisys.com (internet)
 Unisys Paoli Research Center	..!{psuvax1,sdcrdcf,cbmvax}!burdvax!finin (uucp)
 PO Box 517			215-648-7446 (office), 215-386-1749 (home),
 Paoli, PA 19301		215-648-7412 (fax)

novick@uoregon.uoregon.edu (David G. Novick) (02/21/89)

Yasusi Kanada has inquired about other references to forward-chaining
productions systems in Prolog.

As noted in earlier articles, backward-chaining systems are very
straight-forward in Prolog.  Forward-chaining systems, while not
quite as directly implementable, are nevertheless fairly easy to
write in Prolog.  As part of my doctoral work, I wrote a forward-
chaining system on top of SICTStus Prolog.  A complete listing of
the system is available as an appendix in Novick, D. G. 1988. "Control
of mixed-initiative discourse through meta-locutionary acts: A
computational model,"  Tech. Rep. CIS-TR-88-18, Department of Computer
and Information Science, University of Oregon.  This work relied on 
my earlier Lisp-based contributions to the ORBS system.

Some of the nice feature of writing a rule-based system in
Prolog are that (1) conflict resolution can be described in predicate
form, so CR strategies can be domain-customized rather easily, 
(2) most of the unification chores are handled by the language, (3) it
is trivial to add control information to rules, and (4) there is a
good correspondence between "test" clauses in a rule and the idea that
something is provable.

==============================================================================
David G. Novick			  |  internet: novick@cs.uoregon.edu
Computer and Information Science  |  uucp:     {tek|hp-pcd}!uoregon!fog!novick
University of Oregon		  |  home:     (503) 687-9506
Eugene, Oregon  97403-1202	  |  office:   (503) 686-4408
==============================================================================