Question: Non-commutative Operations

I'm glad to see the dot operator and I'm trying to get around some limitations since it doesn't understand general matrices and vectors. Consider the expression T(g(a)).h(a). In my case, T is a transpose operation and a is a vector. I'm trying to differentiate it with respect to a. The general derivative is of the form, T(h(a)).diff(g(a),a) + T(g(a)).diff(h(a),a). My question is how to get Maple to understand how to apply this particular derivative rule. If I just blindly apply the derivative, I get the second term fine, but the first term is not in a useful form. Basically, I need to tell diff how to carry out the product rule for these non-commutative terms. I'm assuming that I have to create my own type that the dot operator acts on, but I'm not sure how to go about doing that since dot is new. I'd appreciate any insight people have. I know it can be done, since the new Physics package appears to overload dot.
Please Wait...