Skip navigation

Category Archives: Summer Of Code

Well, the first article listed in my last SoC post seems to have just what I am after, I just hadn’t read it/didn’t have the necessary background in RETE to understand how close it was to what I was looking for.

It describes an Extended Rete for Mixed Inference (ERMI).  I will find out exactly how clear it is when I actually try to extend the LISA code to work with it.  I’ve still got to get used to the Lisa source.

I’m going to ask my brother about a CV for the authors (they are from the Seoul National University, and he speaks Korean), to try to see what else they have done that relates or that may be of interest.

Read More »

David Young suggested that I talk to the JESS guys, as implementing backward chaining on top of our existing data structure (a Rete network) could be quite convenient.

They turned me down, which is not too surprising, considering that it is licensed commercially. Nevertheless, I’ve found some other sources on implementing backward chaining on a Rete network.

I haven’t read them yet, but they could prove useful.

I’m going to list various types of backward chaining, along with implementations that follow a given type

WAM (Warren’s Abstract Machine)
– most Prologs…
TOAM (Tree-Oriented Abstract Machine)
– B-Prolog
Specialized (backward and forward chaining on the same structure)
– JESS – Built on top of a Rete network
– CLIPS/R2 – Uses ‘Rete II’, which adds backward chaining and hashed memories

Not sure yet
– Mandarax – contains implementations of 4 inference engines, at least one of which is backward chaining
– Eulersharp – “backward-chaining reasoner enhanced with Euler path detection”

Here follows my abstract and proposal. It is unchanged, except for the removal of email addresses and the addition of small dashes to improve formatting.


LISA (Lisp-based Intelligent Software Agents) currently uses an implementation of the Rete algorithm (a many-to-many matching system) as its inference engine.  The Rete algorithm has excellent performance for certain applications, such as deductive databases and production systems.  However, in many situations its many-to-many matching is overkill.

Implementing backward chaining in LISA will provide a system of one-to-many matching, allowing LISA to be efficiently used for logic programming.

LISA Homepage: Read More »

Well, after working on a couple of proposals, my proposal for extending LISA, a Lisp library, was accepted.  My primary mentor will be Heow Eide-Goodman from LispNYC, and I’m still not sure who my secondary mentor is (maybe David Young, the maintainer of LISA?).

I’ll very probably be using this blog to track progress.