Algebraic reasoning