I've opened an issue for this: http://code.google.com/p/sympy/issues/detail?id=2549
I should note (as I do in the issue) that there are some cases where it does return the correct output for a non-commutative symbol. In fact, there are some tests already in the doctests for the non-commutative case. I think the issue is specifically for cases where the symbol we pass as an argument to as_independent is commutative, but is in an expression with a non-commutative symbol. In these cases, that expression always ends up as independent, even if it depends on the argument. I will play with this a bit and see what I can come up with. It might end up being a simple-ish fix, and if it gets more complicated I may need help from someone more experienced with this code. On Wed, Jul 6, 2011 at 4:50 PM, Aaron Meurer <[email protected]> wrote: > If as_independent (or any other function) does not work with > noncommutative symbols, it's a bug, and should be fixed. > > Unfortunately, quite a few functions in SymPy are not written with > noncommutative symbols taken into consideration. This is because most > people and most code does not use them. However, it should not be > this way. Every function should either give the correct result for a > noncommutative expression, or raise NotImplementedError if it cannot > (for example, factor() does this). > > I recommend opening an issue for this. Someone might come along and > fix it for you (Chris does a lot of work on making these methods of > Expr work with noncommutatives for example), but likely you will need > to fix it yourself. You should look at the code to see which part of > it makes an assumption that is invalid in the noncommutative case, and > fix it. You may need to rewrite the algorithm, or write a separate > algorithm for the noncommutative case, depending on how ingrained the > assumption of commutativity is in the code. Or, for example, if an > algorithm that takes noncommutatives into consideration would be > slower in the commutative case, you should separate the code. > > The code should be well tested (especially if it's being used by other > functions like integrate()), so don't worry about breaking things. > Just make sure that the tests pass, and you can be pretty sure that > things still work for the commutative case (you will of course need to > add your own tests for the noncommutative case). > > Aaron Meurer > > On Wed, Jul 6, 2011 at 12:57 PM, Tom Bachmann <[email protected]> wrote: > > I think as_independent only works with commutative terms (i.e. any > > implementation for non-commutative terms that ever existed is now somehow > > broken). Indeed when I started my project some objects were > non-commutative > > [Tuple lacking correct assumptions turned out to be the cause] and I got > > similar behaviour. > > > > I guess this is not very helpful, since you cannot just make your > > non-commutative objects commutative ^^. > > > > -- > > You received this message because you are subscribed to the Google Groups > > "sympy" group. > > To post to this group, send email to [email protected]. > > To unsubscribe from this group, send email to > > [email protected]. > > For more options, visit this group at > > http://groups.google.com/group/sympy?hl=en. > > > > > > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/sympy?hl=en. > > -- You received this message because you are subscribed to the Google Groups "sympy" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sympy?hl=en.
