Активизирует контексты context_1, ..., context_n.
Факты в этих контекстах становятся доступными для
процедур дедукции. Факты в данных контекстах
не отображаются функцией facts ()
.
Переменная activecontexts
содержит список активных контекстов,
активированных с помощью activate
.
Значение по умолчанию: []
activecontexts
– список активных контекстов, активизированных
при помощи функции activate
, в отличии от контекстов, которые
являются активными как подконтексты текущего контекста.
Добавляет предикаты pred_1, ..., pred_n к текущему контексту.
Если предикаты являются противоречивыми или избыточными
в текущем контексте, то добавление не производится.
Контекст объединяет все предикаты от всех вызовов assume
.
assume
возвращает список предикатов, добавленных к базе данных и
атомы redundant
или inconsistent
для избыточных
или противоречивых предикатов соответственно.
Предикаты pred_1, ..., pred_n могут быть только выражениями,
содержащими операторы отношения < <= equal notequal >=
и >
.
Предикаты не могут быть буквальными равенствами =
или неравенствами #
выражений,
и не могут включать функции-предикаты integerp
.
Распознаются составные предикаты вида pred_1 and ... and pred_n
,
но не предикаты pred_1 or ... or pred_n
.
Распознается not pred_k
, если pred_k является предикатом отношения.
Выражения вида not (pred_1 and pred_2)
и not (pred_1 or pred_2)
не распознаются.
Механизм дедукции Maxima не очень силен. Существует много очевидных следствий,
которые не могут быть выведены is
.
Это известная слабость.
assume
вычисляет свои аргументы.
См. также is
, facts
, forget
, context
и declare
.
Примеры:
(%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
Значение по умолчанию: true
assumescalar
определяет, что выражения expr
,
для которых nonscalarp (expr)
равно false
,
рассматриваются как скаляры при некоторых преобразованиях.
Пусть expr
есть выражение отличное от списка или матрицы,
и [1, 2, 3]
есть список (или матрица).
Тогда expr . [1, 2, 3]
дает [expr, 2 expr, 3 expr]
если assumescalar
равно true
, или scalarp (expr)
равно
true
, или constantp (expr)
равно true
.
Если assumescalar
равно true
, такие выражения
трактуются как скаляры только для коммутативных операций, но не
для некоммутативного умножения .
.
Когда assumescalar
равно false
, такие
выражения трактуются как не-скалярные.
Когда assumescalar
равно all
, такие выражения
трактуются как скаляры для всех перечисленных выше операций,
включая некоммутативное умножение.
Значение по умолчанию: false
Если assume_pos
равно true
и знак параметра x не может быть определен исходя из текущего контекста
или другим способом, тогда sign
и asksign (x)
дают true
.
Таким образом подавить некоторые автоматические запросы asksign
,
возникающие при работе integrate
или других вычислениях.
По умолчанию параметр x таков, что symbolp (x)
или
subvarp (x)
истинны. Класс выражений, которые могут
рассматриваться в качестве параметров, может в некоторой степени
изменяться с помощью переменной assume_pos_pred
.
sign
и asksign
пытаются определить знак выражения
исходя из знаков операндов. Например, если
a
и b
оба положительны, тогда a + b
тоже положительно.
Однако, невозможно совсем обойтись без интерактивных запросов asksign
.
В частности, когда аргумент asksign
является разницей
x - y
или логарифмом log(x)
,
тогда asksign
всегда запросит пользователя о знаке параметра,
даже если assume_pos
равно true
и assume_pos_pred
есть функция, возвращающая true
для всех аргументов.
Значение по умолчанию: false
Если assume_pos_pred
присвоено значение, являющееся именем
функции или лямбда-выражение с одним аргументом x,
тогда эта функция вызывается для того чтобы определить
является ли x параметрам для assume_pos
.
assume_pos_pred
игнорируется, когда assume_pos
равно false
.
Функция assume_pos_pred
вызывается sign
и asksign
с аргументом x, который является либо атомом, либо переменной
с индексом, либо вызовом функции.
Если assume_pos_pred
возвращает true
,
тогда x рассматривается как допустимый параметр для assume_pos
.
По умолчанию параметром является x ткой, что
symbolp (x)
или subvarp (x)
истинно.
См. также assume
и assume_pos
.
Примеры:
(%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
Значение по умолчанию: initial
context
служит для обозначения набора фактов формируемого при
помощи assume
и forget
.
assume
добавляет факты к набору, обозначаемому context
,
а forget
удаляет факты.
Присваивание context
имени foo изменяет текущий контекст
на foo. Если контекст с таким именем foo пока еще не
существует, то он автоматически создается вызовом функции
newcontext
.
Указанный контекст автоматически активируется.
См. contexts
для общего описания механизма контекстов.
Значение по умолчанию: [initial, global]
contexts
– список существующих на данный момент контекстов,
включая активный.
Механизм контекстов позволяет пользователю создавать поименованные наборы фактов (контексты). В результате можно легко активировать или деактивировать большие наборы фактов просто активируя или деактивируя соответствующие контексты.
Любой символ может быть контекстом, и факты содержащиеся в этом
контексте сохраняются до тех пор пока не будут уничтожены
поодиночке с помощью forget
или целиком с помощью kill
,
уничтожающем весь контекст, которому они принадлежат.
Контексты имеют иерархическую структуру. Корневым элементом
всегда является контекст global
, который содержит информацию о
Maxima нужную некоторым функциям. Когда мы находимся в определенном
контексте, все его факты являются активными, т.е. используются
в логических выводах. Аналогично активными являются все факты
в подконтекстах текущего контекста.
При запуске Maxima, активным является контекст initial
,
подконтекстом которого является global
.
См. также facts
, newcontext
,
supcontext
, killcontext
, activate
,
deactivate
, assume
и forget
.
Деактивирует все указанные контексты context_1, ..., context_n.
Если item является именем контекста, тогда
facts (item)
возвращает список
содержащихся в нем фактов.
Если item не является именем контекста, тогда
facts (item)
возвращает список фактов известных о
item в текущем контексте. Факты являющиеся активными, но
принадлежащие другим контекстам не отображаются.
facts ()
(т.е. без аргументов) отображает все факты
текущего контекста.
Maxima "распознает" некоторые математические свойства (features) функций и переменных.
declare (x, foo)
устанавливает свойство foo
для функции или переменной x.
declare (foo, feature)
объявляет новое свойство foo.
Например,
declare ([red, green, blue], feature)
объявляет три свойства
red
, green
и blue
.
Предикат featurep (x, foo)
возвращает true
если x имеет свойство foo,
и false
в противном случае.
Информационный список features
содержит все известные свойства.
А именно
integer
, noninteger
, even
, odd
, rational
,
irrational
, real
, imaginary
, complex
,
analytic
, increasing
, decreasing
, oddfun
,
evenfun
, posfun
, commutative
, lassociative
,
rassociative
, symmetric
и antisymmetric
,
плюс свойства определенные пользователем.
features
является списком математических свойств.
Существует также список нематематических, системо-зависимых свойств.
См. status
.
Удаляет предикаты установленные assume
.
Предикаты могут быть выражениями эквивалентными (но не
обязательно идентичными) тем, которые первоначально
были установлены с помощью assume
.
forget (L)
, где L есть список предикатов,
удаляет все предикаты из данного списка.
Уничтожает контексты context_1, ..., context_n.
Если один из уничтожаемых контекстов является текущим, то
в качестве нового текущего контекста выбирается первый доступный
не уничтожаемый подконтекст текущего. Если первым доступным
контекстом является global
, тогда используется initial
.
Если initial
тоже удаляется, то создается новый контекст initial
.
killcontext
отказывается удалять контекст, котрый является
активным по причине того, что является подконтекстом текущего
контекста или был активизирован функцией activate
.
killcontext
вычисляет свои аргументы.
killcontext
возвращает done
.
Создает новый пустой контекст с именем name, имеющий контекст
global
в качестве своего подконтекста. Новый контекст
становится текущим активным контекстом.
newcontext
вычисляет свои аргумент.
newcontext
возвращает name.
Создает новый контекст с именем name, котрый имеет context в качестве подконтекста. context должен существовать.
Если context не указан, тогда подразумевается текущий контекст.