Add a TODO that this can be optimized. Transpose should be free and we should be able to use (AB)^T = B^T A^T, (A+B)^T = A^T + B^T.  So we probably need a case match for Product, Sum and Literal to implement those two rules.