>> I don't want to actually instantiate matrices because I don't care to
>> specify their shape or to index into them. Really I just need two kinds of
>> multiplication of non-commutative symbols. Is this possible in Sympy?
I should have left the initial example that I wrote, but then I
thought I would copy from the docs. Again, the element-wise is not
implemented (AFAIK) but
>>> MatrixSymbol('A',n,n)*MatrixSymbol('B',n,n)
A*B
>>> _[i,j]
Sum(A(i, _k)*B(_k, j), (_k, 0, n - 1))
Is that more what you need?