From: Eduardo O. <edu...@gm...> - 2025-06-06 15:33:56
|
Hi list, the dependencies and the constantness of a variable seem to be stored in two places - in "dependencies" and in properties(var). We can check that with: [properties(a), diff(a)]; declare(a,constant)$ [properties(a), diff(a)]; remove (a,constant)$ [properties(a), diff(a)]; [dependencies, diff(a)]; depends(a,[x,y])$ [dependencies, diff(a)]; remove (a,dependency)$ [dependencies, diff(a)]; I tried to write a function "setdepends" that would work like this, setdepends(a,[]) - would declare a as constant setdepends(a,[a]) - would set a in the default way, with diff(a)=del(a) setdepends(a,[x,y]) - would work like depends(a,[x,y]) I tried to write it as: setdepends_const(var) := (declare(var,constant), remove(var,dependency))$ setdepends_none (var) := (remove (var,constant), remove(var,dependency))$ setdepends_other(var,deps) := (remove (var,constant), depends(var,deps))$ setdepends (var,deps) := if equal(deps,[]) then setdepends_const(var) elseif equal(deps,[var]) then setdepends_none (var) else setdepends_other(var,deps)$ setdepends(a,[])$ diff(a); /* should yield 0 */ setdepends(a,[a])$ diff(a); /* should yield del(a) */ setdepends(a,[x,y])$ diff(a); /* should yield a_x del(x) + a_y del(y) */ ...but my code has lots of errors, and I'm finding it hard to debug. =( Any suggestions? Thanks in advance, Eduardo Ochs http://anggtwu.net/eev-maxima.html |