Максима: как заменить общие подвыражения на символы
Предположим, у меня есть выражение вроде (на самом деле мое гораздо более сложное, тысячи символов)
expr:a+b*c+b*c*d;
и я хочу заменить внутреннее подвыражение на символ (полезно, чтобы избежать повторного вычисления общих подвыражений), скажем,k
на местеb*c
:
subst(b*c=k,expr);
возвращается
k+b*c*d+a
Как я могу заставить Maxima вычислить «правильную» замену так, чтобы она возвращалась (кроме упрощения obviuos, здесь)
k+k*d+a
?