Miguel,
The current Lisp code for Maxima is undoubtedly hard to read and maintain,
partly because it is uncommented, partly because it is stylistically
inconsistent, partly because it is written in Lisp and partly because it is
largely written at a rather low level.
Encoding mathematical knowledge with transformation rules at the Maxima
level (rather than the Lisp level) could indeed make the system easier to
understand and to extend. And in fact there are a few (not many) extensions
which use that mechanism, e.g. the Share package absimp.
There are several reasons for this:
-- the pattern matcher did not exist in early versions of Macsyma/Maxima;
all code written before it of course does not use it;
-- existing simplifications are not documented as transformations, so
writing new transformations may be trickier;
-- some kinds of transformations are difficult to express, for example
Maxima's canonical ordering of terms in a sum or product;
-- writing a large set of transformations which is convergent (terminating
and confluent) can get difficult;
-- the current pattern-matching engine is perhaps not the most efficient
one could imagine.
I would suggest you select a well-defined application area you would like to
improve, and start working on it using transformation rules. If you are
successful in doing this, you will have made a useful contribution to the
project; if you have difficulties doing it, you will perhaps learn what
needs to be improved in the system to make it easier, and perhaps you could
improve that infrastructure.
Sincerely,
-s