On Thu, Jan 14, 2010 at 10:43 PM, andrejv <andrej.vodopi...@gmail.com> wrote: > > On Jan 15, 6:14 am, Craig Citro <craigci...@gmail.com> wrote: >> Yeah, this is wacky. I can tell you why it's happening, though someone >> who's ever used Maxima before should really think about the right fix. >> Here's the issue: in sage.calculus.calculus, there's an instance of >> Maxima that gets created and passed the argument 'load(simplify_sum)'. >> This causes the expression 'd2' to get simplified to >> (3*n+k-1)!/(6*n+2*k)!. Here's a sample session illustrating the issue: >> >> sage: maxima("d2") >> d2 >> sage: sage.calculus.calculus.maxima("d2") >> (3*n+k-1)!/(6*n+2*k)! >> sage: Maxima(init_code=['load(simplify_sum)', 'display2d:false'])("d2") >> (3*n+k-1)!/(6*n+2*k)! >> >> Maybe someone who knows Maxima better could point us in the right direction? > > d2 is defined in the testsuite for the Zeilberger algorithm. It is not > necessary to load the tests, in share/contrib/Zeilberger/ > zeilberger.mac remove the last line which loads them. > > Andrej >
Wow, that's pretty annoying. So we have: sage: d2 = var('d2') sage: d2.simplify() factorial(k + 3*n - 1)/factorial(2*k + 6*n) and even worse things like: sage: factorial = var('factorial') sage: factorial^3 + factorial/7 - 1 factorial^3 + 1/7*factorial - 1 sage: (factorial^3 + factorial/7 - 1).simplify() BOOM! -- This could all be avoided if before changing a variable to maxima we prepended it with _sage_var_ (say), and stripped those off when moving from maxima back to Sage. This is worth considering... Basically, right now, any time that one makes a symbolic variables that just *happens* to be the same as the name of a function defined in maxima's large global namespace, any symbolic calls to maxima involving that variable break. One could imagine e.g., writing code that works and uses an innocent sounding variable like x2 (say), upgrading maxima in a few months, and finding that the code suddenly doesn't work in arbitrarily confusing ways (since x2 could be defined in Maxima to be something entirely weird/crazy like "factorial(k + 3*n - 1)/factorial(2*k + 6*n)"). Thoughts?
-- To post to this group, send an email to sage-devel@googlegroups.com To unsubscribe from this group, send an email to sage-devel+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org