Представьте, что вы — это та программа. Как бы вы раскрывали?
Потом посмотрите, какие общие правила можно извлечь из ваших действий и какие вообще бывают. Например,

. Проверьте, в каком порядке их лучше выполнять, чтобы получить что-то определённое.
Потом переформулируйте их, чтобы они работали с выражениями, представленными в форме деревьев или прямой/обратной польской записи — зависит от того, как вы собираетесь их представлять.
И пишите по ходу дела всё сюда.

Наверно, в текстах про символьные вычисления и по поводу конкретных систем символьной алгебры встречаются описания используемых алгоритмов.
P. S. Если у вас деление и умножение могут встречаться как попало, может получиться и уравнение не первой степени. Например,

преобразуется в квадратное.
P. P. S. А можно не применять преобразования к уравнению, а «вычислять» символьно его левую часть (если справа 0), при этом сразу приводя к нужной форме. Подумайте, возможно ли таким способом получить многочлен или рациональную функцию (дробь из двух многочленов) от переменной.