Есть ли в Вольфраме для этого какие-то инструменты?
Скорее всего нет, так как в вольфраме целая куча функций, которые реализованы внутри самого вольфрама.
Они не прозрачны и их принципиально неользя вот так преобразовать автоматически.
Вот например твой случай с добавлением добавлением пятёрки в конец числа:
f[x_] := FromDigits[Append[IntegerDigits[x], 5]]
Это тебе как человеку она видится, как добавление цифры в конец.
С точки зрения вольфрама - это последовательный вызов трёх непрозрачных функций:
1. Принимает число и возвращает список
2. Принимает список и число, а возвращает список
3. Принимает список и возвращает число
Если добавить немного прозрачности о том, что каждый из шагов делает, то можно попробовать описать это через матрицы/вектора/множества, но их опять же без вдумчивого анализа не получится упростить до "10x+5)
Не говоря уже об If и циклах.
Хотя строго говоря условия и даже свободные формулировки на человеческом языке вполне допустимы в "чистой математике" - главное чтобы они были однозначны.