@c Language: Brazilian Portuguese, Encoding: iso-8859-1
@c /Simplification.texi/1.18/Sat Jun  2 00:13:08 2007/-ko/
@c end concepts Simplification
@iftex
@hyphenation{di-fe-ren-te-men-te}
@end iftex
@menu
* Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para Simplifica@value{cedilha}@~{a}o::  
@end menu

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

@c After studying src/compar.lisp, it appears that askexp would
@c work as advertised, except that it doesn't appear to be possible
@c to open a break prompt with ^A or any other character.
@c What should we do about askexp ???
@defvr {Vari@'{a}vel de sistema} askexp
Quando @code{asksign} @'{e} chamada,
@code{askexp} @'{e} a express@~{a}o que @code{asksign} est@'{a} testando.

Antigamente, era poss@'{i}vel para um usu@'{a}rio inspecionar @code{askexp}
entrando em uma parada do Maxima com control-A.
@end defvr

@c THERE IS PROBABLY MORE TO THE STORY THAN WHAT IS INDICATED HERE ...
@deffn {Fun@value{cedilha}@~{a}o} askinteger (@var{expr}, integer)
@deffnx {Fun@value{cedilha}@~{a}o} askinteger (@var{expr})
@deffnx {Fun@value{cedilha}@~{a}o} askinteger (@var{expr}, even)
@deffnx {Fun@value{cedilha}@~{a}o} askinteger (@var{expr}, odd)

@code{askinteger (@var{expr}, integer)} tenta determinar a partir da base de dados do @code{assume}
se @var{expr} @'{e} um inteiro.
@code{askinteger} pergunta ao usu@'{a}rio pela linha de comando se isso n@~{a}o puder ser feito de outra forma,
@c UMM, askinteger AND asksign DO NOT APPEAR TO HAVE ANY EFFECT ON THE assume DATABASE !!!
e tenta instalar a informa@value{cedilha}@~{a}o na base de dados do @code{assume} se for poss@'{i}vel.
@code{askinteger (@var{expr})} @'{e} equivalente a @code{askinteger (@var{expr}, integer)}.

@code{askinteger (@var{expr}, even)} e @code{askinteger (@var{expr}, odd)}
da mesma forma tentam determinar se @var{expr} @'{e} um inteiro par ou inteiro @'{i}mpar, respectivamente.

@end deffn

@c THERE IS PROBABLY MORE TO THE STORY THAN WHAT IS INDICATED HERE ...
@deffn {Fun@value{cedilha}@~{a}o} asksign (@var{expr})
Primeiro tenta determinar se a express@~{a}o
especificada @'{e} positiva, negativa, ou zero.  Se isso n@~{a}o for poss@'{i}vel, @code{asksign} pergunta ao
usu@'{a}rio pelas quest@~{o}es necess@'{a}rias para completar a sua dedu@value{cedilha}@~{a}o.  As respostas
do usu@'{a}rio s@~{a}o guardadas na base de dados pelo tempo que durar a computa@value{cedilha}@~{a}o
corrente. O valor de retorno de @code{asksign} @'{e} um entre @code{pos}, @code{neg},
ou @code{zero}.

@end deffn

@c NEEDS CLARIFICATION, EXAMPLES
@deffn {Fun@value{cedilha}@~{a}o} demoivre (@var{expr})
@deffnx {Vari@'{a}vel de op@value{cedilha}@~{a}o} demoivre

A fun@value{cedilha}@~{a}o @code{demoivre (expr)} converte uma express@~{a}o
sem escolher a vari@'{a}vel global @code{demoivre}.

Quando a vari@'{a}vel @code{demoivre} for @code{true},
exponenciais complexas s@~{a}o convertidas em express@~{o}es equivalentes em termos de fun@value{cedilha}@~{o}es circulares:
@code{exp (a + b*%i)} simplifica para @code{%e^a * (cos(b) + %i*sin(b))}
se @code{b} for livre de @code{%i}.
@code{a} e @code{b} n@~{a}o s@~{a}o expandidos.

O valor padr@~{a}o de @code{demoivre} @'{e} @code{false}.

@code{exponentialize} converte fun@value{cedilha}@~{o}es circulares e hiperb@'{o}licas para a forma exponencial.
@code{demoivre} e @code{exponentialize} n@~{a}o podem
ambas serem @code{true} ao mesmo tempo.

@end deffn


@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} domain
Valor padr@~{a}o: @code{real}

Quando @code{domain} for escolhida para @code{complex}, @code{sqrt (x^2)} permanecer@'{a}
@code{sqrt (x^2)} em lugar de retornar @code{abs(x)}.

@c PRESERVE EDITORIAL COMMENT -- MAY HAVE SOME SIGNIFICANCE NOT YET UNDERSTOOD !!!
@c The notion of a "domain" of simplification is still in its infancy,
@c and controls little more than this at the moment.

@end defvr

@c NEEDS WORK
@deffn {Fun@value{cedilha}@~{a}o} expand (@var{expr})
@deffnx {Fun@value{cedilha}@~{a}o} expand (@var{expr}, @var{p}, @var{n})
Expande a express@~{a}o @var{expr}.
Produtos de somas e somas exponenciadas s@~{a}o
multiplicadas para fora, numeradores de express@~{o}es racionais que s@~{a}o adi@value{cedilha}@~{o}es s@~{a}o
quebradas em suas respectivas parcelas, e multiplica@value{cedilha}@~{a}o (comutativa
e n@~{a}o comutativa) @'{e} distribu@'{i}da sobre a adi@value{cedilha}@~{a}o em todos os n@'{i}veis de
@var{expr}.

Para polin@^{o}mios se pode usar freq@"{u}@^{e}ntemente @code{ratexpand} que possui um
algor@'{i}tmo mais eficiente.

@code{maxnegex} e @code{maxposex} controlam o m@'{a}ximo expoente negativo e
o m@'{a}ximo expoente positivo, respectivamente, que ir@~{a}o expandir.

@code{expand (@var{expr}, @var{p}, @var{n})} expande @var{expr}, 
usando @var{p} para @code{maxposex} e @var{n} para @code{maxnegex}.
Isso @'{e} @'{u}til com o objetivo de expandir partes mas n@~{a}o tudo em uma express@~{a}o.

@code{expon} - o expoente da maior pot@^{e}ncia negativa que @'{e}
automaticamente expandida (independente de chamadas a @code{expand}).  Por Exemplo
se @code{expon} for 4 ent@~{a}o @code{(x+1)^(-5)} n@~{a}o ser@'{a} automaticamente expandido.

@code{expop} - o maior expoente positivo que @'{e} automaticamente
expandido.  Dessa forma @code{(x+1)^3}, quando digitado, ser@'{a} automaticamente expandido
somente se @code{expop} for maior que ou igual a 3.  Se for desejado ter
@code{(x+1)^n} expandido onde @code{n} @'{e} maior que @code{expop} ent@~{a}o executando
@code{expand ((x+1)^n)} trabalhar@'{a} somente se @code{maxposex} n@~{a}o for menor que @code{n}.

O sinalizador @code{expand} usado com @code{ev} causa expans@~{a}o.

O arquivo @file{simplification/facexp.mac}
@c I should really use a macro which expands to something like
@c @uref{file://...,,simplification/facexp.mac}.  But texi2html
@c currently supports @uref only with one argument.
@c Worse, the `file:' scheme is OS and browser dependent.
cont@'{e}m muitas fun@value{cedilha}@~{o}es relacionadas (em particular @code{facsum}, @code{factorfacsum}
e @code{collectterms}, que s@~{a}o chamadas automaticamente) e vari@'{a}veis (@code{nextlayerfactor}
e @code{facsum_combine}) que fornecem ao usu@'{a}rio com a habilidade para estruturar
express@~{o}es por expans@~{a}o controlada.
@c MERGE share/simplification/facexp.usg INTO THIS FILE OR CREATE NEW FILE facexp.texi
Descri@value{cedilha}@~{o}es breves de fun@value{cedilha}@~{a}o est@~{a}o dispon@'{i}vel em @file{simplification/facexp.usg}.
Um arquivo demonstrativo est@'{a} dispon@'{i}vel fazendo @code{demo("facexp")}.

@end deffn

@c NEEDS EXAMPLES
@deffn {Fun@value{cedilha}@~{a}o} expandwrt (@var{expr}, @var{x_1}, ..., @var{x_n})
Expande a express@~{a}o @code{expr} com rela@value{cedilha}@~{a}o @`as 
vari@'{a}veis @var{x_1}, ..., @var{x_n}.
Todos os produtos envolvendo as vari@'{a}veis aparecem explicitamente.  A forma retornada
ser@'{a} livre de produtos de somas de express@~{o}es que n@~{a}o est@~{a}o livres das
vari@'{a}veis.   @var{x_1}, ..., @var{x_n}
podem ser vari@'{a}veis, operadores, ou express@~{o}es.

Por padr@~{a}o, denominadores n@~{a}o s@~{a}o expandidos, mas isso pode ser controlado
atrav@'{e}s do comutador @code{expandwrt_denom}.

Essa fun@value{cedilha}@~{a}o, @code{expandwrt}, n@~{a}o @'{e} automaticamente chamada a partir de
@file{simplification/stopex.mac}.

@end deffn


@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} expandwrt_denom
Valor padr@~{a}o: @code{false}

@code{expandwrt_denom} controla o tratamento de express@~{o}es
racionais por @code{expandwrt}.  Se @code{true}, ent@~{a}o ambos o numerador e
o denominador da express@~{a}o ser@~{a}o expandidos conforme os
argumentos de @code{expandwrt}, mas se @code{expandwrt_denom} for @code{false}, ent@~{a}o somente
o numerador ser@'{a} expandido por aquele caminho.

@end defvr

@c NEEDS A STAND-ALONE DESCRIPTION (NOT "IS SIMILAR TO")
@c NEEDS EXAMPLES
@deffn {Fun@value{cedilha}@~{a}o} expandwrt_factored (@var{expr}, @var{x_1}, ..., @var{x_n})
@'{e} similar a @code{expandwrt}, mas trata express@~{o}es que s@~{a}o produtos um tanto quanto diferentemente.
@code{expandwrt_factored} expande somente sobre esses fatores de @code{expr}
que contiverem as vari@'{a}veis @var{x_1}, ..., @var{x_n}.

@c NOT SURE WHY WE SHOULD MENTION THIS HERE
Essa fun@value{cedilha}@~{a}o @'{e} automaticamente chamada a aprtir de @file{simplification/stopex.mac}.

@end deffn


@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} expon
Valor padr@~{a}o: 0

@code{expon} @'{e} o expoente da maior pot@^{e}ncia negativa que
@'{e} automaticamente expandido (independente de chamadas a @code{expand}).  Por
exemplo, se @code{expon} for 4 ent@~{a}o @code{(x+1)^(-5)} n@~{a}o ser@'{a} automaticamente
expandido.

@end defvr


@deffn {Fun@value{cedilha}@~{a}o} exponentialize (@var{expr})
@deffnx {Vari@'{a}vel de op@value{cedilha}@~{a}o} exponentialize

A fun@value{cedilha}@~{a}o @code{exponentialize (expr)} converte 
fun@value{cedilha}@~{o}es circulares e hiperb@'{o}licas em @var{expr} para exponenciais,
sem escolher a vari@'{a}vel global @code{exponentialize}.

Quando a vari@'{a}vel @code{exponentialize} for @code{true},
todas as fun@value{cedilha}@~{o}es circulares e hiperb@'{o}licas  s@~{a}o convertidas para a forma exponencial.
O valor padr@~{a}o @'{e} @code{false}.

@code{demoivre} converte exponenciais complexas em fun@value{cedilha}@~{o}es circulares.
@code{exponentialize} e @code{demoivre} n@~{a}o podem
ambas serem @code{true} ao mesmo tempo.

@end deffn

@c NEEDS CLARIFICATION
@c NEEDS EXAMPLES
@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} expop
Valor padr@~{a}o: 0

@code{expop} - o maior expoente positivo que @'{e} 
automaticamente expandido.  Dessa forma @code{(x+1)^3}, quando digitado, ser@'{a}
automaticamente expandido somente se @code{expop} for maior que ou igual a 3.  
Se for desejado ter @code{(x+1)^n} expandido onde @code{n} @'{e} maior que 
@code{expop} ent@~{a}o executando @code{expand ((x+1)^n)} trabalhar@'{a} somente se @code{maxposex} n@~{a}o for 
menor que @code{n}.

@end defvr

@c NEEDS EXAMPLES
@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} factlim
Valor padr@~{a}o: -1

@code{factlim} especifica o maior fatorial que @'{e}
automaticamente expandido.  Se for -1 ent@~{a}o todos os inteiros s@~{a}o expandidos.

@end defvr

@c NEEDS CLARIFICATION, EXAMPLES
@deffn {Fun@value{cedilha}@~{a}o} intosum (@var{expr})
Move fatores multiplicativos fora de um somat@'{o}rio para dentro.
Se o @'{i}ndice for usado na
express@~{a}o de fora, ent@~{a}o a fun@value{cedilha}@~{a}o tentar@'{a} achar um @'{i}ndice
razo@'{a}vel, o mesmo que @'{e} feito para @code{sumcontract}.  Isso @'{e} essencialmente a
id@'{e}ia inversa da propriedade @code{outative} de somat@'{o}rios, mas note que isso
n@~{a}o remove essa propriedade, somente pula sua verifica@value{cedilha}@~{a}o.

@c WHAT ARE THESE CASES ??
Em alguns casos,
um @code{scanmap (multthru, @var{expr})} pode ser necess@'{a}rio antes de @code{intosum}.

@end deffn

@c NEEDS CLARIFICATION, EXAMPLES
@defvr {Declara@value{cedilha}@~{a}o} lassociative
@code{declare (g, lassociative)} diz ao
simplificador do Maxima que @code{g} @'{e} associativa @`a esquerda.  E.g., @code{g (g (a, b), g (c, d))} ir@'{a}
simplificar para @code{g (g (g (a, b), c), d)}.

@end defvr

@c NEEDS CLARIFICATION, EXAMPLES
@c WHAT'S UP WITH THE QUOTE MARKS ??
@defvr {Declara@value{cedilha}@~{a}o} linear
Uma das propriedades operativas do Maxima.  Para fun@value{cedilha}@~{o}es de uma @'{u}nica vari@'{a}vel @code{f} ent@~{a}o
declarada, a "expans@~{a}o" @code{f(x + y)} retorna @code{f(x) + f(y)},
@code{f(a*x)} retorna @code{a*f(x)} tomando
lugar onde @code{a} for uma "constante".  para fun@value{cedilha}@~{o}es de dois ou mais argumentos,
"linearidade" @'{e} definida para ser como no caso de @code{sum} ou @code{integrate},
i.e., @code{f (a*x + b, x)} retorna @code{a*f(x,x) + b*f(1,x)}
para @code{a} e @code{b} livres de @code{x}.

@code{linear} @'{e} equivalente a @code{additive} e @code{outative}.
Veja tamb@'{e}m @code{opproperties}.

@end defvr

@c NEEDS CLARIFICATION, EXAMPLES
@defvr {Declara@value{cedilha}@~{a}o} mainvar
Voc@^{e} pode declarar vari@'{a}veis para serem @code{mainvar} (vari@'{a}vel principal).  A escala de
ordena@value{cedilha}@~{a}o para @'{a}tomos @'{e} essencialmente: n@'{u}meros < constantes (e.g., @code{%e}, @code{%pi}) <
escalares < outras vari@'{a}veis < mainvars.  E.g., compare @code{expand ((X+Y)^4)}
com @code{(declare (x, mainvar), expand ((x+y)^4))}.  (Nota: Cuidado deve ser
tomado se voc@^{e} eleger o uso desse recurso acima.  E.g., se voc@^{e} subtrair uma
express@~{a}o na qual @code{x} for uma @code{mainvar} de uma na qual @code{x} n@~{a}o seja uma
@code{mainvar}, resimplifica@value{cedilha}@~{a}o e.g. com @code{ev (expr, simp)} pode ser
necess@'{a}ria se for para ocorrer um cancelamento.  Tamb@'{e}m, se voc@^{e} grava uma
express@~{a}o na qual @code{x} @'{e} uma @code{mainvar}, voc@^{e} provavelmente pode tamb@'{e}m gravar @code{x}.)

@end defvr

@c NEEDS EXAMPLES
@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} maxapplydepth
Valor padr@~{a}o: 10000

@code{maxapplydepth} @'{e} a m@'{a}xima defini@value{cedilha}@~{a}o para a qual @code{apply1}
e @code{apply2} ir@~{a}o pesquisar.

@end defvr

@c NEEDS EXAMPLES
@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} maxapplyheight
Valor padr@~{a}o: 10000

@code{maxapplyheight} @'{e} a eleva@value{cedilha}@~{a}o m@'{a}xima a qual @code{applyb1}
ir@'{a} alcan@value{cedilha}ar antes de abandonar.

@end defvr

@c NEEDS EXAMPLES
@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} maxnegex
Valor padr@~{a}o: 1000

@code{maxnegex} @'{e} o maior expoente negativo que ser@'{a}
expandido pelo comando @code{expand} (veja tamb@'{e}m @code{maxposex}).

@end defvr

@c NEEDS EXAMPLES
@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} maxposex
Valor padr@~{a}o: 1000

@code{maxposex} @'{e} o maior expoente que ser@'{a}
expandido com o comando @code{expand} (veja tamb@'{e}m @code{maxnegex}).

@end defvr

@c NEEDS EXAMPLES
@defvr {Declara@value{cedilha}@~{a}o} multiplicative
@code{declare (f, multiplicative)} diz ao simplificador do Maxima que @code{f} @'{e} multiplicativa.

@enumerate
@item
Se @code{f} for uma fun@value{cedilha}@~{a}o de uma @'{u}nica vari@'{a}vel, sempre que o simplificador encontrar @code{f} aplicada
a um produto, @code{f} distribue sobre aquele produto.  E.g., @code{f(x*y)}
simplifica para @code{f(x)*f(y)}.
@item
Se @code{f} @'{e} uma fun@value{cedilha}@~{a}o de 2 ou mais argumentos, multiplicatividade @'{e}
definida como multiplicatividade no primeiro argumento para @code{f}, e.g.,
@code{f (g(x) * h(x), x)} simplifica para @code{f (g(x) ,x) * f (h(x), x)}.
@end enumerate

Essa simplifica@value{cedilha}@~{a}o n@~{a}o ocorre quando @code{f} @'{e} aplicada a express@~{o}es da
forma @code{product (x[i], i, m, n)}.

@end defvr

@c NEEDS CLARIFICATION, EXAMPLES
@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} negdistrib
Valor padr@~{a}o: @code{true}

Quando @code{negdistrib} for @code{true}, -1 distribue
sobre uma express@~{a}o.  E.g., @code{-(x + y)} transforma-se em @code{- y - x}.  Mudando o valor de @code{negdistrib} para @code{false}
permitir@'{a} que @code{- (x + y)} seja mostrado como foi escrito.  Isso algumas vezes @'{e} @'{u}til
mas seja muito cuidadoso: como o sinalizador @code{simp}, isso @'{e} um sinalizador que voc@^{e} pode n@~{a}o
querer escolher para @code{false} como algo natural ou necess@'{a}rio com excess@~{a}o
de usar localmente no seu Maxima.

@end defvr

@c NEEDS CLARIFICATION, EXAMPLES
@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} negsumdispflag
Valor padr@~{a}o: @code{true}

Quando @code{negsumdispflag} for @code{true}, @code{x - y} @'{e} mostrado como @code{x - y}
em lugar de como @code{- y + x}.  Escolhendo isso para @code{false} faz com que a verifica@value{cedilha}@~{a}o especial em
visualiza@value{cedilha}@~{a}o para a diferen@value{cedilha}a das duas express@~{o}es n@~{a}o seja conclu@'{i}da.  Uma
aplica@value{cedilha}@~{a}o @'{e} que dessa forma @code{a + %i*b} e @code{a - %i*b} podem ambos serem mostrados pelo
mesmo caminho.

@end defvr

@c NEEDS CLARIFICATION, EXAMPLES
@c NEED TO MENTION THIS IS AN evflag
@defvr {S@'{i}mbolo especial} noeval
@code{noeval} suprime a fase de avalia@value{cedilha}@~{a}o de @code{ev}.  Isso @'{e} @'{u}til em
conjun@value{cedilha}@~{a}o com outros comutadores e para fazer com que express@~{o}es      
sejam resimplificadas sem serem reavaliadas.

@end defvr

@c NEEDS CLARIFICATION, EXAMPLES
@defvr {Declara@value{cedilha}@~{a}o} noun
@code{noun} @'{e} uma das op@value{cedilha}@~{o}es do comando @code{declare}.  Essa op@value{cedilha}@~{a}o faz com que um
fun@value{cedilha}@~{a}o seja declarada como "noun" (substantivo), significando que ela n@~{a}o deve ser avaliada
automaticamente.

@end defvr

@c NEEDS CLARIFICATION, EXAMPLES
@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} noundisp
Valor padr@~{a}o: @code{false}

Quando @code{noundisp} for @code{true}, substantivos (nouns) s@~{a}o mostrados com
um ap@'{o}strofo.  Esse comutador @'{e} sempre @code{true} quando mostrando defini@value{cedilha}@~{o}es de
fun@value{cedilha}@~{a}o.

@end defvr

@c NEEDS CLARIFICATION, EXAMPLES
@defvr {S@'{i}mbolo especial} nouns
@code{nouns} @'{e} um @code{evflag} (sinalizador de avalia@value{cedilha}@~{a}o). Quando usado como uma op@value{cedilha}@~{a}o para o comando @code{ev},
@code{nouns} converte todas as
formas substantivas ("noun") que ocorrem na express@~{a}o que est@'{a} sendo avaliada para verbos ("verbs"), i.e.,
avalia essas express@~{o}es.  Veja tamb@'{e}m @code{noun}, @code{nounify}, @code{verb}, e @code{verbify}.

@end defvr

@c NEEDS CLARIFICATION, EXAMPLES
@c WHAT ARE THE FUNCTIONS WHICH ARE EVALUATED IN FLOATING POINT ??
@c WHAT IS A "NUMERVAL" ?? (SOMETHING DIFFERENT FROM A NUMERIC VALUE ??)
@c NEED TO MENTION THIS IS AN evflag
@defvr {S@'{i}mbolo especial} numer
@code{numer} faz com que algumas fun@value{cedilha}@~{o}es matem@'{a}ticas (incluindo exponencia@value{cedilha}@~{a}o)
com argumentos num@'{e}ricos sejam avaliados em ponto flutuante. Isso faz com que
vari@'{a}veis em @code{expr} @`as quais tenham sido dados valores num@'{e}ricos a elas sejam substitu@'{i}das pelos
seus valores correspondentes.  @code{numer} tamb@'{e}m escolhe o sinalizador @code{float} para @code{on}.

@end defvr


@c NEEDS CLARIFICATION, EXAMPLES
@c HOW TO FIND ALL VARIABLES WHICH HAVE NUMERVALS ??
@deffn {Fun@value{cedilha}@~{a}o} numerval (@var{x_1}, @var{expr_1}, ..., @var{var_n}, @var{expr_n})
Declara as vari@'{a}veis @code{x_1}, ..., @var{x_n} para terem
valores num@'{e}ricos iguais a @code{expr_1}, ..., @code{expr_n}.
O valor num@'{e}rico @'{e} avaliado e substituido para a vari@'{a}vel
em quaisquer express@~{o}es na qual a vari@'{a}vel ocorra se o sinalizador @code{numer} for
@code{true}. Veja tamb@'{e}m @code{ev}.

As express@~{o}es @code{expr_1}, ..., @code{expr_n} podem ser quaisquer express@~{o}es,
n@~{a}o necessariamente num@'{e}ricas.
@end deffn


@defvr {Vari@'{a}vel de sistema} opproperties

@code{opproperties} @'{e} a lista de propriedades de operadores especiais reconhecidas pelo
simplificador do Maxima:
@code{linear}, @code{additive}, @code{multiplicative}, @code{outative} (veja logo abaixo), @code{evenfun},
@code{oddfun}, @code{commutative}, @code{symmetric}, @code{antisymmetric}, @code{nary}, 
@code{lassociative}, @code{rassociative}.

@end defvr


@c NEEDS CLARIFICATION, EXAMPLES
@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} opsubst
Valor padr@~{a}o: @code{true}

Quando @code{opsubst} for @code{false}, @code{subst} n@~{a}o tenta
substituir dentro de um operador de uma express@~{a}o.  E.g., 
@code{(opsubst: false, subst (x^2, r, r+r[0]))} ir@'{a} trabalhar.

@end defvr

@c NEEDS EXAMPLES
@defvr {Declara@value{cedilha}@~{a}o} outative
@code{declare (f, outative)} diz ao simplificador do Maxima que fatores constantes
no argumento de @code{f} podem ser puxados para fora.

@enumerate
@item
Se @code{f} for uma fun@value{cedilha}@~{a}o de uma @'{u}nica vari@'{a}vel, sempre que o simplificador encontrar @code{f} aplicada
a um produto, aquele produto ser@'{a} particionado em fatores que s@~{a}o
constantes e fatores que n@~{a}o s@~{a}o e os fatores constantes ser@~{a}o
puxados para fora.  E.g., @code{f(a*x)} simplificar@'{a} para @code{a*f(x)} onde @code{a} @'{e} uma
constante.  Fatores de constantes n@~{a}o at@^{o}micas n@~{a}o ser@~{a}o puxados para fora.
@item
Se @code{f} for uma fun@value{cedilha}@~{a}o de 2 ou mais argumentos, a coloca@value{cedilha}@~{a}o para fora @'{e} definida
como no caso de @code{sum} ou @code{integrate}, i.e., @code{f (a*g(x), x)} ir@'{a} simplificar
para @code{a * f(g(x), x)} sendo @code{a} livre de @code{x}.
@end enumerate

@code{sum}, @code{integrate}, e @code{limit} s@~{a}o todas @code{outative}.

@end defvr

@c NEEDS EXAMPLES
@defvr {Declara@value{cedilha}@~{a}o} posfun
@code{declare (f, posfun)} declara @code{f} para ser uma fun@value{cedilha}@~{a}o positiva.
@code{is (f(x) > 0)} retorna @code{true}.

@end defvr

@deffn {Fun@value{cedilha}@~{a}o} radcan (@var{expr})
Simplifica @var{expr}, que pode conter logar@'{i}tmos, exponenciais, e
radicais, convertendo essa express@~{a}o em uma forma que @'{e} can@^{o}nica sobre uma ampla
classe de express@~{o}es e uma dada ordena@value{cedilha}@~{a}o de vari@'{a}veis; isto @'{e}, todas
formas funcionalmente equivalentes s@~{a}o mapeadas em uma @'{u}nica forma.  Para uma
classe um tanto quanto ampla de express@~{o}es, @code{radcan} produz uma forma regular.
Duas express@~{o}es equivalentes nessa classe n@~{a}o possuem necess@'{a}riamente a
mesma apar@^{e}ncia, mas suas diferen@value{cedilha}as podem ser simplificadas por @code{radcan} para
zero.

Para algumas express@~{o}es @code{radcan} @'{e} que consome inteiramente o tempo.  Esse
@'{e} o custo de explorar certos relacionamentos entre os componentes da
express@~{a}o para simplifica@value{cedilha}@~{o}es baseadas sobre fatora@value{cedilha}@~{a}o e
expans@~{o}es de fra@value{cedilha}@~{a}o-parcial de expoentes.  

@c %e_to_numlog NEEDS ITS OWN @defvar !!!
@c DOESN'T APPEAR TO AFFECT radcan !!!
Quando @code{%e_to_numlog} for @code{true}, 
@code{%e^(r*log(expr))} simplifica para @code{expr^r} se @code{r} for um n@'{u}mero racional.

Quando @code{radexpand} for @code{false}, certas transforma@value{cedilha}@~{o}es s@~{a}o inibidas.
@code{radcan (sqrt (1-x))} permanece @code{sqrt (1-x)}
e n@~{a}o @'{e} simplificada para @code{%i sqrt (x-1)}. 
@code{radcan (sqrt (x^2 - 2*x + 11))} permanece @code{sqrt (x^2 - 2*x + 1)}
e n@~{a}o @'{e} simplificada para @code{x - 1}.

@c MERGE EXAMPLES INTO THIS FILE
@code{example (radcan)} mostra alguns exemplos.

@end deffn

@c NEEDS CLARIFICATION, EXAMPLES
@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} radexpand
Valor padr@~{a}o: @code{true}

@code{radexpand} controla algumas simplifica@value{cedilha}@~{o}es de radicais.

Quando @code{radexpand} for @code{all}, faz com que n-@'{e}simas ra@'{i}zes de
fatores de um produto que s@~{a}o pot@^{e}ncias de n sejam puxados para fora do
radical.  E.g. Se @code{radexpand} for @code{all}, @code{sqrt (16*x^2)} simplifica para @code{4*x}.

@c EXPRESS SIMPLIFICATON RULES IN GENERAL CASE, NOT SPECIAL CASE
Mais particularmente, considere @code{sqrt (x^2)}.
@itemize @bullet
@item
Se @code{radexpand} for @code{all} or @code{assume (x > 0)} tiver sido executado, 
@code{sqrt(x^2)} simplifica para @code{x}.
@item
Se @code{radexpand} for @code{true} e @code{domain} for @code{real} (isso @'{e} o padr@~{a}o), 
@code{sqrt(x^2)} simplifica para @code{abs(x)}.
@item
Se @code{radexpand} for @code{false}, ou @code{radexpand} for @code{true} e @code{domain} for @code{complex}, 
@code{sqrt(x^2)} n@~{a}o @'{e} simplificado.
@end itemize

@c CORRECT STATEMENT HERE ???
Note que @code{domain} somente interessa quando @code{radexpand} for @code{true}.

@end defvr


@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} radsubstflag
Valor padr@~{a}o: @code{false}

@code{radsubstflag}, se @code{true}, permite a @code{ratsubst} fazer
substitui@value{cedilha}@~{o}es tais como @code{u} por @code{sqrt (x)} em @code{x}.

@end defvr

@c NEEDS CLARIFICATION, EXAMPLES
@defvr {Declara@value{cedilha}@~{a}o} rassociative
@code{declare (g, rassociative)} diz ao simplificador do
Maxima que @code{g} @'{e} associativa @`a direita.  E.g.,
@code{g(g(a, b), g(c, d))} simplifica para @code{g(a, g(b, g(c, d)))}.

@end defvr

@c NEEDS CLARIFICATION, EXAMPLES
@deffn {Fun@value{cedilha}@~{a}o} scsimp (@var{expr}, @var{rule_1}, ..., @var{rule_n})
Simplifica@value{cedilha}@~{a}o Seq@"{u}@^{e}ncial Comparativa (m@'{e}todo devido a Stoute).
@code{scsimp} tenta simplificar @var{expr}
conforme as regras @var{rule_1}, ..., @var{rule_n}.
Se uma express@~{a}o pequena for obtida, o processo
repete-se.  De outra forma ap@'{o}s todas as simplifica@value{cedilha}@~{o}es serem tentadas, @code{scsimp} retorna
a resposta original.

@c MERGE EXAMPLES INTO THIS FILE
@code{example (scsimp)} mostra alguns exemplos.

@end deffn

@c NEEDS CLARIFICATION, EXAMPLES
@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} simpsum
Valor padr@~{a}o: @code{false}

Quando @code{simpsum} for @code{true}, o resultado de uma @code{sum} @'{e}
simplificado.  Essa simplifica@value{cedilha}@~{a}o pode algumas vezes estar apta a produzir uma
forma fechada.  Se @code{simpsum} for @code{false} ou se a forma com ap@'{o}strofo @code{'sum} for usada, o valor @'{e} uma
forma substantiva aditiva que @'{e} uma representa@value{cedilha}@~{a}o da nota@value{cedilha}@~{a}o sigma usada em
matem@'{a}tica.

@end defvr

@c NEEDS CLARIFICATION, EXAMPLES
@deffn {Fun@value{cedilha}@~{a}o} sumcontract (@var{expr})
Combina todas as parcelas de um somat@'{o}rio que possuem
limites superiores e inferiores que diferem por constantes. O resultado @'{e} uma
express@~{a}o contendo um somat@'{o}rio para cada escolha de cada tais somat@'{o}rios
adicionados a todos os termos extras apropriados que tiveram de ser extra@'{i}dos para a forma
dessa adi@value{cedilha}@~{a}o.  @code{sumcontract} combina todas as somas compat@'{i}veis e usa os
indices de uma as somas se puder, e ent@~{a}o tenta formar um
@'{i}ndice razo@'{a}vel se n@~{a}o for usar qualquer dos fornecidos.

@c WHEN IS intosum NECESSARY BEFORE sumcontract ??
Isso pode ser necess@'{a}rio fazer um @code{intosum (@var{expr})} antes de @code{sumcontract}.

@end deffn


@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} sumexpand
Valor padr@~{a}o: @code{false}

Quando @code{sumexpand} for @code{true}, produtos de somas e
somas exponeciadas simplificam para somas aninhadas.

Veja tamb@'{e}m @code{cauchysum}.

Exemplos:

@example
(%i1) sumexpand: true$
(%i2) sum (f (i), i, 0, m) * sum (g (j), j, 0, n);
                     m      n
                    ====   ====
                    \      \
(%o2)                >      >     f(i1) g(i2)
                    /      /
                    ====   ====
                    i1 = 0 i2 = 0
(%i3) sum (f (i), i, 0, m)^2;
                     m      m
                    ====   ====
                    \      \
(%o3)                >      >     f(i3) f(i4)
                    /      /
                    ====   ====
                    i3 = 0 i4 = 0
@end example

@end defvr

@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} sumsplitfact
Valor padr@~{a}o: @code{true}

Quando @code{sumsplitfact} for @code{false},
@c "IS APPLIED" -- UNDER WHAT CIRCUMSTANCES EXACTLY ??
@code{minfactorial} @'{e} aplicado ap@'{o}s um @code{factcomb}.

@end defvr

@c NEEDS CLARIFICATION, EXAMPLES
@defvr {Declara@value{cedilha}@~{a}o} symmetric
@code{declare (h, symmetric)} diz ao simplificador
do Maxima que @code{h} @'{e} uma fun@value{cedilha}@~{a}o sim@'{e}trica.  E.g., @code{h (x, z, y)} 
simplifica para @code{h (x, y, z)}.

@code{commutative} @'{e} sin@^{o}nimo de @code{symmetric}.

@end defvr


@deffn {Fun@value{cedilha}@~{a}o} unknown (@var{expr})
Retorna @code{true} se e somente se @var{expr} cont@'{e}m um operador ou fun@value{cedilha}@~{a}o
n@~{a}o reconhecida pelo simplificador do Maxima.

@end deffn
