If I were to try this project, I would attempt:
(1) Modify 'declare' to allow things like
declare(f, distributes_over, ["[", set, matrix])
(there are other possibilities). Internally, this would do
(setf (get 'f 'distributes-over) '(mlist $set $matrix)))
(2) Change 'threadable' (in share/contrib/multiadditive.lisp) to examine
the operator of the argument to see if it is in the distributes-over
property list of the operator. This could be done by changing a few
lines of threadable, I think.
(3) Change 'threadable' to a better name.
Since I wrote threadable, I have an not-invented-here attitude toward a
tellsimp method. But unlike a tellsimp scheme, I believe this method
would not slow the simplifier.
Barton
-----maxima-bounces at math.utexas.edu wrote: -----
>To: Robert Dodier <robert.dodier at gmail.com>
>From: Richard Fateman <fateman at EECS.Berkeley.EDU>
>Sent by: maxima-bounces at math.utexas.edu
>Date: 06/09/2007 08:32AM
>cc: maxima-help <maxima at math.utexas.edu>
>Subject: Re: [Maxima] declaration foo distributes over bar
>
>argument against:
>slows down simplifier.