A função opsubst  similar à função subst, exceto que
opsubst somente faz substituições para as operações em uma expressões. Em geral, 
quando f for um operador em uma expressão e, substitui g 
por f na expressão e.
Para determinar o operador, opsubst escolhe inflag para verdadeiro ( true ). Isso significa que
opsubst substitui para a forma de operador interna, não para a mostrada,
na expressão.
Exemplos:
(%i1) load ("opsubst")$
(%i2) opsubst(f,g,g(g(x)));
(%o2)                     f(f(x))
(%i3) opsubst(f,g,g(g));
(%o3)                       f(g)
(%i4) opsubst(f,g[x],g[x](z));
(%o4)                       f(z)
(%i5) opsubst(g[x],f, f(z));
(%o5)                      g (z)
                            x
(%i6) opsubst(tan, sin, sin(sin));
(%o6)                     tan(sin)
(%i7) opsubst([f=g,g=h],f(x));
(%o7)                       h(x)
Internamente, Maxima não usa os operadores de negação unária, divisão, ou de subtração; dessa forma:
(%i8) opsubst("+","-",a-b);
(%o8)                     a - b
(%i9) opsubst("f","-",-a);
(%o9)                      - a
(%i10) opsubst("^^","/",a/b);
                             a
(%o10)                       -
                             b
A representação interna de -a*b é *(-1,a,b); dessa forma
(%i11) opsubst("[","*", -a*b);
(%o11)                  [- 1, a, b]
Quando o operador não for um símbolo Maxima, geralmente alguma outra função sinalizará um erro:
(%i12) opsubst(a+b,f, f(x)); Improper name or value in functional position: b + a -- an error. Quitting. To debug this try debugmode(true);
Todavia, operadores subscritos são permitidos:
(%i13) opsubst(g[5],f, f(x));
(%o13)                     g (x)
                            5
Para usar essa função escreva primeiramente load("opsubst").