On Wednesday, April 9, 2014 1:36:56 AM UTC+2, Aaron Meurer wrote:
>
> Yes, exactly. In Python, __eq__ really means equality, and things like 
> sets and lists will assume objects that return True with __eq__ can be 
> interchanged with one another. SymPy follows this convention. If a == b, 
> any SymPy algorithm might interchange a with b and consider it to be valid.
>
> Also take a read of 
> https://github.com/sympy/sympy/wiki/Automatic-Simplification<https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fsympy%2Fsympy%2Fwiki%2FAutomatic-Simplification&sa=D&sntz=1&usg=AFQjCNE4HCl0rm_Ftr8RuRsznedmiHC99w>.
>  
> It's best to allow different things ways of writing mathematically the same 
> thing to be written down differently, and deal with them being 
> mathematically equal in algorithms. 
>
>
I also share the feeling that canonicalization upon construction is wrong, 
especially as it is computationally expensive for tensors. TensAdd is 
currently canonicalizing everything.

I tried to make TensMul and TensAdd inherit Mul and Add, it looks great to 
use all polynomial manipulation stuff with tensors, except that methods 
inherited by Mul and Add completely ignore indices (this is bad). For 
example, if TensMul inherits Mul, it is possible to use 
tens_mul_instance.expand(), unfortunately the resulting expression is not a 
TensAdd, it's an Add object. Is there any way to overcome this issue? 
Tensor expressions should really be handled to some degree as polynomials.

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/e9a07348-9bb1-48af-a93c-7e458bb5f0f2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to