Algebraic thinking