
Andrew Coppin cites me and asks:
jk wrote:
... The World had many symbolic math packages: Reduce, Macsyma, Schoonschip (beloved by high- energy physicists), Maple, Scratchpad2/Axiom, later MuSIMP/MuMATH for small platforms, etc.
I find that statement interesting. I have never come across *any* other package that can perform _symbolic_ mathematics.
(Sure, there are packages that can perform specific operations - solving certain kinds of equations, transforming matricies, rearranging formulas. But I have never seen any other package where you can just do *anything*.)
You must be joking, but OK, I am naive, and I will answer as it were serious. Really, haven't heard about Maple??? http://www.maplesoft.com/ Its limited library is integrated within Matlab Symbolic Toolbox, and if you *have* Maple and Matlab, the latter can use the full force of the former. Maple is commercial as Mathematica, but there are perfectly usable free packages as well, for example Axiom and Maxima (Macsyma rekindled). http://wiki.axiom-developer.org/FrontPage http://maxima.sourceforge.net/ There is also a system constructed in Paderborn, MuPAD, which was free, but for survival reasons it became 100% commercial (although the old free version circulates still on the Web...) http://www.mupad.de/ The are more free stuff, GAP, MaCaulay,... In general, check http://en.wikipedia.org/wiki/Comparison_of_computer_algebra_systems DoCon is mentioned here as well. Some disappeared, but the choice remains pretty large.
But yes - I have tried to implement that pattern matching engine a couple of times in Pascal. (Remember Pascal?) Getting it to work for a few test cases is easy. Getting it to *properly* handle associativity and commutivity is really nontrivial. (I mean *really* nontrivial! Or perhaps I am an inferior programmer - one of the two!)
The mathematically sensitive matching/substitution is a hard task even if you have at your disposal a reasonably full unifier. Forget Pascal, take Prolog, which will save several days/weeks of the implementation of basic stuff. Even then, it will be quite tedious to write a package able say, to reduce rational formulae, to reduce a polynomial modulo an ideal, to implement the basic trig identities, find a reasonable common form for expressions containing complex exponentials AND trigonometrics, etc.
...other symbolic math tools exist?
Ask a few more times.