@c Language: Brazilian Portuguese, Encoding: iso-8859-1
@c /opsubst.texi/1.2/Sat Jun  2 00:13:28 2007//
@menu
* Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para  opsubst::
@end menu

@node Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para opsubst,  , opsubst, opsubst
@section Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para  opsubst

@deffn {Fun@value{cedilha}@~{a}o} opsubst (@var{f},@var{g},@var{e})
@deffnx {Fun@value{cedilha}@~{a}o} opsubst (@var{g}=@var{f},@var{e})
@deffnx {Fun@value{cedilha}@~{a}o} opsubst ([@var{g1}=@var{f1},@var{g2}=@var{f2},..., @var{gn}=@var{fn}],@var{e})
A fun@value{cedilha}@~{a}o @code{opsubst}  similar @`a fun@value{cedilha}@~{a}o @code{subst}, exceto que
@code{opsubst} somente faz substitui@value{cedilha}@~{o}es para as opera@value{cedilha}@~{o}es em uma express@~{o}es. Em geral, 
quando @var{f} for um operador em uma express@~{a}o @var{e}, substitui @var{g} 
por @var{f} na express@~{a}o @var{e}.

Para determinar o operador, @code{opsubst} escolhe @code{inflag} para verdadeiro ( true ). Isso significa que
@code{opsubst} substitui para a forma de operador interna, n@~{a}o para a mostrada,
na express@~{a}o.

Exemplos:
@example
(%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)
@end example

Internamente, Maxima n@~{a}o usa os operadores de nega@value{cedilha}@~{a}o un@'{a}ria,
divis@~{a}o, ou de subtra@value{cedilha}@~{a}o; dessa forma:
@example
(%i8) opsubst("+","-",a-b);
(%o8)                     a - b
(%i9) opsubst("f","-",-a);
(%o9)                      - a
(%i10) opsubst("^^","/",a/b);
                             a
(%o10)                       -
                             b
@end example

A representa@value{cedilha}@~{a}o interna de -a*b @'{e} *(-1,a,b); dessa forma
@example
(%i11) opsubst("[","*", -a*b);
(%o11)                  [- 1, a, b]
@end example

Quando o operador n@~{a}o for um s@'{i}mbolo Maxima, geralmente alguma outra fun@value{cedilha}@~{a}o
sinalizar@'{a} um erro:
@example
(%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);
@end example

Todavia, operadores subscritos s@~{a}o permitidos:
@example
(%i13) opsubst(g[5],f, f(x));
(%o13)                     g (x)
                            5
@end example

Para usar essa fun@value{cedilha}@~{a}o escreva primeiramente @code{load("opsubst")}.
@end deffn

