Stop maxima from asking positive, negative or zero
You can use assume
. From Maxima's own documentation:
-- Function: assume (, ..., ) Adds predicates , ..., 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'. `assume' returns a list whose elements are the predicates added to the context or the atoms `redundant' or `inconsistent' where applicable. The predicates , ..., can only be expressions with the relational operators `=' and `>'. Predicates cannot be literal equality `=' or literal inequality `#' expressions, nor can they be predicate functions such as `integerp'. Compound predicates of the form ` and ... and ' are recognized, but not ` or ... or '. `not ' is recognized if is a relational predicate. Expressions of the form `not ( and )' and `not ( or )' are not recognized. Maxima's deduction mechanism is not very strong; there are many obvious consequences which cannot be determined by `is'. This is a known weakness. `assume' evaluates its arguments. See also `is', `facts', `forget', `context', and `declare'.
Examples:
(%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