Hello Matthew, As Aaron says correctly, work on matrices and work on the matrix symbol is quite separate. The Matrix class provides fundamental operations like addition, multiplication. We only have to make Add, Mul call the required routines in the Matrix class.
I'm not sure what .flatten does, and my knowledge about the core is only minimal. But I think the only time there is a difference between a regular symbol and a matrix symbol is when expr.subs(x, matrix) is done. Possibly, this could be achieved only by adding some code to the subs function. Instead of focussing on things like is_symmetric, is_positive_definite (which I agree, are useful), I think making expr.subs(x, matrix) work should be the first step. x here could be a regular non-commutative Symbol. Even if its inelegant, i.e. involves making Add, Mul Matrix-aware, I think it would be good if we could try out stuff making .subs work for matrices by adding code to the present core (.flatten, .subs, etc.). If we succeed, then more code could be added to get more functionality, even if we don't push in stuff to the master. Later if this successful, all the Matrix expressions code could be ported to a separate MatrixMul, MatrixAdd, etc. Making new classes that belong to the core for a small functionality feels like overkill right now. Have you tried anything out regarding this, Matthew ? Regards, Sherjil Ozair -- You received this message because you are subscribed to the Google Groups "sympy" group. To view this discussion on the web visit https://groups.google.com/d/msg/sympy/-/uyTjPpzKQhQJ. To post to this group, send email to sympy@googlegroups.com. To unsubscribe from this group, send email to sympy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sympy?hl=en.