add things to do. TODO fix bug for unary- . fix bug for trace(trace(x)* x * x)