Manual do Maxima: 11. Contextos

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Índice] | [ ? ]

# 11. Contextos

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Índice] | [ ? ]

## 11.1 Funções e Variáveis Definidas para Contextos

Função: activate (context_1, ..., context_n)

  Ativa os contextos context_1, ..., context_n. Os fatos nesses contextos estão então disponíveis para fazer deduções e recuperar informação. Os fatos nesses contextos não são listadas através de `facts ()`.

  A variável `activecontexts` é a lista de contextos que estão ativos pelo caminho da função `activate`.

Variável de sistema: activecontexts

  Valor padrão: `[]`

  `activecontexts` é a lista de contextos que estão ativos pelo caminho da função `activate`, em oposição a sendo ativo porque eles são subcontextos do contexto corrente.

Funçã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 funçõ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 dedução do Maxima não é muito forte; exitem conseqüê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 opção: assumescalar

  Valor padrã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 transformaçõ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 multiplicaçã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 opção: assume_pos

  Valor padrã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 consideraçõ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 diferença `x - y` ou um logarítmo `log(x)`, `asksign` sempre solicita uma entrada ao usuário, mesmo quando `assume_pos` for `true` e `assume_pos_pred` for uma função que retorna `true` para todos os argumentos.

Variável de opção: assume_pos_pred

  Valor padrão: `false`

  Quando `assume_pos_pred` for atribuído o nome de uma função ou uma expressão lambda de um argumento x, aquela funçã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 funçã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 função. Se a funçã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 opção: context

  Valor padrão: `initial`

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

  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 é ativado automaticamente.

  Veja `contexts` para uma descrição geral do mecanismo de contexto.

Variável de opção: contexts

  Valor padrão: `[initial, global]`

  `contexts` é uma lista dos contextos que existem atualmente, incluindo o contexto ativo atualmente.

  O mecanismo de contexto torna possível para um usuário associar e nomear uma porção selecionada de fatos, chamada um contexto. Assim que isso for concluído, o usuário pode ter o Maxima assumindo ou esquecendo grande quantidade de fatos meramente através da ativação ou desativação seu contexto.

  Qualquer átomo simbólico pode ser um contexto, e os fatos 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 informações sobre Maxima que alguma função precisa. Quando em um contexto dado, todos os fatos naquele contexto estão "ativos" (significando que eles são usados em deduções e recuperados) como estão também todos os fatos em qualquer contexto que for um subcontexto do contexto ativo.

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

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

Função: deactivate (context_1, ..., context_n)

  Desativa os contextos especificados context_1, ..., context_n.

Função: facts (item)
Função: facts ()

  Se item for o nome de um contexto, `facts (item)` retorna uma lista de fatos no contexto especificado.

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

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

Declaração: features

  Maxima recnhece ceertas propriedades matemáticas de funções e variáveis. Essas são chamadas "recursos".

  `declare (x, foo)` fornece a propriedade foo para a funçã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 usuário.

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

Função: forget (pred_1, ..., pred_n)
Funçã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.

Função: killcontext (context_1, ..., context_n)

  Mata os contextos context_1, ..., context_n.

  Se um dos contextos estiver for o contexto atual, o novo contexto atual irá tornar-se o primeiro subcontexto disponível do contexto atual 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 atualmente, ou porque ele é um subcontexto do contexto atual, ou através do uso da função `activate`.

  `killcontext` avalia seus argumentos. `killcontext` retorna `done`.

Funçã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 ativo atualmente.

  `newcontext` avalia seu argumento. `newcontext` retorna nome.

Função: supcontext (nome, context)
Funçã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 atual é assumido.

[ << ] | [ >> ] |  |  |  |  |  | [Top] | [Contents] | [Índice] | [ ? ]

This document was generated by Robert Dodier on Dezembro, 29 2019 using texi2html 1.76.