how to add new stuff to Maxima



On Tuesday 20 July 2004 11:51 pm, Richard Fateman wrote:

> Depends on what you mean by "added functionality".  If you add a "new
> representation" then I think the answer is yes, you have to consider what 
> each command might do, and whether the default for "unknown" stuff is good
> enough.  Added functionality which fits in the standard representation is 
> not so problematical. E.g. adding the Lambert W function which would 
> require a handful of additions:   
>
> a. how to differentiate
> b. how to evaluate in floating point
> c. how to evaluate in bigfloat
> d. maybe some integration formulas
> e. some fact about the inverse  (for solve)
> f. maybe some facts about taylor series
> g. simplification at special arguments.

But if we have more series representations present in the system than just 
taylor do we need to also consider those, for example?  It would be nice 
if, for given types of new additions, we have a checklist of items that 
need to be thought out/documented before the addition is ready for prime 
time.  (I guess in that sense a lot of Maxima isn't ready for prime time, 
for that matter.)  For people wanting to add functions, a standard function 
programmer documentation template addressing various points like the ones 
you listed above would (IMHO anyway) be an excellent policy to implement.  
(And create for what's already there.) 

> None of these requires changing existing programs, but only data, and
> new programs. some other stuff might need changes, e.g.
> simplification of  expressions around W;   e.g. exp(W(x)) would require
> changes to exp simplifier.

Which is a good illustration of why I think there should be some systematic 
way a programmer could have a checklist - so they can say "Yep, OK, got the 
simplifier rules for exp, foo, bar, ..." even if the decision is no new 
rules are needed.

> Introduction of new functions is much simpler.  It is even simpler
> if you just define away the function as, for example, if sinh were not
> there, you could define sinh(x):=(exp(x)-exp(-x))/2 ,   or if all
> functions were immediately replaced by their (truncated) taylor series. 
> So not all is quite so desperate.

No, but it would be nice if it were systematic.

> The point of the Axiom system is, at least in principle, to make use of
> declarative knowledge about stuff like "polynomials" over "rings"  in 
> which case you know that to define such domains, you need to build upon 
> the operations and representations of specific rings, and all these 
> operations and related axioms are listed.  So you will in that sense get 
> the job done right in an abstract mathematical sense.    

In principle I like the sound of that.  How do the feature sets of Maxima 
and Axiom compare for real world use?  Axiom seems to be the more "solid" 
of the two systems, but I've always had the impression Maxima was the more 
practical of the two for non mathematical research type work.

> The extent to which this can actually work has been an issue.  If all
> you get is "modern algebra" but not analysis, then the result is 
> insufficient for Macsyma, unless you do a lot of faking. 
> If you are less ambitious and are interesting in (say) univariate
> polynomials over finite fields, then you can be linguistically very clean, 
> and I suspect you could even  add new representations in a fairly clean
> manner. 
>
> My feeling is that any of the "3M" CAS are too ambitious.

Perhaps, but their success as products indicates that what they do is 
something people find useful.  I guess its the old problem that nothing 
worthwhile is easy.

CY