Function: assume (<pred_1>, ..., <pred_n>) Adds predicates <pred_1>, ..., <pred_n> to the current context. If a predicate is inconsistent or redundant with the predicates in the current context, it is not added to the context. The context accumulates predicates from each call to
assume returns a list whose elements are the predicates added to the context or the atoms
inconsistent where applicable.
The predicates <pred_1>, ..., <pred_n> can only be expressions with the relational operators
< <= equal notequal >= and
>. Predicates cannot be literal equality
= or literal inequality
# expressions, nor can they be predicate functions such as
Compound predicates of the form
<pred_1> and ... and <pred_n> are recognized, but not
<pred_1> or ... or <pred_n>.
not <pred_k> is recognized if <pred_k> is a relational predicate. Expressions of the form
not (<pred_1> and <pred_2>) and
not (<pred_1> or <pred_2>) are not recognized.
Maximas deduction mechanism is not very strong; there are many obvious consequences which cannot be determined by
is. This is a known weakness.
assume does not handle predicates with complex numbers. If a predicate contains a complex number
assume evaluates its arguments.
(%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
There are also some inexact matches for
?? assume to see them.
(%o1) true (%i2)
eq2:diff(r(t), t, 2)=0;