Rules question



> Does the simplification rules in maxima fall into any typical 
> AI model such as forward chaining or backward chaining? 

I do not believe that any part of Maxima contains any sort of inference
engine or chaining.  The knowledge in Maxima is almost all
"precompiled".  Some parts of Maxima do use pattern-matching (as opposed
to explicit testing for cases).  Several parts (integrate, limit) use
multiple strategies (if approach A fails, try approach B), even
recursively, so I suppose that qualifies as a sort of backtracking.  I
believe the display engine does branch-and-bound backtracking (as do
typical Lisp pretty-printers).

The general simplifier, in particular, is completely algorithmic (no
separation of knowledge base from inference engine) and does no search
or backtracking.  Its two fundamental strategies are putting things into
standardized forms (quasi-canonical) and recognizing cases by explicit
testing (no general pattern-matching).  This makes it fast (though hard
to maintain because of interactions).  It does occasionally use other
modules of Maxima (notably Compar/$sign/$asksign) which use other
strategies, though again they are largely algorithmic.

Maxima's pattern-matching and replacement modules apply transformations
blindly, with no goal-seeking.  You could of course build a goal-seeking
driver for them (e.g. using rules A, B, and C, minimize the size/cost of
this expression), and I believe 'affine' does something like that.
Perhaps trigsimp, too, but I am not sure.

Corrections to the above are welcome!

       -s