Неплохо бы поточнее задачу формулировать, а то ведь можно и так вынести:
. A можно еще как-нибудь.
Да, действительно, я не подумал об этом. Впринципе не так важно, в каком виде будет записано. Главная задача - вынести (a+b)общим множителем, там где можно.
Пользуясь советом пользователя nestoklon, сделал вот такую функцию group, использующую divide(деление многочлена на многочлен с остатком):
group(expr,outexpr):=(outexpr)*divide(expr,outexpr)[1]+divide(expr,outexpr)[2];
group(a*x+a*y+a*z+b*x+b*y+b*z+2*a+3*b,a+b);
(b+a)*(z+y+x+3)-aВпринципе - это то, что нужно. Если можно сделать как то проще, напишите - буду знать.