The symbolic processor does not make many of the assumptions you do. You may well not even be aware that you are making such assumptions; it's a common mistake. In general, sqrt(x^2) is not equal to x. It is equal to x only if you restrict the domain of x to positive real numbers. If you want to restrict the domain of some or all of the variables then you usually have to explicitly tell the symbolic processor to do so.