<p>How can I simplify an expression using basic arithmetic?</p>

You can use the technique described here:
http://augustss.blogspot.com/2007/04/overloading-haskell-numbers-part-2.html
. Make your type be of the necassary type-classes (Num, Fractional, Floating) so that -, +, * and so on works for your type. Then if the expression tree is finally built, you can operate on it to see what you can simplify.