Just tried out using define today: (%i1) declare(f, multiplicative); (%o1) done (%i2) declare(f, additive); (%o2) done (%i3) f(a+b); (%o3) f(b) + f(a) (%i4) f(a*b); (%o4) f(a) f(b) (%i5) f(a*b +c); (%o5) f(c) + f(a b) How do I get maxima to expand out the f(a*b) in %o5 properly? Joal Heagney