add some comments here. What is this equality? I don't think it sees that (A*B) * C == A * (B*C), for instance, so it is more limited. If they are equal here, they must be mathematically equal, but not the other way?