Add symbol checks to translators for MCALL, MARRAYREF, and MARRAYSET
[maxima.git] / doc / info / ru / Contexts.texi
blobe53bd0be499e50b556494fee429848fe972221ae
1 @c Language=Russian
2 @c Encoding=UTF-8
3 @c File=Contexts.texi
4 @c OriginalRevision=1.14
5 @c TranslatedBy: (c) 2005-12 Vadim V. Zhytnikov <vvzhyt@gmail.ru>
7 @menu
8 * Функции для работы с контекстами::
9 @end menu
11 @node Функции для работы с контекстами,  , Контексты, Контексты
12 @section Функции для работы с контекстами
14 @deffn {Функция} activate (@var{context_1}, ..., @var{context_n})
15 Активизирует контексты @var{context_1}, ..., @var{context_n}.
16 Факты в этих контекстах становятся доступными для
17 процедур дедукции.  Факты в данных контекстах
18 не отображаются функцией @code{facts ()}.
20 Переменная @code{activecontexts} содержит список активных контекстов,
21 активированных с помощью @code{activate}.
23 @opencatbox{Категории:}
24 @category{Факты и выводы}
25 @closecatbox
27 @end deffn
29 @defvr {Системная переменная} activecontexts
30 Значение по умолчанию: @code{[]}
32 @code{activecontexts} -- список активных контекстов, активизированных
33 при помощи функции @code{activate}, в отличии от контекстов, которые
34 являются активными как подконтексты текущего контекста.
36 @opencatbox{Категории:}
37 @category{Факты и выводы}
38 @closecatbox
40 @end defvr
43 @anchor{assume}
44 @deffn {Функция} assume (@var{pred_1}, ..., @var{pred_n})
45 Добавляет предикаты @var{pred_1}, ..., @var{pred_n} к текущему контексту.
46 Если предикаты являются противоречивыми или избыточными
47 в текущем контексте, то добавление не производится.
48 Контекст объединяет все предикаты от всех вызовов @code{assume}.
50 @code{assume} возвращает список предикатов, добавленных к базе данных и
51 атомы @code{redundant} или @code{inconsistent} для избыточных
52 или противоречивых предикатов соответственно.
54 Предикаты @var{pred_1}, ..., @var{pred_n} могут быть только выражениями,
55 содержащими операторы отношения @code{< <= equal notequal >=} и @code{>}.
56 Предикаты не могут быть буквальными равенствами @code{=} или неравенствами @code{#} выражений,
57 и не могут включать функции-предикаты @code{integerp}.
59 Распознаются составные предикаты вида @code{@var{pred_1} and ... and @var{pred_n}},
60 но не предикаты @code{@var{pred_1} or ... or @var{pred_n}}.
61 Распознается @code{not @var{pred_k}}, если @var{pred_k} является предикатом отношения.
62 Выражения вида @code{not (@var{pred_1} and @var{pred_2})}
63 и @code{not (@var{pred_1} or @var{pred_2})} не распознаются.
65 Механизм дедукции Maxima не очень силен.  Существует много очевидных следствий,
66 которые не могут быть выведены @code{is}.
67 Это известная слабость.
69 @code{assume} вычисляет свои аргументы.
71 См. также @code{is}, @code{facts}, @code{forget}, @code{context} и @code{declare}.
73 Примеры:
75 @c ===beg===
76 @c assume (xx > 0, yy < -1, zz >= 0);
77 @c assume (aa < bb and bb < cc);
78 @c facts ();
79 @c is (xx > yy);
80 @c is (yy < -yy);
81 @c is (sinh (bb - aa) > 0);
82 @c forget (bb > aa);
83 @c prederror : false;
84 @c is (sinh (bb - aa) > 0);
85 @c is (bb^2 < cc^2);
86 @c ===end===
88 @example
89 (%i1) assume (xx > 0, yy < -1, zz >= 0);
90 (%o1)              [xx > 0, yy < - 1, zz >= 0]
91 (%i2) assume (aa < bb and bb < cc);
92 (%o2)                  [bb > aa, cc > bb]
93 (%i3) facts ();
94 (%o3)     [xx > 0, - 1 > yy, zz >= 0, bb > aa, cc > bb]
95 (%i4) is (xx > yy);
96 (%o4)                         true
97 (%i5) is (yy < -yy);
98 (%o5)                         true
99 (%i6) is (sinh (bb - aa) > 0);
100 (%o6)                         true
101 (%i7) forget (bb > aa);
102 (%o7)                       [bb > aa]
103 (%i8) prederror : false;
104 (%o8)                         false
105 (%i9) is (sinh (bb - aa) > 0);
106 (%o9)                        unknown
107 (%i10) is (bb^2 < cc^2);
108 (%o10)                       unknown
109 @end example
111 @opencatbox{Категории:}
112 @category{Факты и выводы}
113 @closecatbox
115 @end deffn
117 @defvr {Управляющая переменная} assumescalar
118 Значение по умолчанию: @code{true}
120 @code{assumescalar} определяет, что выражения @code{expr},
121 для которых @code{nonscalarp (expr)} равно @code{false},
122 рассматриваются как скаляры при некоторых преобразованиях.
124 Пусть @code{expr} есть выражение отличное от списка или матрицы,
125 и @code{[1, 2, 3]} есть список (или матрица).
126 Тогда @code{expr . [1, 2, 3]} дает @code{[expr, 2 expr, 3 expr]}
127 если @code{assumescalar} равно @code{true}, или @code{scalarp (expr)} равно
128 @code{true}, или @code{constantp (expr)} равно @code{true}.
130 Если @code{assumescalar} равно @code{true}, такие выражения
131 трактуются как скаляры только для коммутативных операций, но не
132 для некоммутативного умножения @code{.}.
134 Когда @code{assumescalar} равно @code{false}, такие
135 выражения трактуются как не-скалярные.
137 Когда @code{assumescalar} равно @code{all}, такие выражения
138 трактуются как скаляры для всех перечисленных выше операций,
139 включая некоммутативное умножение.
141 @opencatbox{Категории:}
142 @category{Факты и выводы}
143 @closecatbox
145 @end defvr
148 @defvr {Управляющая переменная} assume_pos
149 Значение по умолчанию: @code{false}
151 Если @code{assume_pos} равно @code{true}
152 и знак параметра @var{x} не может быть определен исходя из текущего контекста
153 @c WHAT ARE THOSE OTHER CONSIDERATIONS ??
154 или другим способом, тогда @code{sign} и @code{asksign (@var{x})} дают @code{true}.
155 Таким образом подавить некоторые автоматические запросы @code{asksign},
156 возникающие при работе @code{integrate} или других вычислениях.
158 По умолчанию параметр @var{x} таков, что @code{symbolp (@var{x})} или
159 @code{subvarp (@var{x})} истинны.  Класс выражений, которые могут
160 рассматриваться в качестве параметров, может в некоторой степени
161 изменяться с помощью переменной @code{assume_pos_pred}.
163 @code{sign} и @code{asksign} пытаются определить знак выражения
164 исходя из знаков операндов.  Например, если
165 @code{a} и @code{b} оба положительны, тогда @code{a + b}
166 тоже положительно.
168 Однако, невозможно совсем обойтись без интерактивных запросов @code{asksign}.
169 В частности, когда аргумент @code{asksign} является разницей
170 @code{@var{x} - @var{y}} или логарифмом @code{log(@var{x})},
171 тогда @code{asksign} всегда запросит пользователя о знаке параметра,
172 даже если @code{assume_pos} равно @code{true} и @code{assume_pos_pred}
173 есть функция, возвращающая @code{true} для всех аргументов.
175 @c NEED EXAMPLES HERE
177 @opencatbox{Категории:}
178 @category{Факты и выводы}
179 @closecatbox
181 @end defvr
184 @defvr {Управляющая переменная} assume_pos_pred
185 Значение по умолчанию: @code{false}
187 Если @code{assume_pos_pred} присвоено значение, являющееся именем
188 функции или лямбда-выражение с одним аргументом @var{x},
189 тогда эта функция вызывается для того чтобы определить
190 является ли @var{x} параметрам для  @code{assume_pos}.
191 @code{assume_pos_pred} игнорируется, когда @code{assume_pos} равно @code{false}.
193 Функция @code{assume_pos_pred} вызывается @code{sign} и @code{asksign}
194 с аргументом @var{x}, который является либо атомом, либо переменной
195 с индексом, либо вызовом функции.
196 Если @code{assume_pos_pred} возвращает @code{true},
197 тогда @var{x} рассматривается как допустимый параметр для @code{assume_pos}.
199 По умолчанию параметром является @var{x} ткой, что
200 @code{symbolp (@var{x})} или @code{subvarp (@var{x})} истинно.
202 См. также @code{assume} и @code{assume_pos}.
204 Примеры:
205 @c EXAMPLE OUTPUT GENERATED FROM:
206 @c assume_pos: true$
207 @c assume_pos_pred: symbolp$
208 @c sign (a);
209 @c sign (a[1]);
210 @c assume_pos_pred: lambda ([x], display (x), true)$
211 @c asksign (a);
212 @c asksign (a[1]);
213 @c asksign (foo (a));
214 @c asksign (foo (a) + bar (b));
215 @c asksign (log (a));
216 @c asksign (a - b);
218 @example
219 (%i1) assume_pos: true$
220 (%i2) assume_pos_pred: symbolp$
221 (%i3) sign (a);
222 (%o3)                          pos
223 (%i4) sign (a[1]);
224 (%o4)                          pnz
225 (%i5) assume_pos_pred: lambda ([x], display (x), true)$
226 (%i6) asksign (a);
227                               x = a
229 (%o6)                          pos
230 (%i7) asksign (a[1]);
231                              x = a
232                                   1
234 (%o7)                          pos
235 (%i8) asksign (foo (a));
236                            x = foo(a)
238 (%o8)                          pos
239 (%i9) asksign (foo (a) + bar (b));
240                            x = foo(a)
242                            x = bar(b)
244 (%o9)                          pos
245 (%i10) asksign (log (a));
246                               x = a
248 Is  a - 1  positive, negative, or zero?
251 (%o10)                         pos
252 (%i11) asksign (a - b);
253                               x = a
255                               x = b
257                               x = a
259                               x = b
261 Is  b - a  positive, negative, or zero?
264 (%o11)                         neg
265 @end example
267 @opencatbox{Категории:}
268 @category{Факты и выводы}
269 @closecatbox
271 @end defvr
274 @defvr {Управляющая переменная} context
275 Значение по умолчанию: @code{initial}
277 @code{context} служит для обозначения набора фактов формируемого при
278 помощи @code{assume} и @code{forget}.
279 @code{assume} добавляет факты к набору, обозначаемому @code{context},
280 а @code{forget} удаляет факты.
282 Присваивание @code{context} имени @var{foo} изменяет текущий контекст
283 на @var{foo}.  Если контекст с таким именем @var{foo} пока еще не
284 существует, то он автоматически создается вызовом функции
285 @code{newcontext}.
286 @c ISN'T THIS NEXT BIT EQUIVALENT TO THE FIRST ??
287 Указанный контекст автоматически активируется.
289 См. @code{contexts} для общего описания механизма контекстов.
291 @opencatbox{Категории:}
292 @category{Факты и выводы}
293 @closecatbox
295 @end defvr
297 @c UMM, I'M HAVING TROUBLE GETTING THE CONTEXT-SWITCHING STUFF TO BEHAVE AS EXPECTED
298 @c SOME EXAMPLES WILL HELP A LOT HERE
299 @defvr {Управляющая переменная} contexts
300 Значение по умолчанию: @code{[initial, global]}
302 @code{contexts} -- список существующих на данный момент контекстов,
303 включая активный.
305 Механизм контекстов позволяет пользователю создавать
306 поименованные наборы фактов (контексты).
307 В результате можно легко активировать или деактивировать
308 большие наборы фактов просто активируя или деактивируя
309 соответствующие контексты.
311 Любой символ может быть контекстом, и факты содержащиеся в этом
312 контексте сохраняются до тех пор пока не будут уничтожены
313 поодиночке с помощью @code{forget} или целиком с помощью @code{kill},
314 уничтожающем весь контекст, которому они принадлежат.
316 Контексты имеют иерархическую структуру.  Корневым элементом
317 всегда является контекст @code{global}, который содержит информацию о
318 Maxima нужную некоторым функциям.  Когда мы находимся в определенном
319 контексте, все его факты являются активными, т.е. используются
320 в логических выводах.  Аналогично активными являются все факты
321 в подконтекстах текущего контекста.
323 При запуске Maxima, активным является контекст @code{initial},
324 подконтекстом которого является @code{global}.
326 См. также @code{facts}, @code{newcontext},
327 @code{supcontext}, @code{killcontext}, @code{activate},
328 @code{deactivate}, @code{assume} и @code{forget}.
330 @opencatbox{Категории:}
331 @category{Факты и выводы}
332 @closecatbox
334 @end defvr
336 @deffn {Функция} deactivate (@var{context_1}, ..., @var{context_n})
337 Деактивирует все указанные контексты @var{context_1}, ..., @var{context_n}.
339 @opencatbox{Категории:}
340 @category{Факты и выводы}
341 @closecatbox
343 @end deffn
345 @deffn {Функция} facts (@var{item})
346 @deffnx {Функция} facts ()
347 Если @var{item} является именем контекста, тогда
348 @code{facts (@var{item})} возвращает список
349 содержащихся в нем фактов.
351 Если @var{item} не является именем контекста, тогда
352 @code{facts (@var{item})} возвращает список фактов известных о
353 @var{item} в текущем контексте.  Факты являющиеся активными, но
354 принадлежащие другим контекстам не отображаются.
356 @code{facts ()} (т.е. без аргументов) отображает все факты
357 текущего контекста.
359 @opencatbox{Категории:}
360 @category{Факты и выводы}
361 @closecatbox
363 @end deffn
365 @defvr {Декларация} features
366 Maxima "распознает" некоторые математические свойства (features)
367 функций и переменных.
369 @code{declare (@var{x}, @var{foo})} устанавливает свойство @var{foo}
370 для функции или переменной @var{x}.
372 @code{declare (@var{foo}, feature)} объявляет новое свойство @var{foo}.
373 Например,
374 @code{declare ([red, green, blue], feature)} объявляет три свойства
375 @code{red}, @code{green} и @code{blue}.
377 Предикат @code{featurep (@var{x}, @var{foo})}
378 возвращает @code{true} если @var{x} имеет свойство @var{foo},
379 и @code{false} в противном случае.
381 Информационный список @code{features} содержит все известные свойства.
382 А именно
383 @code{integer}, @code{noninteger}, @code{even}, @code{odd}, @code{rational},
384 @code{irrational}, @code{real}, @code{imaginary}, @code{complex},
385 @code{analytic}, @code{increasing}, @code{decreasing}, @code{oddfun},
386 @code{evenfun}, @code{posfun}, @code{commutative}, @code{lassociative},
387 @code{rassociative}, @code{symmetric} и @code{antisymmetric},
388 плюс свойства определенные пользователем.
390 @code{features} является списком математических свойств.
391 Существует также список нематематических, системо-зависимых свойств.
392 См. @code{status}.
394 @opencatbox{Категории:}
395 @category{Факты и выводы}
396 @closecatbox
398 @end defvr
400 @deffn {Функция} forget (@var{pred_1}, ..., @var{pred_n})
401 @deffnx {Функция} forget (@var{L})
402 Удаляет предикаты установленные @code{assume}.
403 Предикаты могут быть выражениями эквивалентными (но не
404 обязательно идентичными) тем, которые первоначально
405 были установлены с помощью @code{assume}.
407 @code{forget (@var{L})}, где @var{L} есть список предикатов,
408 удаляет все предикаты из данного списка.
410 @opencatbox{Категории:}
411 @category{Факты и выводы}
412 @closecatbox
414 @end deffn
416 @deffn {Функция} killcontext (@var{context_1}, ..., @var{context_n})
417 Уничтожает контексты @var{context_1}, ..., @var{context_n}.
419 Если один из уничтожаемых контекстов является текущим, то
420 в качестве нового текущего контекста выбирается первый доступный
421 не уничтожаемый подконтекст текущего.  Если первым доступным
422 контекстом является @code{global}, тогда используется @code{initial}.
423 Если @code{initial} тоже удаляется, то создается новый контекст @code{initial}.
425 @code{killcontext} отказывается удалять контекст, котрый является
426 активным по причине того, что является подконтекстом текущего
427 контекста или был активизирован функцией @code{activate}.
429 @code{killcontext} вычисляет свои аргументы.
430 @code{killcontext} возвращает @code{done}.
432 @opencatbox{Категории:}
433 @category{Факты и выводы}
434 @closecatbox
436 @end deffn
438 @deffn {Функция} newcontext (@var{name})
439 Создает новый пустой контекст с именем @var{name}, имеющий контекст
440 @code{global} в качестве своего подконтекста.  Новый контекст
441 становится текущим активным контекстом.
443 @code{newcontext} вычисляет свои аргумент.
444 @code{newcontext} возвращает @var{name}.
446 @opencatbox{Категории:}
447 @category{Факты и выводы}
448 @closecatbox
450 @end deffn
452 @deffn {Функция} supcontext (@var{name}, @var{context})
453 @deffnx {Функция} supcontext (@var{name})
454 Создает новый контекст с именем @var{name}, котрый
455 имеет @var{context} в качестве подконтекста.
456 @var{context} должен существовать.
458 Если @var{context} не указан, тогда подразумевается текущий контекст.
460 @opencatbox{Категории:}
461 @category{Факты и выводы}
462 @closecatbox
464 @end deffn