Lisp and maxima properties of functions



On 29/09/2012 1:56 AM, Stavros Macrakis wrote:
> On Fri, Sep 28, 2012 at 10:49 AM, David Billinghurst 
> <dbmaxima at gmail.com <mailto:dbmaxima at gmail.com>> wrote:
>
>     I am struggling to understand the relationship between lisp and
>     maxima properties on functions.
>
>
> There is no /direct/ relationship.  The function $properties (with its 
> helper function properties) tries to pull together the various kinds 
> of Maxima properties of a symbol from wherever they live into a single 
> list.  Its code is probably the best answer to your question.  There 
> is no simple, direct relationship between the Lisp property list 
> (symbol-plist) and the various Maxima property lists ($get/$put, 
> $declare, etc.). The properties reported on by $properties are not 
> settable in any uniform way.
>
> With some work, you could probably tease out the stratigraphy of the 
> creation of these various systems, but it might be more useful to 
> focus on the specific problem you are trying to solve.
>
>            -s
Thanks.  The lisp function properties in outmis.lisp shows the mapping 
for the properties of interest.

                    (assoc (car y)
                           `((bindtest . $bindtest)
                             (sp2 . $deftaylor)
                             (sp2subs . $deftaylor)
                             (assign . "assign property")
                             (nonarray . $nonarray)
                             (grad . $gradef)
                             (integral . $integral)
                             (distribute_over . "distributes over bags")
                             (simplim%function . "limit function")
                             (conjugate-function . "conjugate function")
                             (commutes-with-conjugate . "mirror symmetry")
                             (risplit-function . "complex characteristic")
                             (noun . $noun)
                             (evfun . $evfun)
                             (evflag . $evflag)
                             (op . $operator)) :test #'eq))

I am interested in accessing some of these properties - for example 
integral - at the maxima level, as is done for gradef.