[comp.lang.scheme] Looking for simple rule-based expert system in Scheme

tmoore@pi19.pnfi.forestry.ca (Tom Moore) (03/01/91)

I am putting together a simulation model and would like to
embed a rule-based expert system within it, probably using
something like ELK or MIT-Scheme.

I am wondering if anyone has a rule-based expert system
that is written in scheme?  Although my needs are very
simple (no user interaction, simply read rules from a file
and apply them) I would be grateful to be able to take
a look at what others have done in this area.

The simulation model is numerically intensive, but would call
the rule matching system frequently in order to determine how to
handle deterministic events.  The simulation model side would
set up all of the variables, call the Scheme side to pattern 
match a set of rules, returning the conclusion.

I see the main requirements as:
  - some kind of logical specification of the rules (a language)
  - a scheme front-end to parse the rules, performing a simple
    consistency check and primitive optimization of the rule 
    structure.
  -  a function interface that would evaluate the rules and draw the correct 
    conclusion.
  - very low overhead in order to run quickly.  The pattern matcher 
    will be invoked up to 1 million times per simulation.  The simulation
    model currently uses about 10 minutes of CPU on a Sun 4/110, and I
    would hate to see this increase by orders of magnitude.

Any ideas, systems, papers, etc gratefully accepted.

Tom Moore                                       tmoore@pnfi.forestry.ca
Petawawa National Forestry Institute            uunet!attcan!ists!pi19!tmoore
Forestry Canada, Box 2000, Chalk River          +1 (613) 589-2880
CANADA K0J 1J0                                  +1 (613) 589-2275 telefax
-- 
Tom Moore                                       tmoore@pnfi.forestry.ca
Petawawa National Forestry Institute            uunet!attcan!ists!pi19!tmoore
Forestry Canada, Box 2000, Chalk River          +1 (613) 589-2880
CANADA K0J 1J0                                  +1 (613) 589-2275 telefax