# Symbolic Linear Algebra

I'd like to manipulate symbolic expression in linear algebra. More specifically, suppose that A,B, etc. are matrices and v,w,.. etc are column vectors. I have various expressions in them that I'd like expanded and grouped. It also should know about transpose (that it's an involution). For example, if I write the expression:

transpose(v-w)*A*(v-w). It should be able to expand this to

transpose(v)*A*v - transpose(v)*A*w - transpose(w)*A*v + transpose(w)*A*w

Also, I'd like to specify that A is symmetric -- A == transpose(A). In that case the above would simplify to

transpose(v)*A*v - 2*transpose(v)*A*w + transpose(w)*A*w

if we idenfity a 1 by 1 matrix with a scalar. It would also be nice, if we could specify symbolic scalars, and, for example to say that A in hom(V,W), where V,W are some vector spaces. In that case if we try to multiply things that are incompatible we would get an error. This looks like it should be part of some sort of universal algebra package. Does such a thing exist in SAGE?