[Haskell-cafe] Implementing Mathematica

jerzy.karczmarczuk at info.unicaen.fr jerzy.karczmarczuk at info.unicaen.fr
Thu May 31 18:28:44 EDT 2007


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.


More information about the Haskell-Cafe mailing list