Funciones y variables para opsubst
==================================

 -- Función: opsubst (F,G,E)
 -- Función: opsubst (G=F,E)
 -- Función: opsubst ([G1=F1,G2=F2,..., GN=FN],E)
     La función opsubst es similar a la función subst, excepto por el hecho de que opsubst  tan solo hace sustituciones de operadores en las expresiones. En general, si F es un operador en la expresión E, lo cambia por G en la expresión E.

     Para determinar el operador, opsubst asigna a inflag el valor true, lo cual significa que opsubst sustituye el operador interno de la expresión, no el mostrado en la salida formateada.

     Ejemplo:

          (%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 no hace uso de los operadores de negación unaria, de división ni de la resta, por lo que:

          (%i8) opsubst("+","-",a-b);
          (%o8)                     a - b
          (%i9) opsubst("f","-",-a);
          (%o9)                      - a
          (%i10) opsubst("^^","//",a/b);
                                       a
          (%o10)                       -
                                       b

     La representación interna de -a*b es *(-1,a,b), de modo que

          (%i11) opsubst("[","*", -a*b);
          (%o11)                  [- 1, a, b]

     Si alguno de los operadores no es un sí de Maxima, se emitirá un mensaje de error:

          (%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);

     Sin embargo se permiten operadores subindicados:

          (%i13) opsubst(g[5],f, f(x));
          (%o13)                     g (x)
                                      5

     Antes de hacer uso de esta función ejecútese  load("opsubst").