Problem running symmgrp2009.max with recent versions of Maxima



Am Mittwoch, den 16.11.2011, 22:43 +0000 schrieb Wiltshire R J (AT):
> > Dieter Kaiser
> 
> Your output (for the Harry Dym equation) is definitely correct and so
> certainly exactly what is required and I am very pleased about this!
> However for me I still cannot get the new depends function to work
> (using a Maxima console, v5.25 on my mac). When I type
> depends(f,[x[1],x[2]]) etc I get the same old error message (depends -
> expects a symbol). Is the new depends available to me or is the case
> the new implementation is so far only available to you as a program
> developer?? Please advise.
> 
> Thank you - Ron Wiltshire

The change of the code will be part of the next release of Maxima that
is Maxima 5.26. I think, this version will come in December 2011. I am
working with Maxima 5.25post, which includes all changes since the last
version 5.25.1.

As an alternative you can copy the following Lisp function into a file
and load the file with the Maxima command `load'. E. g. if you save the
function in a file "depends.lisp", you can load the new function with
load("depends.lisp"). You might get a warning about redefining the
function, but that does not matter.

This is the function you have to copy into a file:

(defun i-$dependencies (l &aux res)
  (dolist (z l)
    (cond
      ((atom z)
       (merror
         (intl:gettext
           "depends: argument must be a non-atomic expression; found
~M") z))
      (t
       (do ((zz z (cdr zz))
            (y nil))
           ((null zz)
            (mputprop (caar z) (setq y (reverse y)) 'depends)
            (setq res (push (cons (ncons (caar z)) y) res))
            (unless (cdr $dependencies)
              (setq $dependencies (copy-list '((mlist simp)))))
            (add2lnc (cons (cons (caar z) nil) y) $dependencies))
         (cond ((and ($subvarp (cadr zz))
                     (not (member (caar (cadr zz)) y)))
                (setq y (push (cadr zz) y)))
               ((not (symbolp (cadr zz)))
                (merror
                  (intl:gettext "depends: argument must be a symbol;
found ~M")
                  (cadr zz)))
               ((and (cadr zz)
                     (not (member (cadr zz) y)))
                (setq y (push (cadr zz) y))))))))
  (cons '(mlist simp) (reverse res)))


Dieter Kaiser