Definicedilhaões para Contextos
===============================

 -- Funcedilhaão: activate (CONTEXT_1, ..., CONTEXT_N)
     Ativa os contextos CONTEXT_1, ..., CONTEXT_N. Os factos nesses contextos estão então disponíveis para fazer deducedilhaões e recuperar informacedilhaão. Os factos nesses contextos não são listadas através de facts ().

     A variável activecontexts é a lista de contextos que estão activos pelo caminho da funcedilhaão activate.

 -- Variável de sistema: activecontexts
     Valor por omissão: []

     activecontexts é a lista de contextos que estão activos pelo caminho da funcedilhaão activate, em oposicedilhaão a sendo activo porque eles são subcontextos do contexto corrente.

 -- Funcedilhaão: assume (PRED_1, ..., PRED_N)
     Adiciona predicados PRED_1, ..., PRED_N ao contexto corrente. Se um predicado for incossistente ou redundante com os predicados no contexto corrente, esses predicados não são adicionados ao contexto. O contexto acumula predicados de cada chamada a assume.

     assume retorna uma lista cujos elementos são os predicados adicionados ao contexto ou os átomos redundant ou inconsistent onde for aplicável.

     Os predicados PRED_1, ..., PRED_N podem somente ser expressões com os operadores relacionais < <= equal notequal >= e >. Predicados não podem ser expressões de igualdades literais = ou expressões de desigualdades literais #, nem podem elas serem funcedilhaões de predicado tais como integerp.

     Predicados combinados da forma PRED_1 and ... and PRED_N são reconhecidos, mas não PRED_1 or ... or PRED_N. not PRED_K é reconhecidos se PRED_K for um predicado relacional. Expressões da forma not (PRED_1 e PRED_2) and not (PRED_1 or PRED_2) não são reconhecidas.

     O mecanismo de deducedilhaão do Maxima não é muito forte; exitem consequências muito óbvias as quais não podem ser determinadas por meio de is. Isso é uma fraqueza conhecida.

     assume avalia seus argumentos.

     Veja também is, facts, forget, context, e declare.

     Exemplos:

          (%i1) assume (xx > 0, yy < -1, zz >= 0);
          (%o1)              [xx > 0, yy < - 1, zz >= 0]
          (%i2) assume (aa < bb and bb < cc);
          (%o2)                  [bb > aa, cc > bb]
          (%i3) facts ();
          (%o3)     [xx > 0, - 1 > yy, zz >= 0, bb > aa, cc > bb]
          (%i4) is (xx > yy);
          (%o4)                         true
          (%i5) is (yy < -yy);
          (%o5)                         true
          (%i6) is (sinh (bb - aa) > 0);
          (%o6)                         true
          (%i7) forget (bb > aa);
          (%o7)                       [bb > aa]
          (%i8) prederror : false;
          (%o8)                         false
          (%i9) is (sinh (bb - aa) > 0);
          (%o9)                        unknown
          (%i10) is (bb^2 < cc^2);
          (%o10)                       unknown

 -- Variável de opcedilhaão: assumescalar
     Valor por omissão: true

     assumescalar ajuda a governar se expressões expr para as quais nonscalarp (expr) for false são assumidas comportar-se como escalares para certas transformacedilhaões.

     Tomemos expr representando qualquer expressão outra que não uma lista ou uma matriz, e tomemos [1, 2, 3] representando qualquer lista ou matriz. Então expr . [1, 2, 3] retorna [expr, 2 expr, 3 expr] se assumescalar for true, ou scalarp (expr) for true, ou constantp (expr) for true.

     Se assumescalar for true, tais expressões irão comportar-se como escalares somente para operadores comutativos, mas não para multiplicacedilhaão não comutativa ..

     Quando assumescalar for false, tais expressões irão comportar-se como não escalares.

     Quando assumescalar for all, tais expressões irão comportar-se como escalares para todos os operadores listados acima.

 -- Variável de opcedilhaão: assume_pos
     Valor por omissão: false

     Quando assume_pos for true e o sinal de um parâmetro X não pode ser determinado a partir do contexto corrente ou outras consideracedilhaões, sign e asksign (X) retornam true. Isso pode impedir algum questionamento de asksign gerado automaticamente, tal como pode surgir de integrate ou de outros cálculos.

     Por padrão, um parâmetro é X tal como symbolp (X) or subvarp (X). A classe de expressões consideradas parâmetros pode ser modificada para alguma abrangência através da variável assume_pos_pred.

     sign e asksign tentam deduzir o sinal de expressões a partir de sinais de operandos dentro da expressão. Por exemplo, se a e b são ambos positivos, então a + b é também positivo.

     Todavia, não existe caminho para desviar todos os questionamentos de asksign. Particularmente, quando o argumento de asksign for uma diferencedilhaa X - Y ou um logaritmo log(X), asksign sempre solicita uma entrada ao utilizador, mesmo quando assume_pos for true e assume_pos_pred for uma funcedilhaão que retorna true para todos os argumentos.

 -- Variável de opcedilhaão: assume_pos_pred
     Valor por omissão: false

     Quando assume_pos_pred for atribuído o nome de uma funcedilhaão ou uma expressão lambda de um argumento X, aquela funcedilhaão é chamada para determinar se X é considerado um parâmetro para o propósito de assume_pos. assume_pos_pred é ignorado quando assume_pos for false.

     A funcedilhaão assume_pos_pred é chamada através de sign e de asksign com um argumento X que é ou um átomo, uma variável subscrita, ou uma expressão de chamada de funcedilhaão. Se a funcedilhaão assume_pos_pred retorna true, X é considerado um parâmetro para o propósito de assume_pos.

     Por padrão, um parâmetro é X tal que symbolp (x) ou subvarp (x).

     Veja também assume e assume_pos.

     Exemplos:

          (%i1) assume_pos: true$
          (%i2) assume_pos_pred: symbolp$
          (%i3) sign (a);
          (%o3)                          pos
          (%i4) sign (a[1]);
          (%o4)                          pnz
          (%i5) assume_pos_pred: lambda ([x], display (x), true)$
          (%i6) asksign (a);
                                        x = a

          (%o6)                          pos
          (%i7) asksign (a[1]);
                                       x = a
                                            1

          (%o7)                          pos
          (%i8) asksign (foo (a));
                                     x = foo(a)

          (%o8)                          pos
          (%i9) asksign (foo (a) + bar (b));
                                     x = foo(a)

                                     x = bar(b)

          (%o9)                          pos
          (%i10) asksign (log (a));
                                        x = a

          Is  a - 1  positive, negative, or zero?

          p;
          (%o10)                         pos
          (%i11) asksign (a - b);
                                        x = a

                                        x = b

                                        x = a

                                        x = b

          Is  b - a  positive, negative, or zero?

          p;
          (%o11)                         neg

 -- Variável de opcedilhaão: context
     Valor por omissão: initial

     context nomeia a colecção de factos mantida através de assume e forget. assume adiciona factos à colecção nomeada através de context, enquanto forget remove factos.

     Associando context para um nome FOO altera o contexto corrente para FOO. Se o contexto especificado FOO não existe ainda, ele é criado automaticamente através de uma chamada a newcontext. O contexto especificado é activado automaticamente.

     Veja contexts para uma descricedilhaão geral do mecanismo de contexto.

 -- Variável de opcedilhaão: contexts
     Valor por omissão: [initial, global]

     contexts é uma lista dos contextos que existem actualmente, incluindo o contexto activo actualmente.

     O mecanismo de contexto torna possível para um utilizador associar e nomear uma porcedilhaão seleccionada de factos, chamada um contexto. Assim que isso for concluído, o utilizador pode ter o Maxima assumindo ou esquecendo grande quantidade de factos meramente através da activacedilhaão ou desativacedilhaão seu contexto.

     Qualquer átomo simbólico pode ser um contexto, e os factos contidos naquele contexto irão ser retidos em armazenamento até que sejam destruídos um por um através de chamadas a forget ou destruídos com um conjunto através de uma chamada a kill para destruir o contexto que eles pertencem.

     Contextos existem em uma hierarquía, com o raíz sempre sendo o contexto global, que contém informacedilhaões sobre Maxima que alguma funcedilhaão precisa.  Quando em um contexto dado, todos os factos naquele contexto estão "ativos" (significando que eles são usados em deducedilhaões e recuperados) como estão também todos os factos em qualquer contexto que for um subcontexto do contexto activo.

     Quando um novo Maxima for iniciado, o utilizador está em um contexto chamado initial, que tem global como um subcontexto.

     Veja também facts, newcontext, supcontext, killcontext, activate, deactivate, assume, e forget.

 -- Funcedilhaão: deactivate (CONTEXT_1, ..., CONTEXT_N)
     Desativa os contextos especificados CONTEXT_1, ..., CONTEXT_N.

 -- Funcedilhaão: facts (ITEM)
 -- Funcedilhaão: facts ()
     Se ITEM for o nome de um contexto, facts (ITEM) retorna uma lista de factos no contexto especificado.

     Se ITEM não for o nome de um contexto, facts (ITEM) retorna uma lista de factos conhecidos sobre ITEM no contexto actual.  Fatos que estão atuvos, mas em um diferente contexto, não são listados.

     facts () (i.e., sem argumento) lista o contexto actual.

 -- Declaracedilhaão: features
     Maxima recnhece ceertas propriedades matemáticas de funcedilhaões e variáveis. Essas são chamadas "recursos".

     declare (X, FOO) fornece a propriedade FOO para a funcedilhaão ou variável X.

     declare (FOO, recurso) declara um novo recurso FOO. Por exemplo, declare ([red, green, blue], feature) declara três novos recursos, red, green, e blue.

     O predicado featurep (X, FOO) retorna true se X possui a propriedade FOO, e false de outra forma.

     A infolista features é uma lista de recursos conhecidos. São esses integer, noninteger, even, odd, rational, irrational, real, imaginary, complex, analytic, increasing, decreasing, oddfun, evenfun, posfun, commutative, lassociative, rassociative, symmetric, e antisymmetric, mais quaisquer recursos definidos pelo utilizador.

     features é uma lista de recursos matemáticos. Existe também uma lista de recursos não matemáticos, recursos dependentes do sistema. Veja status.

 -- Funcedilhaão: forget (PRED_1, ..., PRED_N)
 -- Funcedilhaão: forget (L)
     Remove predicados estabelecidos através de assume. Os predicados podem ser expressões equivalentes a (mas não necessáriamente idênticas a) esses prevamentes assumidos.

     forget (L), onde L é uma lista de predicados, esquece cada item da lista.

 -- Funcedilhaão: killcontext (CONTEXT_1, ..., CONTEXT_N)
     Mata os contextos CONTEXT_1, ..., CONTEXT_N.

     Se um dos contextos estiver for o contexto actual, o novo contexto actual irá tornar-se o primeiro subcontexto disponível do contexto actual que não tiver sido morto.  Se o primeiro contexto disponível não morto for global então initial é usado em seu lugar.  Se o contexto initial for morto, um novo, porém vazio contexto initial é criado.

     killcontext recusa-se a matar um contexto que estiver ativo actualmente, ou porque ele é um subcontexto do contexto actual, ou através do uso da funcedilhaão activate.

     killcontext avalia seus argumentos. killcontext retorna done.

 -- Funcedilhaão: newcontext (NOME)
     Cria um novo contexto, porém vazio, chamado NOME, que tem global como seu único subcontexto.  O contexto recentemente criado torna-se o contexto activo actualmente.

     newcontext avalia seu argumento. newcontext retorna NOME.

 -- Funcedilhaão: supcontext (NOME, CONTEXT)
 -- Funcedilhaão: supcontext (NOME)
     Cria um novo contexto, chamado NOME, que tem CONTEXT como um subcontexto. CONTEXT deve existir.

     Se CONTEXT não for especificado, o contexto actual é assumido.