Solving algebraic expressions