Developing Algebraic Reasoning Through Generalization