1 @c Language: Brazilian Portuguese, Encoding: iso-8859-1
2 @c /Contexts.texi/1.13/Sat Jun 2 00:12:34 2007/-ko/
3 @c end concepts Contexts
5 * Funções e Variáveis Definidas para Contextos::
8 @node Funções e Variáveis Definidas para Contextos, , Contextos, Contextos
9 @section Funções e Variáveis Definidas para Contextos
11 @deffn {Função} activate (@var{context_1}, ..., @var{context_n})
12 Ativa os contextos @var{context_1}, ..., @var{context_n}.
13 Os fatos nesses contextos estão então disponíveis para
14 fazer deduções e recuperar informação.
15 Os fatos nesses contextos não são listadas através de @code{facts ()}.
17 A variável @code{activecontexts} é a lista
18 de contextos que estão ativos pelo caminho da função @code{activate}.
22 @defvr {Variável de sistema} activecontexts
23 Valor padrão: @code{[]}
25 @code{activecontexts} é a lista de contextos que estão ativos
26 pelo caminho da função @code{activate}, em oposição a sendo ativo porque
27 eles são subcontextos do contexto corrente.
31 @deffn {Função} assume (@var{pred_1}, ..., @var{pred_n})
32 Adiciona predicados @var{pred_1}, ..., @var{pred_n} ao contexto corrente.
33 Se um predicado for incossistente ou redundante
34 com os predicados no contexto corrente,
35 esses predicados não são adicionados ao contexto.
36 O contexto acumula predicados de cada chamada a @code{assume}.
38 @code{assume} retorna uma lista cujos elementos são os predicados adicionados ao contexto
39 ou os átomos @code{redundant} ou @code{inconsistent} onde for aplicável.
41 Os predicados @var{pred_1}, ..., @var{pred_n} podem somente ser expressões
42 com os operadores relacionais @code{< <= equal notequal >=} e @code{>}.
43 Predicados não podem ser expressões de igualdades literais @code{=} ou expressões de desigualdades literais @code{#},
44 nem podem elas serem funções de predicado tais como @code{integerp}.
46 Predicados combinados da forma @code{@var{pred_1} and ... and @var{pred_n}}
48 mas não @code{@var{pred_1} or ... or @var{pred_n}}.
49 @code{not @var{pred_k}} é reconhecidos se @var{pred_k} for um predicado relacional.
50 Expressões da forma @code{not (@var{pred_1} e @var{pred_2})}
51 and @code{not (@var{pred_1} or @var{pred_2})}
54 O mecanismo de dedução do Maxima não é muito forte;
55 exitem conseq@"{u}ências muito óbvias as quais não podem ser determinadas por meio de @code{is}.
56 Isso é uma fraqueza conhecida.
58 @code{assume} avalia seus argumentos.
60 Veja também @code{is}, @code{facts}, @code{forget}, @code{context}, e @code{declare}.
65 @c assume (xx > 0, yy < -1, zz >= 0);
66 @c assume (aa < bb and bb < cc);
70 @c is (sinh (bb - aa) > 0);
73 @c is (sinh (bb - aa) > 0);
78 (%i1) assume (xx > 0, yy < -1, zz >= 0);
79 (%o1) [xx > 0, yy < - 1, zz >= 0]
80 (%i2) assume (aa < bb and bb < cc);
81 (%o2) [bb > aa, cc > bb]
83 (%o3) [xx > 0, - 1 > yy, zz >= 0, bb > aa, cc > bb]
88 (%i6) is (sinh (bb - aa) > 0);
90 (%i7) forget (bb > aa);
92 (%i8) prederror : false;
94 (%i9) is (sinh (bb - aa) > 0);
96 (%i10) is (bb^2 < cc^2);
102 @defvr {Variável de opção} assumescalar
103 Valor padrão: @code{true}
105 @code{assumescalar} ajuda a governar se expressões @code{expr}
106 para as quais @code{nonscalarp (expr)} for @code{false}
107 são assumidas comportar-se como escalares
108 para certas transformações.
110 Tomemos @code{expr} representando qualquer expressão outra que não uma lista ou uma matriz,
111 e tomemos @code{[1, 2, 3]} representando qualquer lista ou matriz.
112 Então @code{expr . [1, 2, 3]} retorna @code{[expr, 2 expr, 3 expr]}
113 se @code{assumescalar} for @code{true}, ou @code{scalarp (expr)} for
114 @code{true}, ou @code{constantp (expr)} for @code{true}.
116 Se @code{assumescalar} for @code{true}, tais
117 expressões irão comportar-se como escalares somente para operadores
118 comutativos, mas não para multiplicação não comutativa @code{.}.
120 Quando @code{assumescalar} for @code{false}, tais
121 expressões irão comportar-se como não escalares.
123 Quando @code{assumescalar} for @code{all},
124 tais expressões irão comportar-se como escalares para todos os operadores listados
130 @defvr {Variável de opção} assume_pos
131 Valor padrão: @code{false}
133 Quando @code{assume_pos} for @code{true}
134 e o sinal de um parâmetro @var{x} não pode ser determinado a partir do contexto corrente
135 ou outras considerações,
136 @code{sign} e @code{asksign (@var{x})} retornam @code{true}.
137 Isso pode impedir algum questionamento de @code{asksign} gerado automaticamente,
138 tal como pode surgir de @code{integrate} ou de outros cálculos.
140 Por padrão, um parâmetro é @var{x} tal como @code{symbolp (@var{x})}
141 or @code{subvarp (@var{x})}.
142 A classe de expressões consideradas parâmetros pode ser modificada para alguma abrangência
143 através da variável @code{assume_pos_pred}.
145 @code{sign} e @code{asksign} tentam deduzir o sinal de expressões
146 a partir de sinais de operandos dentro da expressão.
147 Por exemplo, se @code{a} e @code{b} são ambos positivos,
148 então @code{a + b} é também positivo.
150 Todavia, não existe caminho para desviar todos os questionamentos de @code{asksign}.
151 Particularmente, quando o argumento de @code{asksign} for uma
152 diferença @code{@var{x} - @var{y}} ou um logarítmo @code{log(@var{x})},
153 @code{asksign} sempre solicita uma entrada ao usuário,
154 mesmo quando @code{assume_pos} for @code{true} e @code{assume_pos_pred} for
155 uma função que retorna @code{true} para todos os argumentos.
157 @c NEED EXAMPLES HERE
161 @defvr {Variável de opção} assume_pos_pred
162 Valor padrão: @code{false}
164 Quando @code{assume_pos_pred} for atribuído o nome de uma função
165 ou uma expressão lambda de um argumento @var{x},
166 aquela função é chamada para determinar
167 se @var{x} é considerado um parâmetro para o propósito de @code{assume_pos}.
168 @code{assume_pos_pred} é ignorado quando @code{assume_pos} for @code{false}.
170 A função @code{assume_pos_pred} é chamada através de @code{sign} e de @code{asksign}
171 com um argumento @var{x}
172 que é ou um átomo, uma variável subscrita, ou uma expressão de chamada de função.
173 Se a função @code{assume_pos_pred} retorna @code{true},
174 @var{x} é considerado um parâmetro para o propósito de @code{assume_pos}.
176 Por padrão, um parâmetro é @var{x} tal que @code{symbolp (x)}
177 ou @code{subvarp (x)}.
179 Veja também @code{assume} e @code{assume_pos}.
182 @c EXAMPLE OUTPUT GENERATED FROM:
184 @c assume_pos_pred: symbolp$
187 @c assume_pos_pred: lambda ([x], display (x), true)$
190 @c asksign (foo (a));
191 @c asksign (foo (a) + bar (b));
192 @c asksign (log (a));
196 (%i1) assume_pos: true$
197 (%i2) assume_pos_pred: symbolp$
202 (%i5) assume_pos_pred: lambda ([x], display (x), true)$
207 (%i7) asksign (a[1]);
212 (%i8) asksign (foo (a));
216 (%i9) asksign (foo (a) + bar (b));
222 (%i10) asksign (log (a));
225 Is a - 1 positive, negative, or zero?
229 (%i11) asksign (a - b);
238 Is b - a positive, negative, or zero?
247 @defvr {Variável de opção} context
248 Valor padrão: @code{initial}
250 @code{context} nomeia a coleção de fatos mantida através de @code{assume} e @code{forget}.
251 @code{assume} adiciona fatos à coleção nomeada através de @code{context},
252 enquanto @code{forget} remove fatos.
254 Associando @code{context} para um nome @var{foo} altera o contexto corrente para @var{foo}.
255 Se o contexto especificado @var{foo} não existe ainda,
256 ele é criado automaticamente através de uma chamada a @code{newcontext}.
257 @c ISN'T THIS NEXT BIT EQUIVALENT TO THE FIRST ??
258 O contexto especificado é ativado automaticamente.
260 Veja @code{contexts} para uma descrição geral do mecanismo de contexto.
264 @c UMM, I'M HAVING TROUBLE GETTING THE CONTEXT-SWITCHING STUFF TO BEHAVE AS EXPECTED
265 @c SOME EXAMPLES WILL HELP A LOT HERE
266 @defvr {Variável de opção} contexts
267 Valor padrão: @code{[initial, global]}
269 @code{contexts} é uma lista dos contextos que
270 existem atualmente, incluindo o contexto ativo atualmente.
272 O mecanismo de contexto torna possível para um usuário associar
273 e nomear uma porção selecionada de fatos, chamada um contexto.
274 Assim que isso for concluído, o usuário pode ter o Maxima assumindo ou esquecendo grande quantidade
275 de fatos meramente através da ativação ou desativação seu contexto.
277 Qualquer átomo simbólico pode ser um contexto, e os fatos contidos naquele
278 contexto irão ser retidos em armazenamento até que sejam destruídos um por um
279 através de chamadas a @code{forget} ou destruídos com um conjunto através de uma chamada a @code{kill}
280 para destruir o contexto que eles pertencem.
282 Contextos existem em uma hierarquía, com o raíz sempre sendo
283 o contexto @code{global}, que contém informações sobre Maxima que alguma
284 função precisa. Quando em um contexto dado, todos os fatos naquele
285 contexto estão "ativos" (significando que eles são usados em deduções e
286 recuperados) como estão também todos os fatos em qualquer contexto que for um subcontexto
289 Quando um novo Maxima for iniciado, o usuário está em um
290 contexto chamado @code{initial}, que tem @code{global} como um subcontexto.
292 Veja também @code{facts}, @code{newcontext},
293 @code{supcontext}, @code{killcontext}, @code{activate}, @code{deactivate}, @code{assume}, e @code{forget}.
297 @deffn {Função} deactivate (@var{context_1}, ..., @var{context_n})
298 Desativa os contextos especificados @var{context_1}, ..., @var{context_n}.
302 @deffn {Função} facts (@var{item})
303 @deffnx {Função} facts ()
304 Se @var{item} for o nome de um contexto,
305 @code{facts (@var{item})} retorna uma lista
306 de fatos no contexto especificado.
308 Se @var{item} não for o nome de um contexto,
309 @code{facts (@var{item})} retorna uma lista de fatos conhecidos sobre @var{item} no contexto
310 atual. Fatos que estão atuvos, mas em um diferente contexto, não são listados.
312 @code{facts ()} (i.e., sem argumento) lista o contexto atual.
316 @defvr {Declaração} features
317 Maxima recnhece ceertas propriedades matemáticas de funções e variáveis.
318 Essas são chamadas "recursos".
320 @code{declare (@var{x}, @var{foo})} fornece a propriedade @var{foo} para a função ou variável @var{x}.
322 @code{declare (@var{foo}, recurso)} declara um novo recurso @var{foo}.
324 @code{declare ([red, green, blue], feature)}
325 declara três novos recursos, @code{red}, @code{green}, e @code{blue}.
327 O predicado @code{featurep (@var{x}, @var{foo})}
328 retorna @code{true} se @var{x} possui a propriedade @var{foo},
329 e @code{false} de outra forma.
331 A infolista @code{features} é uma lista de recursos conhecidos.
333 @code{integer}, @code{noninteger}, @code{even}, @code{odd}, @code{rational},
334 @code{irrational}, @code{real}, @code{imaginary}, @code{complex},
335 @code{analytic}, @code{increasing}, @code{decreasing}, @code{oddfun},
336 @code{evenfun}, @code{posfun}, @code{commutative}, @code{lassociative},
337 @code{rassociative}, @code{symmetric}, e @code{antisymmetric},
338 mais quaisquer recursos definidos pelo usuário.
340 @code{features} é uma lista de recursos matemáticos.
341 Existe também uma lista de recursos não matemáticos, recursos dependentes do sistema. Veja @code{status}.
345 @deffn {Função} forget (@var{pred_1}, ..., @var{pred_n})
346 @deffnx {Função} forget (@var{L})
347 Remove predicados estabelecidos através de @code{assume}.
348 Os predicados podem ser expressões equivalentes a (mas não necessáriamente idênticas a)
349 esses prevamentes assumidos.
351 @code{forget (@var{L})}, onde @var{L} é uma lista de predicados,
352 esquece cada item da lista.
356 @deffn {Função} killcontext (@var{context_1}, ..., @var{context_n})
357 Mata os contextos @var{context_1}, ..., @var{context_n}.
359 Se um dos contextos estiver for o contexto atual, o novo contexto
360 atual irá tornar-se o primeiro subcontexto disponível do contexto
361 atual que não tiver sido morto. Se o primeiro contexto disponível
362 não morto for @code{global} então @code{initial} é usado em seu lugar. Se o contexto
363 @code{initial} for morto, um novo, porém vazio contexto @code{initial} é criado.
365 @code{killcontext} recusa-se a matar um contexto que estiver
366 ativo atualmente, ou porque ele é um subcontexto do contexto
367 atual, ou através do uso da função @code{activate}.
369 @code{killcontext} avalia seus argumentos.
370 @code{killcontext} retorna @code{done}.
374 @deffn {Função} newcontext (@var{nome})
375 Cria um novo contexto, porém vazio, chamado @var{nome}, que
376 tem @code{global} como seu único subcontexto. O contexto recentemente criado
377 torna-se o contexto ativo atualmente.
379 @code{newcontext} avalia seu argumento.
380 @code{newcontext} retorna @var{nome}.
384 @deffn {Função} supcontext (@var{nome}, @var{context})
385 @deffnx {Função} supcontext (@var{nome})
386 Cria um novo contexto, chamado @var{nome},
387 que tem @var{context} como um subcontexto.
388 @var{context} deve existir.
390 Se @var{context} não for especificado, o contexto atual é assumido.